转自@山丘
前言
随着测试技术的发展,接口自动化测试逐渐成为各大公司投入产出比最高的测试技术。介入时间早,执行效率高,稳定性高的优点,让越来越多的公司引入接口自动化测试。
框架简介
APIAutoTest是处理API接口的轻量级自动化测试框架,Java语言实现,基于TestNG测试框架,支持持续集成,自动构建与测试。
框架介绍
1. 数据驱动设计,使用TestNG中的@DataProvider读取Excel中存储的自动化测试用例。
2. 基于TestNG测试框架
3. 使用HttpClient发送Http请求,并统一接口response返回值为String
4. 使用fastJson和Jsoup进行数据解析,由于请求返回值的统一,解析数据异常方便,方便接入不同接口类型的数据
5. 独立封装的检查点“Jsonpath”检查点,极大方便检查点的设置
6. 在线报告以及Email报告
7. 持续集成、持续交付、自动构建与测试
框架技术栈图
框架组件图
Maven进行项目、依赖管理
HttpClient进行通信
TestNG测试框架管理测试脚本以及测试驱动
FastJson/Jsoup用于数据解析
AssertJ用于检查点设置
ExtentReports输出具备图表分析的报告
SVN+Jenkins实现持续集成
框架执行流程图
测试执行的流程(代码层):
测试执行的入口为TestNG的XML文件
获取测试用例的脚本,测试用例执行分为测试前(@BeforeTest),测试中(@Test),测试后(@AfterTest)
@BeforeTest:获取/解析测试数据(Excel文件),接口关联参数化,Cookie装载等
@Test:初始化httpclient对象,执行请求,获取响应并转换成String等
@AfterTest:jsonpath检查点,对于接口正确/错误请求的逻辑处理
生成在线ExtentReports报告/日志
Email报告,测试结果通知测试相关人员
测试用例设计
测试用例设计:
通过TestNG的@DataProvider获取Excel测试数据
将数据的表头与数据存储在map中,具体使用时方便
jsonpathPoint:jsonpath检查点,框架特点之一,极大的方便断言的编写
前后缀的使用:通过前后缀使用来区分统一作用的数据,如请求参数:params
是否运行/检查控制:通过编写测试用例时就可以控制该用例是否运行,是否检查
不足之处:一个接口的测试数据对应一个Excel文件/Sheet表,后期数据量太大
测试报告
结语
接口自动化测试在这个追求效率的时代,逐渐的取代UI自动化测试,而做接口自动化测试的工具很多,比如soapUI,postman,jmeter等等,但是这些通用的工具的可扩展性以及跟项目的契合度上并不是十分合适。框架的作用在于使测试脚本编写变得简单,增强测试脚本的可维护性,容错率等,提高测试脚本的编写效率,从而提高测试效率。