注:
1)复杂的测试案例都是在这个简单的测试案例上进行扩展
2)一个子系统建议放在同一个测试计划中,流程测试可以通过线程组区分,便于设定不同的测试数据个数。比较独立的接口,可以统一放在线程组内,顺序完成测试。
3)流程性接口测试:如果要测试的接口可以组成一个流程,执行顺序添加多个http请求的sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性。
1. 开发接口测试案例的整体方案:
第一步:分析出测试需求,拿到开发提供的接口说明文档;
第二步:从接口说明文档中设计接口测试用例,包括详细的入参、出参数据,以及明确的格式和检查点。
第三步:和开发一起评审接口测试用例
第四步:结合开发库,准备接口测试案例中的入参数据和出参数据,并整理成csv格式的文件。
第五步:结合接口测试用例和csv格式的数据文档,做接口自动化开发。
2. 接口自动化适用场景
1)测试开发接口用例,开发自测
2)回归测试:开发自测通过后纳入回归测试中,配置到持续集成平台自动运行。
3. jMeter工具设计之初是用于性能测试的,它在实现对接口的调用方面已经做的比较成熟,本次使用jMeter工具实现http接口的测试。
1)打开jMeter:下载好jMeter后,双击bin目录下的jmeter.bat
2)添加线程组(测试计划右键-添加-Threads(Users)):
线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一直到选择停止运行脚本。
3)添加http cookie管理器(线程组右键-添加-配置元件):
4)添加HTTP请求默认值(线程组右键-添加-配置元件):当被测系统有唯一的访问域名和端口时,此组件很好用;填写被测系统的域名和端口,以及具体的协议类型。线程组里面的所有sampler的http request可默认此设置。
5)添加http Request(线程组右键-添加-Sampler):对于jMeter而言,sampler取样器是与服务器交互的单元,一个取样器通常进行三部分的工作,向服务器发送请求;记录服务器的响应数据;记录相应时间信息。
一个HTTP请求的配置参数介绍如下:
名称:标识一个取样器,一般建议适用有意义的名字,如接口名称。
注释:仅用户记录注释信息。
服务器名称或IP:HTTP请求发送的目标服务器名称和IP地址,可以取用户定义的变量$(host)
端口:目标服务器端口号,可以取用户定义的变量$(port)
协议:向目标服务器发送的HTTP请求时的协议,可以是http(默认)或https
方法:发送HTTP请求的方法,包括GET,POST,HEAD,PUT,OPTIONS,TRACE,DELETE等
Content encoding:内容编码方式,默认iso8859,可以设置UTF-8
路径:目标URL路径(不含服务器地址和端口)
6)添加响应断言(被测http request右键-添加-断言):设置检查点,添加对响应结果的正则表达式判断即可。
7)添加监听器(线程组右键-添加-监听器):常用图形结果、查看结果树、聚合报告,方便查看运行后的结果。
查看结果树:可以定义返回结果的排版,如果JSON格式。
查看聚合报告:
Label:显示jMeter的每个element(如,http request)都有一个Name属性
#Samples:表示这次测试中一共发出了多少请求,如模拟10个用户,每个用户循环10次,这里就显示100
Average:平均响应时间--默认情况下是单个request的平均响应时间,当使用了Transaction controller时也可以以Transaction为单位显示平均响应时间。
Median:中位数,也就是50%用户的响应时间
90% Line:90%用户的响应时间。
注:关于90%和50%的并发用户数的含义可参考:http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小响应时间
Max:最大响应时间
Error%:本次测试出现的错误的请求数量/请求的总数
Throughtput:吞吐量---默认情况下表示每秒的请求数(Request per second),当使用了Transaction Controller时,可以表示类似Loadrunner的Transaction per second数。
KB/Sec:每秒从服务器接收到的数据量,相当于Loadrunner中的Throughtput/Sec
8)添加用户定义的变量(测试计划右键-添加-配置元件)
可以添加测试服务器的IP地址${_P(host,192.168.1.12)}和端口${_P(port,8080)}