一、接口测试步骤

二、接口自动化适用场景:

目前设计的自动化接口测试案例有两个运行场景:

一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。【开发本地运行的方式就是打开Jmeter工具,导入JMX文件,开始执行可。】

开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。

三、实战一:

登录接口

接口地址:http://192.168.239.3:80/freshO2O/login.action

请求方法:POST

输入参数

URL参数

名称

类型

长度

选项

描述

account

string

11

必填

登录用户账号

password

string

32

必填

密码

verifycode

string

12

可选

eg:http://192.168.3.223:8080/freshO2O/login.action?account=fu&password=123456

输出结果

Result

名称

类型

长度

选项

描述

account

string

16

必填

用户账号

addr

string

20

必填

用户地址

msg

string

32

可选

状态信息

password

string

11

必填

用户密码

result

string

16

必填

返回结果,ok或 error

eg:

{"account":"fu","addr":"深圳市宝安区中南花园","msg":"账户名不存在","password":"123456","result":"ok"}

1)添加线程组:

右键点击“测试计划” -> “添加” -> “线程(用户)” -> “线程组”

jmeter测试方法(JMeter接口测试)(1)

2) 添加Http请求

右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求

jmeter测试方法(JMeter接口测试)(2)

3) 填写Http请求参数

同请求一起发送参数 ,在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”

jmeter测试方法(JMeter接口测试)(3)

4) 添加察看结果树

右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”

jmeter测试方法(JMeter接口测试)(4)

5) 运行Http请求,检查结果树

运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索响应结果

jmeter测试方法(JMeter接口测试)(5)

jmeter测试方法(JMeter接口测试)(6)

6) 配置线程组(测试性能)

线程组名称,线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数

jmeter测试方法(JMeter接口测试)(7)

7) 添加用户自定义变量

jmeter测试方法(JMeter接口测试)(8)

jmeter测试方法(JMeter接口测试)(9)

jmeter测试方法(JMeter接口测试)(10)

8) 添加断言

右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”

jmeter测试方法(JMeter接口测试)(11)

校验返回的文本中是否包含帐号信息的词,添加参数到要测试模式中

jmeter测试方法(JMeter接口测试)(12)

右键点击“HTTP请求” -> “添加”-> “监听器” -> “

jmeter测试方法(JMeter接口测试)(13)

9) 查看断言结果

运行一次脚本就可以看到断言结果是成功还是失败,如果失败,则会出现断言找不到的提示信息,如图:

jmeter测试方法(JMeter接口测试)(14)

10) 添加聚合报告

右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告

jmeter测试方法(JMeter接口测试)(15)

一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。

jmeter测试方法(JMeter接口测试)(16)

11) 聚合报告参数详解

备注:

jmeter测试方法(JMeter接口测试)(17)

四、实战二 :

名称

用户登录

描述

用户登录接口

URL

http://192.168.3.223:8080/freshO2O/login.action

方法

post

参数

account 用户账号 password 密码

返回结果

{ "account": "fu", "addr": "深圳市宝安区中南花园", "msg": null, "password": "123456", "result": "ok"}

1) 设计测试用例

account=fu password=123456

account=admin password=123456

2) jmeter 设置

第一个名字为:正常用户登录,

第二个为异常用户登录,分别输入IP地址,端口号与路径,方法选择POST,并添加对应的参数。

3) 运行测试并查看结果:

点击绿色小三角图标,通过察看结果树与聚合报告确认结果,察看结果树是绿色表示测试成功,红色表示测试失败。如下图,测试成功。

4) 测试用例参数化(两种)

以上的例子不管IP地址还是具体的参数都是直接赋值,这样如果服务器地址或者接口的参数有变化,维护起来比较麻烦,最好用参数化的方式来编写测试用例。参数化的方式有两种:

jmeter测试方法(JMeter接口测试)(18)

jmeter测试方法(JMeter接口测试)(19)

比如接口用例的地址中的IP地址,有可能服务器的IP地址会修改,最好做参数化,以下以用户登录的例子来讲解如何做参数化设置。

由于IP地址与端口号每个测试用例都用到,故在整个测试计划下面添加CSV Data Set Config

名称:改成一个有意义的名称,比如IP地址。filename:指定为上面编辑的文件,并带路径,d:\host.txt 。变量名:定义2个变量,host获取文件中的IP地址,port获取文件中的端口号。Delimiter:变量分隔符,随便指定一个标点符号,这里用逗号,文件中IP地址的值与端口号之间也需要是逗号。

通过界面操作直接设置参数,比如要设置用户登录接口的account与password的值。

jmeter测试方法(JMeter接口测试)(20)

函数参数

描述

名称

设置从哪个文件读取(或者*ALIAS)

列数

从文件的哪一列读取。

0=第一列, 1=第二列,依此类推。“next”为走到文件的下一行。*ALIAS为打开一个文件,并给它分配一个别名

5)参考答案截图:

jmeter测试方法(JMeter接口测试)(21)

jmeter测试方法(JMeter接口测试)(22)

jmeter测试方法(JMeter接口测试)(23)

五、实战三:

百度搜索接口

接口地址: http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试

请求参数:

返回结果:

1) 添加线程组:

右键点击“测试计划” -> “添加” -> “线程(用户)” -> “线程组”

jmeter测试方法(JMeter接口测试)(24)

2) 配置线程组

线程组名称,线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数

程数。

时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。

jmeter测试方法(JMeter接口测试)(25)

3) 添加Http请求

右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求

jmeter测试方法(JMeter接口测试)(26)

4) 填写Http请求参数

同请求一起发送参数 ,在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”

jmeter测试方法(JMeter接口测试)(27)

5) 添加察看结果树

右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”

jmeter测试方法(JMeter接口测试)(28)

6) 运行Http请求,检查结果树

运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索响应结果标题为“jmeter性能测试_百度搜索”

jmeter测试方法(JMeter接口测试)(29)

7) 添加用户自定义变量

可以添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”

jmeter测试方法(JMeter接口测试)(30)

新增一个参数wd,存放搜索词:

jmeter测试方法(JMeter接口测试)(31)

并在Http请求中使用该参数,格式为:${wd}

jmeter测试方法(JMeter接口测试)(32)

8) 添加断言

右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”

jmeter测试方法(JMeter接口测试)(33)

校验返回的文本中是否包含搜索词,添加参数${wd}到要测试模式中

jmeter测试方法(JMeter接口测试)(34)

右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”

jmeter测试方法(JMeter接口测试)(35)

9) 查看断言结果

运行一次脚本就可以看到断言结果是成功还是失败,如果失败,则会出现断言找不到的提示信息,如图:

jmeter测试方法(JMeter接口测试)(36)

10) 添加聚合报告

右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告

jmeter测试方法(JMeter接口测试)(37)

这样,我们就完成了一个完整Http接口的JMeter性能测试脚本编写。

11) 执行性能测试

点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里我们配置并发用户数为10,持续时间为60s

jmeter测试方法(JMeter接口测试)(38)

点击绿色小箭头按钮即可启动测试,测试之前需要点击小扫把按钮清除之前的调试结果。

jmeter测试方法(JMeter接口测试)(39)

待性能测试执行完成后,打开聚合报告可以看到:

一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。

六、总结:

第一种是单场景,压一个接口的;

第二种是混合场景,多个有关联的接口。

压测前要明确压测功能和压测指标,一般需要确定的几个问题:

运行完后,聚合报告会显示压测的结果。主要观察Samples、Average、error、Throughput。

Samples:表示一共发出的请求数

Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms)

Error%:测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因

Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。

,