理论篇:
什么是自动化测试?
编写代码(脚本),也就是把手工测试用例的操作步骤和校验转化成脚本实现,然后批量执行代码(脚本)实现测试的目的,就是自动化测试 --传统回答
自动化测试的分类?
接口自动化测试,web UI自动化测试,app自动化测试,性能自动化测试等
为什么要做自动化测试?
优点:
1、把人从重复的测试活动中解放出来(比如在迭代1版本实现了测试点A的自动化脚本,在迭代2,迭代3,迭代N的版本中都可以使用自动化脚本覆盖这个测试点,把人解放出来),让人多手工测试那些自动化不能覆盖的点,提升测试质量
2、主要用于回归测试(回归之前迭代做的功能),缩短回归时间,提升测试效率
怎么理解自动化测试主要用于回归测试:
- 比如在A迭代实现了设备管理员模块,A迭代的测试完成后间歇期写设备管理员模块的自动化脚本
- B迭代测试的时候,可能还需要测试设备管理员模块,这个时候可以用自动化脚本去覆盖,可以缩短测试周期,提升测试覆盖度,保证质量
- 对于web系统,平均的话每个人每天大概可以执行70个左右的测试用例,那1000个测试用例需要14人天左右才能执行完,但是如果把这1000个测试用例转化成自动化脚本,那么可能就仅仅需要10-20个小时就可以测试完成,然后加上半天左右的结果分析,就把1000个测试点给测试完成了
缺点:
1、自动化测试的脚本需要达到一定的数量才能见到测试效果,但是前期需要搭建自动化框架,所以自动化测试有前期投入大,后期收益高的特点,这个特点也说明自动化测试适合长期迭代的软件,不适合项目型的软件
2、UI自动化测试发现问题的效率没有人手工执行发现问题的效率高,毕竟UI自动化测试用例的测试点有限,所以在做测试的时候,测试点第一次测试的时候最好是手工去覆盖,后面回归的时候可以用自动化脚本覆盖
3、UI自动化脚本执行比较慢,不是特别稳定,需要比较多的等待时间
关于自动化测试的误区:
1、自动化测试会完全取代手工测试
2、自动化测试一定比手工测试厉害,更加高大上
3、自动化可以发掘更多bug--自动化更多的时候是保障系统功能没有问题
4、所有用例都适合自动化 --和硬件相关,和第三方系统相关的功能,很多时候还是要手工覆盖
5、所有的项目都适合自动化测试 --不尽然,需求不稳定,频繁变更,UI频繁变更,那UI的自动化就没必要
什么项目适合自动化测试?
1、需求稳定,不会频繁变更
自动化测试最大的挑战就是需求的变化,而且自动化脚本本身就需要修改、扩展、debug,去适应新的功能,如果投入产出比太低,那么自动化测试也就市区了其价值和意义;
折中的做法是选择相对稳定的模块和东南进行自动化测试,变动较大、需求变更频繁的部分用手工测试;
2、多平台运行,组合遍历型、大量的重复任务
测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值;
3、软件维护周期长,有生命力
自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了;
测试用例篇:
手工测试用例 PK 自动化测试用例 --自动化测试用例编写的根据是手工测试用例
(1)手工测试用例特点
- 关注某个功能点
- 较好的异常处理能力,能通过人为的逻辑判断校验当前步骤是否正确实现;
- 人工执行用例具有一定步骤跳跃性;
- 人工测试步步跟踪,能够细致定位问题;
- 主要用来发现功能缺陷;
(2)自动化测试用例特点
- 关注的是流程,多个功能点
- 用例步骤之间关联性强;
- 主要用来保证产品主体功能正确和完整,让测试人员从繁琐重复的工作中解脱出来;
- 自动化测试的每个用例的起始页面和退出页面一般是同一个页面,从哪里开始,到哪里结束(为了保证每次测试的初试环境是一样的)
- 目前自动化测试主要用于冒烟测试和回归测试(冒烟测试执行的是主体功能点的用例。回归测试执行全部或部分的测试用例
思考:
一般谈到自动化测试就会很迫切的直接上来就写脚本或者是选用自动化测试工具来录制脚本,然后更改脚本,运行脚本,这样显得自己会自动化测试或者是做了自动化测试,然,这样能带来什么样的效果?–提升了多少效率,节约了多少工时
举个栗子:
某证券公司的c/s架构的PB系统,其交易端月度版本都会上一些新功能跟优化一些原有功能,每次SIT测试的时候最后回归的时候一定要对原有功能进行回归测试,系统功能越来越多的时候,每次的回归的任务就会越来越多:
在同样的人力情况下,先前手工回归可能需要2个小时,慢慢的增长到4个小时,甚至更长,这个时候引入自动化测试用来回归测试,每次回归测试时间缩短到半个小时加上人工分析部分整个回归测试在1个小时完成,这样就明显的提高了测试效率,节省了人力。
可以量化的的数字才是检验自动化测试成功的标准。
我们再来看上面的这个栗子,不难发现,这个系统前期的功能是相对稳定的,且该功能的生命周期是比较长的,这样引入自动化测试从长期来看才是有价值的。