自动化测试指南2手工测试和自动化测试比较
2021-10-07 本文已影响0人
python测试开发
手工测试
手工测试是手动验证软件解决方案的过程。这通常涉及在正常和非正常情况下模仿最终用户的角色。人工测试还包括技术检查或探索性测试。手工测试涉及的活动有:需求分析、风险评估、识别场景、测试用例开发、测试执行、根据预期结果验证实际结果、报告偏差的缺陷、更新测试结果、以及在缺陷修复后验证功能。上述任务在手工测试中由人完成。测试自动化工具可以用来加强人工测试,例如使用缺陷管理工具来报告和跟踪缺陷。下面的部分涵盖了手工测试的一些优点和缺点。
优点
- 适用于探索性测试,因为这涉及到创造力和领域知识。
- 对短期项目有效,因为测试可以比自动测试更快,避免了建立工具和执行测试所需的时间和精力。
- 最适合单次发布的项目,因为不需要为上线后的发布创建、维护和执行回归套件。测试自动化不太可能为一次执行提供足够的投资回报(ROI return on investment)。
- 可以注意到自动化所忽略的缺陷,例如用户界面(UI)测试。
- 对用户体验(UX user experience)和可用性测试来说是好的,这些都需要人的干预。
user experience测试执行可以在任何时候开始,因为对工具和基础设施没有依赖性。
缺点。
- 人工测试通常比以自动化方式完成同样的任务要耗费时间,例如大量的数据验证测试。
- 有些人工测试执行起来很乏味:例如,通过一次又一次地填写相同的表格来测试许多用户的信用卡申请。
- 对人力资源的大量投资,因为雇用和培训测试人员需要大量的努力和投资。使用测试自动化可以避免人为错误。
- 调试复杂的缺陷可能是困难的,可能需要多次运行以收集更多的信息。
- 由于与机器相比,人工测试结果的错误概率较高,因此并不总是准确的。
自动测试
自动化测试是使用专门的软件工具来验证软件解决方案,这通常涉及自动化功能作为测试过程的一部分。测试自动化最常见的对象是。
- 测试管理和缺陷管理
- 单元和单元集成测试
- 功能测试
- 回归测试
- 非功能测试,如性能和可扩展性
优点
- 快速和可靠 - 测试自动化使测试执行快速和可靠。它消除了人工测试中可能出现的人为错误。
- 一致性和全面性 - 对于任何和每一个数据输入,测试将是一致的。测试数据集可以增加到100%的覆盖率。例如,在工资并行运行(PPR payroll parallel run)中,测试自动化工具可以为组织中的所有员工提供100%的数据覆盖。自动化工具提供精确的结果,因为测试是准确、一致、全面和快速的。
- 可重复性 - 测试自动化通过多次执行相同的测试,以最小的成本实现可重复使用。这对于将测试范围扩展到多个平台、环境、操作系统、浏览器和移动设备是非常有用的。测试自动化有助于扩展不同平台的回归测试,例如多浏览器,并增加从开发到生产的测试覆盖率。自动化测试可以用有限的资源和较少的开销在不同的数据、平台和环境上重复相同的测试。
- 可编程和可重复使用 - 这减少了对人工互动的依赖,有助于自动调度。
- 减少测试的时间 - 多个测试可以同时执行,这有助于快速完成测试,减少测试时间框架。它还减少了长期成本,并通过减少测试的时间和使应用程序更快地上线来支持应用程序的频繁发布。
- 提高测试的生产力 - 测试自动化减少了人工测试的工作量。它可以实现24/7的测试执行,更重要的是,当代码提交时,它可以被整合为自动运行。测试自动化有助于确保更好地利用资源,测试的一致性和可重复性。
- 提供详细的测试日志 - 测试日志和执行报告在测试中很重要。测试自动化工具可以向不同地点和时区的利益相关者发送详细的报告,包括通过和失败的分数以及失败的原因。
- 高度推荐用于图形用户界面(GUI)和性能测试 - 没有测试自动化,大量的性能测试几乎不可能。如果没有测试自动化,在多个平台上进行GUI测试是很耗时的。测试自动化高度用于非GUI、API、服务水平和API测试,是测试的 "金字塔 "和 "冰淇淋锥 "模式的一个组成部分。
图片.png有保证的测试覆盖率 - 在自动化测试中,测试覆盖率和质量的准确测量是有保证的,这取决于用于测试的自动化测试套件的质量。
图片.png测试自动化支持所有的测试类型和测试阶段,包括功能测试,非功能测试和测试管理 - 测试自动化在未来为那些难以手动执行和需要更多时间的测试提供了显著的回报。
缺点。
- 对负向和探索性测试的覆盖面较小 - 探索性测试是一种软件测试的方法,通常被描述为同时进行学习、测试设计和执行。这不那么正式,也不基于结构化的测试案例和步骤。当由具有正式测试意识的功能主题专家(SME subject matter expert)进行探索性测试时,是非常有效的。测试工具在执行探索性测试方面有局限性。
- 静态测试和审查 - 静态测试和代码审查通常是在不执行代码的情况下进行。测试工具在执行详细的静态测试方面通常是有限的。然而,有许多白盒工具可以有效地用于自动静态审查,例如,SonarQube用于持续检查代码质量,以执行自动审查与代码的静态分析。
- 工具会产生高成本 - 自动化工具会产生若干成本,包括基础设施、维护、开发和人力资源,即使自动化工具是开放源码或免费软件。自动化套件需要持续的维护。工具的升级或补丁也经常产生高成本。
- 对测试结果的分析是时间和成本密集型的 - 测试自动化套件可以开发出手动验证结果;然而,任何失败都需要详细的分析来定位根本原因,而且很耗时。
- 需要健全的编码技能。
- 维护成本高 - 许多功能自动化工具依赖于GUI,如果对GUI有任何改变,维护成本很高。
- 不是短期产品和项目的有效方法 - 自动化一般不适合短期软件产品的开发,投资回报率会很低。
- 应用程序需要足够稳定以执行自动化脚本 - 大多数自动化测试一般需要稳定的应用程序。功能自动化的准备和执行在很大程度上受制于稳定的应用程序。
- 软件测试工具经常引入他们自己的缺陷