在软件研发生命周期的各个阶段都有自动化测试技术的存在,并且对提升测试效率有着至关重要的作用。
单元测试的自动化技术
单元测试阶段的“自动化”包括:
-
测试用例执行的自动化;
根据软件详细设计采用等价类划分和边界值分析方法设计测试用例,在测试代码实现后再以自动化的方式统一执行。 -
用例框架代码生成的自动化;
如TestNG 框架代码应该由自动化工具生成
-
部分测试输入数据的自动化生成;
自动化工具能够根据不同变量类型自动生成测试输入数据。
比如,某个被测函数的原型是 void fun(int* p, short b),那么测试数据自动生成技术就会为输入参数 int* p 自动生成“空”和“非空”的两个指针 p,然后分别执行函数 void fun(int* p, short b),并观察函数的执行情况。如果函数内部没有对空指针进行特殊处理,那么函数 fun 的调用必定会抛出异常,从而发现函数的设计缺陷。
同样地,对于输入参数 short b 会自动生成超出 short 范围的 b,测试函数 fun 的行为。
-
自动桩代码的生成;
自动桩代码的生成是指自动化工具可以对被测试代码进行扫描分析,自动为被测函数内部调用的其他函数生成可编程的桩代码,并提供基于测试用例的桩代码管理机制。 -
被测代码的自动化静态分析;
静态分析主要指代码的静态扫描,目的是识别出违反编码规则或编码风格的代码行。通常这部分工作是结合项目具体的编码规则和编码风格,由自动化工具通过内建规则和用户自定义规则自动化完成的。目前比较常用的代码静态分析工具有 Sonar 和 Coverity 等。 -
测试覆盖率的自动统计与分析。
单元测试用例执行结束后,自动化工具可以自动统计各种测试覆盖率,包括代码行覆盖率、分支覆盖率、MC/DC 覆盖率等。
代码级集成测试的自动化技术
现在的开发理念追求的是系统复杂性的解耦,会去尽量避免“大单体”应用,采用 Web Service 或者 RPC 调用的方式来协作完成各个软件功能。所以现在的软件企业,尤其是互联网企业,基本不会去做代码级集成测试。
Web Service 测试的自动化技术
Web Service 测试,主要是指 SOAP API 和 REST API 这两类 API 测试。
使用API 自动化测试框架
Web Service 测试“自动化”包括:
-
API 测试用例执行的自动化;
-
测试脚手架代码的自动化生成;
-
部分测试输入数据的自动生成;
-
Response 验证的自动化;
-
基于 SoapUI 或者 Postman 的自动化脚本生成。
GUI 测试的自动化技术
GUI 自动化测试主要分为两大方向,传统 Web 浏览器和移动端原生应用(Native App)的 GUI 自动化。虽然二者采用的具体技术差别很大,但是用例设计的思路类似。
对于传统 Web 浏览器的 GUI 自动化测试,业内主流的开源方案采用 Selenium,商业方案采用 Micro Focus 的 UFT(前身是 HP 的 QTP);
对于移动端原生应用,通常采用主流的 Appium,它对 iOS 环境集成了 XCUITest,对 Android 环境集成了 UIAutomator 和 Espresso。
来源于:极客时间 茹炳晟 软件测试52讲