一、接口业务流程
1、获取 token 接口:
http://192.168.1.4:9900/rest/getToken/
2、获取图片链接口:
http://192.168.1.4:9900/regist/getImagePath/?token=89bd9d88f4f3421c9e639dfab
0ca423c&type=fql
返回数据:
{"msg": "\u6210\u529f", "code": 0, "detail":
{"image_path":
"/images/regist/20160822/img1471837595.25.jpg"}}
3、获取图片验证码接口:
http://192.168.1.4:9900/images/regist/20160822/img1471850521.18.jpg
4、获取注册结果接口:
http://192.168.1.4:9900/regist/imageView/?imagecode=zds4&phone=18202733159
&token=89bd9d88f4f3421c9e639dfab0ca423c&type=fql
二、JMETER 的使用
1、新增测试计划
新增线程组,接着在该线程组下方新增 4 个“HTTP 请求”(添加-Sampler-HTTP 请求),
再在该线程组下方添加“察看结果树”(添加-监听器察看结果树)。也可以在每个 HTTP 请求
下方添加“察看结果树”,方便找到需要正则或参数化的数据。
一个完整的测试计划诞生了,如下图 2.1 所示
图 2.1
2、为每个 HTTP 请求设置属性
以上图 1 中的“HTTP 请求 01”为例进行说明。在 HTTP 请求窗口中的 Basic 标签页面上
输入服务器名称或 IP、端口号和路径(路径 URL 地址端口号后面的),其他默认,如下图 2.2-1
所示。此时可以执行下然后在当前的 HTTP 请求 01 的察看结果树里检查接口是否能正常访
问(如下图 2.2-2 所示)。
图 2.2-1
图 2.2-2
3、使用正则表达式
还是以上图 2.2-1 中的“HTTP 请求 01”为例进行说明。因为这个接口会得到一个动态值,
而 且 这 个 动 态 值 会 被 其 他 接 口 使 用 。 在 上 图 2.2-2 中 得 到 一 个 响 应 数 据 : {"msg":
"\u6210\u529f", "code": 0, "detail": {"token": "a53b93507c9d4f3fa43de4a44073bbb6"}}。在使
用第二个接口(HTTP 请求 02)时需要一个参数值 token,而这个值必须调用第一个接口后
才能获取到。如果让其他接口使用这个动态值,那么我们就需要在第一个接口(HTTP 请求
01)上使用正则表达式来获取这个返回值。
A、首先在第一个“HTTP 请求 01”上点击添加后置处理器-正则表达式提取器,如下图
3.3-1 所示
图 3.3-1
B、在下图 3.3-2 中输入“引用名称”(自定义数据名称,在其他接口中会用到)、“正则
表达式”、“模板”、“匹配数字(0 代表随机)”,其他默认。
图 3.3-2
说明:正则表达式可以看做是 LR 中的手动关联,从“察看结果树”-“响应数据”区域
找到返回值:{"token": "a53b93507c9d4f3fa43de4a44073bbb6"}。这条字符串就是需要关联
的,所以正则表达式输入为:"token": "(.+?)"。其他的不解释,照写即可,哈哈。完成以上
设置后运行下 JMETER,在“察看结果树”区域察看结果是否正确(绿色表示正确)。
C、在第二个接口(获取图片地址)中需要这个正则后的数据,此时在“HTTP 请求 2”
的 Basic 标签页面的 Parameters 区域添加接口参数(token 和 type),其中 token 值使用接口
1 中的正则表达式中的变量名(token),此 token 值为${token},如下图 3.3-3 所示。最后保
存并执行,如果 HTTP 请求 2(获取图片地址)的响应数据显示为绿色则表示设置成功。
图 3.3-3
同理,HTTP 请求 3(获取验证码)接口中需要动态生成的图片地址,那么就需要设置
HTTP 请求 2(获取图片地址)接口中的正则表达式,然后再在 HTTP 请求 3 接口中的 URL 地
址上引用接口 2 的正则变量即可。
4、变量参数化
此业务流程是首先获取 token 然后得到图片地址,接着获得验证码,最后得出注册信息。
在 HTTP 请求 4(获取注册信息)的接口信息中发现多了一个手机号(phone)。如果想得到
不同手机号对应的注册信息,那么就需要对接口 4 的手机号进行变量参数化。
A、在 HTTP 请求 4 上添加“配置元件-CSV Data Set Config”,如下图 4.4-1 所示
图 4.4-1
B、元件添加成功后,使用 TXT 新建一个 CSV 文件(注意,这里必须使用 TXT 文件然后
另存为 CSV 文件,不然执行时会报错全是乱码)。在 CSV 文件中输入多个值(这里是手机号,
一行显示一条手机号,我在 CSV 文件中写了 5 个不同的手机号),然后保存 CSV 文件(记住
存放路径)。
C、新建 CSV 文件后,切换到刚才添加成的 CSV Data Set Config 窗口,在“Filename”输
入 CSV 的存放地址(包括 CSV 文件名称),在 Variable Names(comma-elimited)中输入自
定义的变量名称(此变量会用到 HTTP 请求 4 的参数值中,我这里设置为 phonenum),其他
默认,如下图 4.4-2 所示
图 4.4-2
D、现在切换到 HTTP 请求 4(获取注册信息)窗口中,在 Parameters 标签页面中添加 4
个参数(因为此接口带 4 个参数)imagecode、token、type、phone。参数值分别是 zds4、
${token(HTTP 请求 1 中的正则表达式)、fql、${phonenum}(刚刚设置的参数化),如下图
4.4-3 所示
5、循环次数
图 4.4-3
我们之前在 HTTP 请求 4(获取注册信息)中设置了手机号的参数化(CSV 文件中包含 5
个不同的手机号),现在返回到当前测试计划下的线程组窗口中。在线程属性区域输入线程
数、Ramp-Up Periond(in seconds)和循环次数即可。最后运行查看当前线程组下的察看结
果树结果是否正常。
三、一个包含正则和参数化的多接口测试计划
图 1
在上图 1 中可以禁用单个 HTTP 请求中的“察看结果树”(如下图 2 所示),这样看上去
更直观。因为我们需要的是最终结果。
图 2