目录
软件测试自动化的概念
测试自动化的必要性
自动化测试的优点
自动化测试的局限性
自动化测试的适用情况
自动化测试的认识误区
使用自动测试应注意的问题
什么是软件测试自动化呢? 相对手工测试而言,指通过开发的软件分析和测试工具、编写的测试脚本等,来实现软件分析和测试过程的自动执行。 是把原本由人来执行的 测试行为转化为机器自动执行的一种软件测试方式。
1.当软件测试工作量很大时,靠手工很难完成。
例如,静态测试中要对某个共有几百万行代码的软件进行代码检查,看是否编码规则;或者动态测试中要对某个软件执行几万个测试用例,这样的测试工作如果完全要依靠手工操作,无疑是很难完成的。
2.测试中的许多操作是简单重复劳动,并要求准确细致,手工完成容易出错,并且让人产生厌倦情绪,影响工作质量和效率。
例如,重复执行某一测试过程,输入不同的数据,并要求准确细致记录测试过程和结果,这样的工作由人来完成会有一定的出错率,并容易让人产生厌倦情绪,既影响效率,又会进一步增加出错的概率;而如果让计算机来自动完成,则出错率会降低,效率也会高很多。
3.有些测试工作手工难以完成,必须要借助自动化手段,才能实现,并可以降低成本。
例如,要对某软件做大规模的并发测试,需要几千个客户端同时打开使用,这样的测试靠手工来完成很难做到,成本也会非常高。如果采用自动化工具,则只需产生出几千个模拟的客户端即可,便于操作,降低成本。
1.可以大幅度提高测试执行的速度,提高效率,节省时间。
例如对某软件,手工执行 1 个测试用例,记录测试过程和结果需要 1 分钟,而自动化执行 1 个测试用例,只要 1 毫秒。
2.可以代替手工操作,节约人力资源,降低成本。
计算机等设备的成本在不断下降,而人力资源成本却在持续上升,自动化测试通过用计算机自动执行来代替手工操作,可以节约大量人力资源,从而降低测试成本。 例如对某软件,1个人1天可以执行300个测试用例,综合成本约600元,而1台计算机 1 天可以执行 3 万个测试用例,综合成本不到 20 元。
3.可以提高测试的准确度和精确度。
在不断重复的测试过程中,输入数据、记录过程和结果,人是很容易出错的。 另外,人的反应时间大约在 0.1 秒左右,这样的话在测试工作中,人的精确度也是有限的,例如测试软件的响应时间,靠人来测试只能精确到十分之秒左右,而自动化测试可以精确到毫秒,甚至纳秒。
4.能更好地利用时间资源和计算机等资源。
自动化测试的执行是不受上下班时间限制的,甚至于可以 24 小时不间断,这样可以充分利用时间资源,缩短测试工作所需要的总时间。 自动化测试执行时间的灵活性,使得所需的计算机资源等也可以灵活配置,例如白天计算机等设备用于软件开发,而下班后则可用于执行测试任务,这样也能更充分的利用计算机等资源。
5.提升测试能力,完成手工难以完成的测试任务。
手工测试是有很大局限性的,很多性能测试、实时系统测试、安全测试等难以通过手工来完成,此时必须依靠自动化测试手段,来执行相关测试。 例如负载测试时,需要不断调整控制负载的大小,这靠手工操作很难完成的 。
1.自动化测试并不比手工测试发现的缺陷更多
自动化测试主要是把测试的执行过程交给了计算机来自动完成,而能发现多少缺陷主要是测试设计决定的。 简单地说,在相同的测试设计、执行相同的测试数据的情况下,自动化执行和手工执行测试发现的缺陷是一样多的。 自动化测试只是提高了测试执行的效率,而不能提高测试的有效性。
2.自动化测试脚本或程序自身也需要进行正确性检查和验证。
自动化测试脚本或程序也是由人开发出来的,也存在出错的可能性,因而也需要对其进行正确性检查和验证。
3.自动化测试对测试设计的依赖性很大
自动化测试要能够顺利执行并达到测试目的,它对测试设计的依赖性很大,要事先设计测试规程、测试数据、搭建测试环境等; 测试设计的质量更为关键,自动化测试工具本身只是起到辅助作用。
4.自动化测试比手工测试更加“脆弱”,并需要进行维护。
自动化测试有非常具体的执行条件,执行过程也是固定的,当被测试程序有修改或者测试环境条件有变化时,可能就无法执行,非常“脆弱”。 为适应程序的修改、扩充,或者是环境条件的变化,自动化测试脚本和代码需要不断进行维护。
5.自动化测试也需要相应的成本投入
实现自动化测试需要进行测试人员培训、测试工具购买、测试环境部署、测试脚本或程序开发等,也会有相应的成本投入,尤其是初期,比手工测试的开销更大。
自动化测试主要适用于以下情况:
重复执行,输入大量不同数据的测试过程;
回归测试;
用手工测试完成难度较大的测试,如性能测试、负载测试、强度测试等;
自动生成部分测试用例;
测试过程及测试结果的自动记录;
测试结果与预期结果的自动比对;
不匹配测试结果的汇总、统计分析和缺陷跟踪;
测试项目管理,如工作进展状况统计;
测试报告和报表的生成等。
1、自动化测试可以完全取代手工测试
测试分析和设计的过程很难完全依靠计算机来自动完成,而且测试人员的经验和对错误的猜测能力,也是软件工具所难以替代的。 对软件的界面感受、用户体验等的测试是无法自动化完成的,人的审美观和心理体验是工具所不能模拟的。 执行结果的正确性检查难以完全实现自动化,人对是非的判断和逻辑推理能力是目前工具所不具备的。
2、测试用例可完全由测试工具自动生成
可以依靠测试工具自动生成一部分测试用例,但还需要全面分析,认真设计,有针对性的手工生成一些测试用例,以提高测试的完备性和有效性。
3、自动化测试可适用于任何测试场景
有些测试场景并不适合采用自动化测试 如果测试过程执行次数很少,那么采用自动化测试的话就不划算,因为自动化测试环境搭建、测试开发脚本成本很高。 如果软件运行很不稳定,那么自动化测试过程可能很难顺利完成。 如果是需要通过人的主观感受来进行评判的测试同样不适合采用自动化测试,因为无法给出有效的结论。
4、测试自动化后效率立刻提高;
一开始实行自动化测试的时候,需要学习测试工具的使用,编写测试脚本等,效率不但不会马上提升,反而会要花费很多的时间。 只有在测试过程反复执行的时候,工作效率才会提高,自动化测试的效果才会显现。
不要对自动化测试产生不现实的期望,测试工具不能解决所有的问题;
不要盲目建立大型自动化测试,尤其是缺乏自动化测试实践经验,软件变化大的情况更是如此;
建立自动化测试时要考虑它的可维护性和可复用性,如果用一次或者少数几次就不能用了,则会得不偿失;
要分析对测试任务进行自动化执行的可行性,并合理选择测试工具。