自动化测试技术对测试团队而言是很普遍的测试技术,也是提升测试效率最直接最有效的手段。从质量保障的角度而言,产品快速设计出产品,开发快速地完成编码,测试快速地完成测试并达到上线的标准。那么这个过程中其实并不在乎测试的方式,在乎的是测试的效率。自动化测试高效的落地以及应用,能够有效地提升测试交付的研发效率。
但是在实际中,自动化落地的过程中依然会存在很多的问题。比如编写完成但是并没有实际的应用,而仅仅是完成一种任务,又或者是执行后成功率很低(实际执行失败的并不是产品功能问题而是测试代码问题),又或者存在执行耗时长。其中有一位同学谈到二百多接口自动化测试用例执行耗时达到五十多分钟。总之落地过程中会存在很多问题。其实存在问题是好事,因为有问题必然会存在问题的解决方案。而工作或者是生活,就是在不断地解决问题中进行的。
我们还是需要持续地思考,通过什么样的手段与策略,来让自动化测试持续高效地落地以及应用起来,通过自动化测试技术的手段来真正意义上达到可持续的应用和产生它的价值。
编写与设计框架的思想有很多,这里不再做详细的阐述。不管使用哪些设计思想或者是哪种框架,都需要满足的第一个要素是编写的测试用例能够在多个不同的环境中执行,至少需要满足如测试环境、预发布环境、生产环境(针对如何分离环境部分后续写文章详细地阐述这部分)。只所以特别强调需要满足这个要素是因为编写的自动化测试不仅仅需要在测试环境执行,也需要在生产环境中执行。适用的场景特别多,如测试已经完成,开发合并完代码需要做最后一次没问题后进行上线,这个时候需要执行自动化测试,代码部署到预发布环境和生产环境也是需要这个操作。
第二部分在编写自动化测试的过程中,除了基本的规划(方案规划、人力投入、编写时间、阶段性成果展示、CI集成等),有多少建议尽快集成到CI中尽快地应用起来。比如按照最初的规划需要一个季度完成,总的测试用例个数是400,但是已经编写了20个,那么这20个尽快集成到CI中并尽快地应用起来。也就是说让已经完成的快速产生价值并应用起来。这样操作能够带来很多的好处,第一个好处是已经实现的部分模块在后续测试中可以人为的不需要投入,让机器代替人去执行来验证它的结果,第二个好处是逐步编写的投入到测试质量交付的环节,来验证这个过程中是否存在其他的问题,这部分的思想可以参考Docker下的持续交付。
当然除了环境与快速产生价值外,还需要考虑的是在自动化测试中测试执行效率的问题。测试执行效率顾名思义就是执行自动化测试总的执行耗时。颗粒度再小一点,总的执行耗时其实是一个个测试用例执行耗时的之和。那么这个过程中哪些因素会影响执行耗时呢?以接口自动化测试为案例,影响耗时的第一个要素是数据驱动中文件形式的选择,建议使用YAML文件,特别不建议使用EXCEL与数据库作为数据存储的模式,第二个影响的要素是重复调用了接口,导致在一个测试用例中一个接口被调用执行多次(每次执行都需要N秒耗时),最后导致执行耗时增加。如果测试用例确实涉及很多,那么可以使用分布式执行的模式来进行执行。在Pytest测试框架中提供了分布式执行的插件。
自动化测试结果的权威性,是需要特别考虑的一部分。测试的目的是保障质量,自动化测试也是如此。在自动化测试应用的过程中,特别需要注意的是产品某部分存在缺陷,但是自动化测试用例执行结果是正常的,那么这就会存在严重的测试缺陷了。所以特别需要注意断言的验证。比如在接口自动化测试中至少需要做到协议状态码、业务状态码、响应数据三者都是正常的情况下结果才是通过。
持续交付不仅仅是一种研发效率的表现,也是考验一个组织在面临各种问题的情况下是否能够快速建立有效的流程与机制。针对测试而言自动化测试的落地与应用仅仅是测试质量体系中一个环节而已,核心的点是事物需要不断的完善和构建,构建质量体系也是如此,建立有效并且团队认可的机制,并同步落实到各个环节,让自动化测试能够持续的应用起来,并逐步完善体系。