这篇文章主要谈下自动化测试的可靠性,我们主要讨论如下三点:
什么是可靠性?
它对于我们自动化测试有何意义?
我们要怎么才能让自动化的脚本足够可靠?
做自动化测试,最害怕的一点就是,当你写了很多的流程,覆盖了很多的手工用例后,你运行自动化脚本,运行完后测试结果上都是一片的pass,但是你心理总觉得不太放心。那么这个不太放心或者放心的程度其实就是你脚本的可靠性。
可靠性简单来说就是自动化测试脚本执行之后,你是否能通过测试结果判定被覆盖功能已测试通过。(自己编的!)
当你录制或者编写了一段自动化的测试脚本,用来测试一条重要的流程,当自动化脚本运行后,给了一个测试结果 pass ,如果你看到这样一个结果,你可以信心满满放心的说这个流程是测试通过的。
那么你这个测试脚本是可靠的,可信任的,不用重复的再用人工去验证一次。
如果脚本跑完,你自己都不放心,还要手工去确认一下,那这个自动化脚本就是搞空事!
那我们要如何增强脚本的可靠性呢?以本人的经验和一些通用手段来看,主要有以下几种方式:
- 重要的地方加断言,自动化测试脚本是对手工测试的模拟,那么手工测试的时候你需要验证的地方就去加断言;当然考虑到脚本的维护成本,需要对你手工测试用眼睛去验证的内容进行提炼;
- 截图,关键地方或者逻辑复杂度很高的地方加断言成本太高,可以考虑截图,运行完脚本后去观察图片中记录的内容是否正确;当然不要觉得截图语句好写,动不动就截图;
- 日志,通过在脚本运行过程中记录相关的日志,比如操作的过程、操作的数据、计算过程等等;通过对日志的观察可以判断流程是否按照预期执行;
- 提取数据,将测试过程中使用的数据、实际执行结果等等单独生成一张实际结果数据表;
- 编写自动化测试用例,很多团队在做自动化测试的时候都在确定一个大致的内容之后就开始写自动化脚本,并没有对整个测试内容进行提炼,在写脚本之前并没有考虑好自动化测试的策略,以及对自动化结果判断的思考,因此写出来的脚本就像没有用例的测试执行一样,心理没底。
其实前面四点说的都是一样的内容,都是通过对预期结果与实际结果的设计与判断来增强自动化测试脚本的可靠性。
其中截图、日志、数据表都需要人工筛查,这并不能体现自动化测试的真正意义,但是在团队自动化经验不足的时候,通过这种筛查来增强对自动化测试的信心依然是很有必要的;在后期通过不断的经验积累和总结,就可以逐步减少对人工筛查的依赖。
最后一点通过编写自动化测试用例来增强自动化测试脚本的可靠性,这一点更接近于测试的核心:
做自动化测试,实际上是对手工测试的提炼,是对测试本质的另一种实现方式;
自动化测试也是测试的一种,不应该也不能脱离测试的思维,否则只是空洞的脚本,对团队质量没有任何的意义。
如果上面几点都做得很好,但是仍然对自动化脚本都没有信心,那只能有一个原因了: