测试基础之:自动化测试
一、定义
自动化测试,是指把以人为驱动的测试行为转化为机器执行的一种过程。一般更适用于需求稳定、研发和维护周期长、需要频繁执行回归测试或手工测试无法实现或实现成本过高的项目。
特别说明:
1. 一般有效执行 >= 5 次,才能收回自动化测试成本;
2. 一些用例的自动化,必须要求开发人员在产品中预留可测试性接口,否则后续的自动化很难开展。
二、常用方法
1、单元测试的自动化技术
自动化执行测试用例;
自动化生成用例框架代码;
自动化生成部分测试输入数据;
自动化生成桩代码;
自动化静态分析被测代码,常用 Sonar、Coverity 等工具;
测试覆盖率的自动统计与分析
2、集成测试的自动化技术
与单元测试的自动化技术不同的是,被测函数内部调用的函数必须真实,不允许使用桩代码。对测试框架要求极高,追求系统复杂性的解耦,会尽量避免“大单体”应用,采用 Web Service 或 RPC 调用的方式来协作完成功能的实现。尤其是互联网企业,通常不会去做代码级集成测试。
3、Web Service 测试的自动化技术
主要是 SOAP API 和 REST API 这两类 API 测试,使用 SoapUI、Postman 等工具。由界面操作手动发起 Request 并验证 Response。因为难以和 CI/CD 集成,所以出现了 API 自动化测试框架。
自动化执行 API 测试用例;
REST Assured:API 开源自动测试框架,可以方便地发起 Restful API 调用并验证返回结果。
自动化生成测试脚手架代码;
生成的测试脚手架代码,通常包含被测 API 的调用、测试数据与脚本的分离等。
自动化验证 Response;
自动比较两次相同 API 调用的返回结果,并识别出有差异的字段值,比较过程可以通过规则配置去掉例如时间戳、会话 ID 等动态值。
基于 SoapUI 或 Postmand;
开发一个自动化代码转换生成工具,输入 SoapUI 或 Postman 测试用例元数据,即测试用例的 JSON 元文件,输出符合 API 测试框架规范的基于代码实现的测试用例。这样原本的测试用例积累可以直接转换成在 CI/CD 直接接入的自动化测试用例。
4、GUI 测试的自动化技术
识别页面元素,对其进行自动化操作,模拟终端用户的行为验证软件功能的正确性。是大众最熟悉、发展时间最长、应用最广的自动化测试技术。
Web 浏览器;
业内主流的开源方案采用 Selenium;
商业方案采用 Micro Focus 的 UFT,前身是 HP 的 QTP;
移动端原生应用 GUI 自动化(Native App);
采用主流的 Appium,对 iOS 环境集成了 XCUITest,对 Android 环境集成了 UIAutomator 和 Espresso;
虽然采用的具体技术差别很大,但是用例设计的思路非常相似。除了上述这些外,还有比较新的 Katalon Studio,结合了 Selenium 和 Appium,提供了简单易用的 IDE 环境,支持录制和 object spy,有点像 UFT 的感觉。
特别说明:
齐涛-道长,他们采用 robot framework+requestslibrary 的方式来做 API 自动化测试,认为比较适合团队编程能力相对较弱的团队。
👉如果在阅读过程中有任何疑问,欢迎在评论区留言参与讨论!
版权声明: 本文为 InfoQ 作者【甜甜的白桃】的原创文章。
原文链接:【http://xie.infoq.cn/article/372520c7d1cbe6c0d9ec29481】。文章转载请联系作者。
评论