多种软件测试方法
Будущее время во французском языке. Futur proche. Елена Шипилова.
目录:
在软件上市之前,程序员花费数小时试图消除每个小错误。在产品满足所有利益相关者之前,它将不可用于商业用途。
尽管谷歌拥有耐心的投资者和忠诚用户,但像谷歌这样的大型软件公司虽然存在低优先级的错误,但仍然取得了成功。然而,规模较小的公司和初创公司并没有这种奢侈品。客户希望产品能够在销售页面或文档中执行他们所声称的操作。有这么多的选择,如果产品浪费他们的时间和金钱,他们不会三思而后行。因此,软件在发布之前要经过严格的测试,以便:
- 突出原始概念和最终输出之间的差异
- 验证软件是否按设计师的计划方式运行
- 验证最终产品是否符合客户要求
- 评估功能和质量
测试遵循严格的蓝图,以优化员工的技能,时间和金钱,同时为利益相关者提供必要的信息,以推动产品的发展。目标是通过强有力的质量保证计划促进良好的最终用户体验。由于风险如此之高,QA经理是技术行业的顶级收入者。测试通常遵循以下步骤:
- 需求分析,其中管理者概述了制定合适的测试策略的计划。
- 测试开始,结果经过分析。
- 任何缺陷都会得到纠正,并且软件会通过回归测试 - 一个系统来检查程序在修改后是否仍然有效。
- 然后,测试结束报告详细说明了整个过程和结果。
个人可以通过BCS,英国特许信息技术研究所,ISTQB®(国际软件测试资格委员会)和ASQ(以前的美国质量协会)等组织成为认证软件测试人员。
软件测试方法
黑盒子和白盒测试是判断产品行为和性能的两种基本方法,但也有其他方法。
- 黑盒测试: 这种方法也称为功能或基于规范的测试,侧重于输出。测试人员不关心内部机制。他们只检查软件是否做了它应该做的事情。编码知识不是必需的,测试人员在用户界面级别工作。
- 白盒测试: 该方法使用编码技术作为测试过程的一部分。当产品发生故障时,测试人员会根据需要深入到代码中以找到原因。软件开发人员自己这样做,因为他们确定产品应该如何工作。基于结构和玻璃盒测试是此方法的其他名称。
- 静态测试: 测试人员检查软件的代码和文档,但不执行该程序。在验证过程中,静态测试在产品开发的早期开始。
- 动态测试: 使用各种输入执行软件,测试人员使用此方法将输出与预期行为进行比较。
- 图形用户界面测试: 这将测试GUI特性,如文本格式,文本框,按钮,列表,布局,颜色,字体,字体大小等。 GUI测试非常耗时,第三方公司经常承担这项任务而不是开发人员。
测试级别
不同级别的测试用于识别软件开发生命周期的每个阶段中的弱点和重叠区域。
- 单元测试: 开发人员测试代码的最基本部分,如类,接口和函数/过程。他们知道他们的代码应该如何响应,并可以根据输出进行调整。
- 组件测试: 其他名称是模块或程序测试。它与单元测试类似,但包含更高级别的集成。测试软件模块的缺陷,以验证其各自的功能。
- 集成测试: 这可以识别模块集成时的错误。不同的集成测试包括自下而上,自顶向下和功能增量。
- 系统测试: 使用此方法可以在不同环境中对项目的组件进行整体测试。它属于黑盒方法,是该过程中的最终测试之一。它确定系统是否能够满足业务和用户需求。
- Alpha测试: 内部员工在模拟或实际环境中在开发人员的站点上测试软件。之后,开发人员纠正错误和其他问题。
- Beta测试: 也称为现场测试,客户在实际条件下在自己的站点上测试产品。客户可以为一组最终用户提供通过预发布版或测试版测试软件的机会。然后将关于可能改进的反馈发送给开发人员。
- 验收测试: 此外,在黑盒测试的范围内,客户端测试软件以查明开发人员是否已根据所需规范创建程序。
测试类型
不同类型的软件测试旨在专注于特定目标。
- 安装测试: 软件测试工程师和配置管理器进行此测试以确保最终用户可以安装和运行该程序。它涵盖了安装文件,安装位置和管理权限等区域。
- 开发测试: 这实现了一系列同步策略来检测和防止缺陷。它包括静态代码分析,同行代码审查,可追溯性和指标分析。目的是降低风险并节省成本。
- 可用性测试: 通过此测试,用户体验受到关注。它衡量GUI的设计和易用性。该测试检查功能的准确性和效率以及测试对象的情绪反应。
- 理智测试: 这表明该软件是否值得继续进行进一步测试的时间和成本。如果存在太多缺陷,则不会进行更激进的测试。
- 烟雾测试: 烟雾测试揭示了严重到足以防止释放的基本故障。当在新构建上执行此操作时,它称为构建验证测试。
- 回归测试: 当系统进行修改时,回归测试会监控意外行为。它指出了对模块或组件的不利影响。
- 破坏性测试: 测试人员输入异常条目并辨别软件管理意外输入的能力。这向开发人员展示了程序在错误管理方面的稳健性。
- 恢复测试: 当硬件或其他功能失败时,此测试显示软件可以恢复并继续运行的程度。
- 自动化测试: 这执行难以手动实现的功能。它使用特定的软件来运行测试并提供有关实际结果与预期结果的数据。
- 兼容性测试: 软件必须在不同的计算环境中运行,因此这将检查与不同系统的兼容性。例如,该软件是否适用于各种操作系统和Web浏览器?
- 性能测试: 这是一项深入测试,可检查不同场景下的软件性能。收集有关响应性,稳定性,资源分配和速度的信息。此外,诸如体积,容量和尖峰测试等子测试在此过程中起作用。
- 安全测试: 这可以衡量软件保护用户安全的能力。这意味着授权功能,身份验证,机密性,完整性,可用性和不可否认性。
- 辅助功能测试: 这与可用性测试不同。这决定了不同能力 - 学习和身体残疾的用户可以使用该软件的程度。
- 国际化和本地化测试: 结果显示该软件如何适应不同的语言和区域需求。这包括添加特定位置的组件和翻译文本。