传统的软件架构设计讲究分层模型,而自动化测试也有一套自己的分层模型。这个模型是麦克科恩 (Mike Cohn) 在他的著作《Succeeding with Agile》一书中提出的测试金字塔。金字塔模型如下:
这个模型自底向上的测试顺序符合一个软件系统的开发顺序:最开始时开发人员写好每一个可测试的最小单位之后,就可以开展单元测试了。接下来,当多个完整的模块编写完成之后,就进入集成测试阶段,这其中主要包括不同服务之间的接口测试。当前后端接口联调完成后,就可以开展最后的UI测试了。这三层都可以用自动化的方式实现。这三者的详细比较如下:
1.UI自动化测试
UI自动化测试,主要关注模拟用户与应用程序的交互。这种测试模拟了用户在应用程序中的实际操作,包括点击按钮、输入文本、滚动页面等。UI自动化测试的目标是验证应用程序的界面元素是否按照预期工作,以及用户是否能够顺畅地完成特定的任务。
优点:
-
能够最直观地验证用户交互流程。
缺点:
-
UI自动化测试的稳定性较低,这是UI自动化的一大难点。即使采用了很多技术手段,UI自动化测试也可能经常出现随机性的失败。
-
运行速度是三种自动化测试中最慢的一种。这是因为要模拟用户的交互操作,而且为了定位到元素必须给操作增加必要的等待时间。
-
受到界面变动的影响很大。如果软件的界面被频繁改动,UI自动化脚本也必须经常调整,在这种情况下脚本的维护成本是非常高的。
2. 接口自动化测试
接口自动化测试专注于测试系统之间的接口。它不关心用户界面,而是直接与后端服务进行交互,验证数据的交换、处理逻辑以及系统间的通信是否正确。
优点:
-
用例编写和调试的效率高:接口自动化的用例编写有简单且规范化的流程,通常只需要关注接口的请求入参(以及前置操作)和响应数据(以及后置断言)即可。如果开发团队能提供详细的接口文档,那接口测试用例的编写将变得比较容易。
-
落地成本低:对于一个小型测试团队而言,无需自己开发或者维护一个接口自动化测试框架。现在市面上很多接口管理工具如Postman, Apifox和YAPI等都有完善的接口自动化测试功能支持。如果开发团队已经采用了某一个接口管理工具,测试团队完全可以用同一套工具,写用例时开发已有的接口集合中直接一键导入需要的接口,极大方便了用例的编写。
-
稳定性高:接口测试天然就是稳定的,不受前端界面变动的影响。
-
维护成本低:虽然API改动意味着接口用例也要改动,但是很多成熟的接口自动化工具已经支持自动同步接口文档,自动更新接口规范。
-
执行速度快:对于复杂的流程,用UI自动化测试可能需要数分钟,接口自动化测试可能几秒钟就完成了。
-
接口测试天然支持并发,比UI自动化更适用于并发场景下的测试。
缺点:
-
脱离了前端,不能直接验证用户界面的表现。
-
如果开发团队无法提供详细的接口文档,测试人员就需要自己抓包解析接口请求,那么编写测试用例就比较麻烦了。而如果开发的接口设计很不合理,比如请求参数中夹杂了大量的冗余参数,那么编写接口用例的难度将成倍增加。
3. 单元测试
单元测试是自动化测试中粒度最细的一种,它针对程序中最小的可测试部分(通常是函数或方法)进行测试。单元测试的目的是验证单个单元的功能是否按照预期执行,不依赖于程序的其他部分。
优点:
-
最大的优点就是可以快速定位代码中的错误。众所周知,缺陷被发现的时间越早,修复的成本就越低。单元测试就是从根源上预防缺陷、提升整体研发效率的重要手段。
-
单元测试可以用来推动TDD(测试驱动开发),即促使开发人员在开发阶段就重视起代码的质量,有助于进一步提高开发人员“质量内建”的意识。
缺点:
-
开发人员需要编写大量的测试用例。在这三者中,单元测试需要编写的测试用例数是最庞大的,而且最好是由开发自己而非测试人员去编写。这对于本就很忙碌的开发人员来说无疑增加了更大压力。
-
只关注最小单位的可用性,每个单元之间是相互隔离的,无法直接反映单元组装起来之后是否可以正常工作。
比较了这么多,那自动化测试究竟该如何选型呢?这三种自动化分别在什么场景下适用?
1.UI自动化:如果有很多业务逻辑是在前端实现的,那这部分只能做UI自动化;对于一些端到端的、用户直接频繁交互的业务场景,更适合做UI自动化。
2.接口自动化:上面也分析到了,接口自动化的优点最多,性价比最高,因此被大量互联网企业广泛采用并成为自动化测试的重点。在现代的微服务体系架构下,接口自动化进一步显著突出了其优势和价值。
3.单元测试:虽然成本高,但能够从源头上提高代码质量,适用于一些最核心的且稳定的功能,比如公共的基础服务模块,或者对于质量要求最严格的场景,比如核心支付场景。
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。