TestNG进行接口测试,脚本及可维护性框架
注: 以下内容引自http://blog.csdn.net/u010321474/article/details/49977969
TestNG进行接口测试,脚本及可维护性框架
- 211
testng被普遍使用于基于java和spring的系统结构中,用于保证系统功能,本身testng的特点
1.结构清晰
2.支持多种数据源
3.可与maven集成
4.环境/数据准备方便
可用于系统中对外提供的接口进行接口测试脚本的编写(单元测试则一般用junit完成)。
经典的测试脚本,一般分为三个步骤:
1.数据和环境初始化;
2.执行被测接口调用;
3.断言判断。
负责任和健壮的测试脚本,一般还要进行测试数据初始化,测试依赖的环境的调整(如业务开关打开),在执行完测试脚本后,进行数据的清理,如环境的恢复和测试遗留数据的清理。
下面记录一个简单的接口测试编写过程:
被测接口:
被测接口实现:
重点,测试类
说明:
1.其中beforeClass注解下,为整个test case运行所需要的基本环境,包括业务开关,上下游业务中所需要的其他服务的引入以及服务引入成功的判断,如果有一个服务都没有引入成功,其实该test case就没有必要执行,也就不需要浪费测试资源去执行了。
2.beforeMethod注解下,可以提供本次测试方法(服务中有两个方法,其中一个就依赖了数据库中的内容,所以要初始化数据库。)所依赖的环境信息。
3.两个after中,依次对数据和环境进行恢复,在CI情况下,本次执行的结果 有可能会影响到下次执行,所以,负责任的方法是,执行完本次test case后,就相应的进行环境和数据的清理,便于下次接口测试的顺利执行。
建议:
1.接口测试脚本的结构很重要,对于业务场景相似的情况,可以设置测试基类,将环境/数据的初始化放置在基类中;将测试执行和测试结果判断适当加以区分,这样逻辑会清晰,便于测试脚本维护。
2.提高脚本复用程度,如采取参数化驱动,使用csv/txt/excel构建测试数据驱动,编写自己的dataProvider,解析测试数据,提高脚本的利用率,如上述脚本中,针对returnObject方法,可以构建
a.数据初始化另一个返回结果
b.数据初始化为空
c.业务开关关闭
等情况,并且测试数据和测试结果一一对应,都进行参数化,加上正常场景,相当于进行了4个业务场景的测试,能够极大减少回归测试的人工。
3.为脚本执行后的副作用负责,主要是指,在脚本执行的过程中,难免会引入一些测试数据和对当前业务流的改动,在执行完成后,需要将这些执行痕迹清理和还原,一是便于手工测试的正常执行,而是为下次持续集成,减轻了错误概率。
TestNG进行接口测试,脚本及可维护性框架的更多相关文章
- 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢
- postman(九):postman接口测试脚本集成到jenkins
本篇的目的是实现使用jenkins远程执行postman接口测试脚本 准备工作:一台linux服务器(可以用虚拟机搭建一个),linux服务器上安装好node.js.newman,部署好jenkins ...
- Postman接口测试脚本编写规范
Postman接口测试脚本编写规范 1.前言 2.名词解释 3.接口测试脚本规范 3.1接口测试脚本编写的规范 3.2 Postman使用规范 4.单个接口测试 5.整个流程的开发过程 1.前言 本规 ...
- JAVA+Maven+TestNG搭建接口测试框架及实例
1.配置JDK 见另一篇博客:http://www.cnblogs.com/testlurunxiu/p/5933912.html 2.安装Eclipse以及TestNG Eclipse下载地址:ht ...
- 2--JAVA+Maven+TestNG搭建接口测试框架搭建
1.配置JDK 2.安装Eclipse以及TestNG Eclipse下载地址:http://beust.com/eclipse TestNG安装过程:输入网址:http://beust.com/ec ...
- TestNG配合ant脚本进行单元测试
上面就是一个简单的SSM框架的整合,数据库来自宜立方商城的e3-mall采用一个简单的spring-mvc和spring以及mybatis的整合 单元测试代码为 TestUserByTestNG.ja ...
- 3.jmeter接口测试---脚本录制
安装好jmeter后,就要进入主题了,进行接口测试,接口测试的脚本获取方式 ①手动填写 ②badboy录制后,导入jmeter使用 ③jmeter录制 不会安装的可以进入这里:https://www. ...
- HttpClient + Testng实现接口测试
HttpClient教程 : https://www.yeetrack.com/?p=779 一,所需要的环境: 1,testng .httpclient和相关的依赖包 二.使用HttpClient登 ...
- 『居善地』接口测试 — 12、Moco框架介绍
目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...
随机推荐
- java的finalize方法使用
1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize()与C++中的析构函数 ...
- AngularJS中service,factory,provider的区别
一.service引导 刚开始学习Angular的时候,经常被误解和被初学者问到的组件是 service(), factory(), 和 provide()这几个方法之间的差别.This is whe ...
- rotate image(旋转数组)
You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...
- 深入理解SpringCloud之配置刷新
我们知道在SpringCloud中,当配置变更时,我们通过访问http://xxxx/refresh,可以在不启动服务的情况下获取最新的配置,那么它是如何做到的呢,当我们更改数据库配置并刷新后,如何能 ...
- YUV420格式解析
一般的的YUV420图像格式实际上是Y'UV,420指的是其在Y U V上面的采样率.在YUV420的格式中,首先存储每一个像素的Y'值,然后跟着存储的是每2*2方阵采样一次的U值,最后存储的是每2* ...
- goquery 添加header 发起请求
goquery 添加header 发起请求 我们知道使用net/http 很容易发起GET or POST 请求:并且在发起http请求时候,可以很容易的对header进行干预 例如: client ...
- ES6浅谈之Promise
首先来回想一下Promise对象的写法: // 方法1 let promise = new Promise ( (resolve, reject) => { if ( success ) { . ...
- HTML学习笔记5:修饰符和特殊标签
①修饰符: 作用:修饰显示的方式,并不改变网页的结构,需要修饰的内容写在修饰标签内 常用文字和段落修饰符: 文字斜体:<i></i> 或 <em> ...
- 第五章 MySQL函数
一.数学函数 (1) 绝对值函数:ABS(x) ABS(x) 用于返回 x 的绝对值 mysql> SELECT ABS(2), ABS(-2.3), ABS(-33); +--------+- ...
- hdu-2683 TCE-frep number system---完全数+二项展开式
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2683 题目大意: g(n)是n的因子和 两种操作: A a b 查询a b区间有多少个n满足上式. ...