可以开门见山地说:Automation Test ≠ Automation Tools ≠ Continuous Test根据我个人的项目经验,试着画了下面这个图来表达这三者的关系。在提及自动化测试的时候,很多人会把工具的使用等同于自动化测试。自动化测试应该是一个策略性的系统工程,不只有自动化工具。像我们的产品一样,不仅要有技术语言,还要有产品架构设计。自动化测试除了工具框架,还需要考虑:项目的技术栈,产品架构,开发流程,基础设施,可靠的测试数据,稳定干净的测试环境,如何呈现测试报告,如何工程化测试配置,测试套件等等。有了自动化测试还不够,我们的目的是在持续交付的过程中实现快速频繁的质量反馈,我们需要持续不断地测试(Continous Testing)。实现持续测试,不仅需要团队从文化上去支持,真正做到全员对测试和质量负责,创建Devops文化氛围,打通开发-测试-运维的壁垒;还需团队从技术上去储备知识,比如云平台、虚拟化技术,容器及相应的编排技术,甚至网络知识等等。维基百科对自动化的解释:
In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes.
Continuous testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate.
从这个定义可以看出,持续测试的目的即在软件交付的流水线中执行自动化测试以提供对产品质量的反馈。想强调定义里的几个关键字:automated tests, delivery pipeline, immediate feedback, business risks.
选择合适的时候做自动化, 避免不必要的浪费。在项目做第一个规范安全流程的产品时,MVP1(Minimum Viable Product) 一完成,该产品的接口自动化测试和端到端自动化测试便实现了,并集成到了产品CI/ CD 流水线上。后来由于客户方硬件集成的问题,该产品基于MVP1进行了一次演进,从产品直接融入并规范安全流程换成了‘曲线救国’地强化安全流程,页面和接口设计也有较大变动。由于产品流程设计上的变动导致之前的接口测试和端到端的自动化测试全部都失效,需要重新编写和维护。这个经历挺真实的,自动化是有好处,但是也是有代价的:在MVP1,特别是POC(Proof Of Concept)阶段的产品建议不要急于做自动化,项目的初期更别尝试做UI层面的自动化。当然对工具的spike是可以的,把框架搭建好,等待特性稳定了,就可以直接加测试用例了。 我们选择自动化一定是要考虑项目是否存在客观的现实需求,在动手实施具体的自动化测试之前,一定要对自动化测试的投入产出比做一次客观理性地评估。如上图所示,自动化测试的成本相对单次(或者少量的)手动测试来说是较高的,为了少量的测试活动而做自动化,投入产出比是很低的。需要QA根据项目进度,产品演进程度,测试策略,回归频率等等做一个综合评估,找到出图中交集的点,即何时何种情况团队和产品应该必须引入自动化测试了。因为自动化前期需要投入产品分析,工具框架选型,用例设计,数据环境准备等等,后期还需要持续不断地投入人力进行及时的维护和更新以保证自动化测试的严密性和足够的覆盖率。