目录
6.1 自动化测试概述
6.1.1 什么是自动化测试
6.1.2 自动化测试的基本流程
6.1.3 自动化测试实施策略
6.1.4 自动化测试的优势和劣势
测试中的许多操作都是重复性的、非智力性的和非创造性的,但要求工作准确细致,此时计算机最适合代替人工去完成这样的工作。
软件自动化测试是为代替手工测试而产生的,它将自动化工具和技术应用于软件测试,旨在减少测试工作的手工重复性,以更快、更少的工作量构建质量更好的软件。
6.1 自动化测试概述
6.1.1 什么是自动化测试
自动化测试,是指把以人为驱动的测试行为转化为机器执行的过程。
通常情况下,引入自动化测试需要满足以下条件:
- (1)项目需求变动不频繁
- (2)项目周期足够长
- (3)自动化测试脚本可重复使用
- 另外,在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。比如性能测试、配置测试、大数据量输入测试等。
6.1.2 自动化测试的基本流程
1. 分析测试需求:测试需求其实就是测试目标,也可以看作是自动化测试的功能点。
2. 制订测试计划:明确测试对象、测试目的、测试的项目内容、测试的方法。此外,要合理分配好测试人员以及测试所需要的硬件、数据等资源。
3. 设计测试用例:要考虑到软件的真实使用环境,例如对于性能测试、安全测试,需要设计场景模拟真实环境以确保测试真实有效。
4. 搭建测试环境:自动化测试的脚本编写需要录制页面控件、添加对象。测试环境的搭建,包括被测系统的部署、测试硬件的调用、测试工具的安装和设置、网络环境的布置等。
5. 编写并执行测试脚本:公共测试框架确立后,可进入脚本编写的阶段,根据自动化测试计划和测试用例编写自动化测试脚本。
6. 分析测试结果、记录测试问题:如果软件缺陷真实存在,则要记录问题并提交给开发人员修复,如果不是系统缺陷,就检查自动化测试脚本或者测试环境。
7. 跟踪测试Bug:测试发现的Bug要记录到缺陷管理工具中去,以便定期跟踪处理。
6.1.3 自动化测试实施策略
金字塔测试策略要求在3个不同级别进行自动化测试:
最底部的单元测试占据了自动化测试的最大百分比,其次是接口测试和UI测试。将自动化测试重点工作放在单元测试和接口测试阶段有助于加快项目整体开发进度,减少后期开发和测试的成本。
(1)单元测试:单元测试要求在开发中对每个功能模块(函数、类方法)进行测试,如检测其中某一项功能是否按预期要求正常运行。
(2)接口测试:接口测试要求对数据传输、数据库性能等进行测试,从而保证数据传输以及处理的完整性。
(3)UI测试UI测试以用户体验为主,软件的所有功能都是通过这一层展示给用户的,因此UI测试的工作也很重要。
6.1.4 自动化测试的优势和劣势
自动化测试只是众多测试中的一种,并不比人工测试更高级更先进。
和人工测试相比,自动化测试有一定的优势和劣势:
1. 优势
(1)自动化测试具有一致性和重复性的特点,而且测试更客观,提高了软件测试的准确度、精确度和可信任度。
(2)自动化测试可以将任务自动化,能够解放人力去做更重要的工作。
(3)自动化测试只需要部署好相应的场景,如高度复杂使用场景、海量数据交互、动态响应请求等,测试就可以在无人值守的状态下自动进行,并对测试结果进行分析反馈;手工测试很难实现复杂的测试。
(4)自动化测试可以模拟复杂的测试场景完成人工无法完成的测试,如负载测试、压力测试等。
(5)软件版本更新迭代后需要进行回归测试,自动化测试有助于创建持续集成环境,使用新构建的测试环境快速进行自动化测试。
2. 劣势
(1)相对手工测试,自动化测试对测试团队的技术有更高的要求。
(2)自动化测试无法完全替代人工测试找到Bug,也不能实现100%覆盖。
(3)自动化测试脚本的开发需要花费较大的时间成本,错误的测试用例会导致资源的浪费和时间投入。
(4)产品的快速迭代。自动化测试脚本将不断迭代,时间成本很高。
(5)自动化测试能提高测试效率,却不能保证测试的有效性。即使设计的测试用例覆盖率比较高,也不能保证被测试的软件质量会更优。