软件测试基础之-自动化认知
标签(空格分隔): 自动化
自动化定义:
自动化测试,是由人对软件的行为转化为机器执行测试行为的一种实践,对于常见的GUI自动化测试来说讲,就是有自动化测试工具模拟之前需要人工软件界面上的各种操作;
自动化本质:
自动化的本质是先写一段代码,然后测试另一段代码,所以实现自动化测试用例本身属于开发工作,需要投入大量的时间和精力,并且已经开发完的成的项目还要随着迭代不断的更新自己的代码,你需要付出维护的成本;
*:
当你发现自动化的维护成本高于其节省的测试成本的时间的时候,自动化的测试就失去了价值和意义,你也需要在是否使用自动化的基础上衡量取舍了;
为什么需要自动化测试
自动化的优势:
1.自动化可以代替手工大量的重复的工作,测试可以把大量的时间放在用例设计和新功能上边
2.自动化可以大量提升回归测试效率,特别适合敏捷开发
3.自动化可以大量的利用无人值守的时间去执行用例,特别适合非工作是爱你执行测试,工作时间分析测试用例失败的工作模式
4.自动化可以实现某种测试无法完成或者付出巨大的代价测试类型,比如关键业务的测试7*24持续运行系统的稳定性和高并发场景的压力测试;
5.自动化可以保证每次执行的操作和验证的一致性和可重复性,避免认为的遗漏和疏忽;
自动化的劣势和坑:
1.自动化不能代替手工,他只能代替手工测试中执行频率高,机械化重复的步骤,千万不要奢望所有的测试都要自动化,否则会得不偿失;
2.自动比起手工测试脆弱,无法对测试系统的变化做出识别,业界流传:开发手一抖,自动化测试忙一宿,这也从侧面反应了,自动化测试一直居高不下的事实,原因自动化不具备智能识别,只能按部就班按的测试,没有任何的处理能力;
3.自动化测试的开发工作量远远大于单次的手工测试,所以只有开发完成的手工测试大于5次,才能收回自动化测试的成本;
4.手工测试发现的bug通常回比自动化发现的错误多,且自动化只能发现回归测试的缺陷;
5.测试效率很大程度上依赖自动化用例设计以及实现质量,不稳定的自动化比没有自动化更糟糕;
什么样的项目适合自动化:
1.需求稳定不会频繁变更
2.研发和维护周期长,需要频繁的回归测试;
3.需要多个平台重复运行相同的测试场景;
4.某些测试项目无法通过手工测试实现,或者手工的成本高;
5.被测试软件开发较为规范,能够保证系统的稳定可测试性;
6.测试具备编码能力