《软件测试52讲》读书笔记(五) —— 自动化测试技术
单元测试的自动化技术
单元测试阶段的“自动化”不仅仅指测试用例执行的自动化,还应包含以下几点:
第一:用例框架代码生成的自动化
单元测试的开发人员需要把更多的精力放在测试逻辑的覆盖和测试数据的选择上,以此来提高测试用例质量和开发效率
第二:部分测试输入数据的自动化生成
自动化工具需要能够根据不同变量类型自动生成测试输入数据,也就是说需要测试的代码逻辑生成适合的输入数据,并且根据判断预计测试结果
第三:自动桩代码的生成
桩代码是用来代替真实代码的临时代码,在使用时只需要关注桩代码内的具体逻辑实现,以及返回值。根据不同的情况可能还需要实现“抽桩”来适应后续的代码集成测试需求
在单元测试阶段,函数A内部调用的函数B是桩代码,在代码级集成测试阶段,希望函数A不再调用假的函数B,而是调用真实的函数B,这个用真实函数B代替原本桩代码函数B的操作,就称为“抽桩”
第四:被测代码的自动化静态分析
静态分析主要指代码的静态扫描,目的是识别出违反编码规则或编码风格的代码行。目前常用的代码静态分析工具Sonar和Coverity等
第五:测试覆盖率的自动化统计与分析
代码级集成测试的自动化技术
代码级集成测试与单元测试相似但代码级集成测试的关注点更多的是软件模块之间的调用和数据传递
代码级集成测试与单元测试的区别:
- 代码级集成测试中被测函数内部调用的其他函数必须是真实的,不可使用桩代码代替
- 单元测试中允许桩代码来模拟内部调用其他函数
- 代码级集成测试对于测试框架的要求非常高,除了装载自己的软件模块外还需加载其他模块相互依赖,才能做到被测系统运行
Web Server测试的自动化技术
Web Server测试主要是指SOAP API 和REST API,其中典型是采用SoapUI 或者Postman等类似工具,但是使用工具进行测试无法进行CI/CD
基于代码的API测试用例,包含:
-
准备API调用时需要的测试数据
-
准备API调用参数并发起API的调用
-
验证API调用的返回结果
Web Server测试自动化除API测试用例执行自动化外,还包含:
第一:测试脚手架代码的自动化生成
生成数据包含被测试API的调用、测试数据与脚本的分离,以及Response验证的空实现
第二:部分测试输入数据的自动生成
单元测试和API测试区别:
- 单元测试针对的参数是函数输入参数和函数内部输入
- API测试是对于API的参数以及API调用的Playload
注意:数据生成原则同样遵循边界值原则
第三:Response验证自动化
核心思想:自动比较两次相同API调用的返回结果,并自动识别出有差异的字段值,比较付哦成可以通过规则配置去掉诸如时间戳、会话ID(Session ID)等动态值
第四:基于SoapUI或者Postman的自动化脚本生成
在工具上累积的测试用例,开发自动化代码转换工具,直接转换在CI/CD上接入自动化测试用例 —— 需要公司自己开发
此外也可通过Postman集成到CI/CD,通过Postman+newman+jenkins完成。但这个方式相对比较繁琐,需先从Postman中导出json格式的文件,再在服务器上部署Newman(命令行执行导出的json文件),然后在通过命令完成测试并获取测试报告
GUI测试的自动化技术
GUI测试核心思想:基于页面元素识别技术,对页面元素进行自动化操作,以模拟实际终端用户的行为并验证软件功能的正确性
GUI测试的两大方向:传统web浏览器、移动端原生应用(Navicat App)
采用技术区别:
- 传统web浏览器:主要开源方案采用Selenium,商业方案采用Micro Focus的UFT(原来的HP的QTP)
- 移动端原生应用:主要采用主流的Appium,它对iOS环境集成了XCUITest,对Android环境集成了UIAutomator和Espresso

浙公网安备 33010602011771号