一个完整的jmeter APP登录接口测试实例
最终效果:
知识点:
通过HTTP信息头管理器, 正则表达式提取器 提取登录要用的token,memcard,Debug Sampler,CSV Data set config参数化登录,循环控制器,察看结果树
具体实现思路:
1.首先调通登录接口(登录请求,登录应答)
本例中,登录请求使用post请求向服务器发送用户名及密码,使用get请求获得登录成功后的信息
2.因为token的值是动态的,所以要get到登录后页面的信息,需要通过正则表达式提取器 获得每次登录请求返回的token值。把这个值写到get请求的信息头中
(即LoadRunner中的关联操作)
3.添加Debug Sampler,查看每次执行脚本,脚本中包含的所有变量,值是否是正确的。这些变量可以是:
a.用户自定义的变量
b.接口关联时用到的变量(通过后置处理器--JSON提取器 呀 正则表达式提取)目前我更喜欢使用JSON提取器
4.本例中 需要对登录请求作参数化,把用户名密码写入一个文件,通过配置CSV Data set config,来不断读取文件中的值
5.本例中一共准备了4组登录数据,添加一个循环控制器,把CSV Data set config 以及要参数化的请求放到这个逻辑控制器下
(它的作用域是对其子节点的 sampler有效,作用是控制采样器的执行顺序)
6.添加断言,也就是验证登录接口 服务器下发数据是否符合预期结果。断言方式常用的有2种:
a.响应断言
b.JSON断言
目前感觉JSON断言更实用一点,因为可以验证不同字段的值是否正确。
技巧:接口调不通时,在察看结果树时,除了查看响应数据,还要注意观察请求的信息是否正确(发送请时给的参数是否正确)
具体实现:
添加一个线程组
用户定义的变量
可以把请求中一些重复出现的内容写在这,后面在写请求的时候,直接通过${host}的方式调用即可。我这里是把请求的地址写在了这里
添加HTTP信息头管理器
把公共的请求的headers信息填写在这里
注意发送POST请求时,如果不在请求头中填写Content-Type这个参数,响应结果会提示参数问题 ,格式不正确之类的
添加一对请求,分别是登录请求、登录成功后的请求
请求接口的内容可以找开发要,也可以通过抓包的方式获得
登录请求:
登录成功后的页面:
获得这个页面的返回结果,需要在这个请求的请求头中添加 token 和 memcard的值
正则表达式提取动态数据
正则表达式提取token和memcard(要先了解正则表达式的写法),小括号中是要提取的内容
提取token的方法一样
添加Debug Simpler
默认设置即可
在提取memcard时卡住了,一开始 模板 对应的值写的 $1$,执行脚本后,登录成功后请求返回的结果是 用户不存在,查了一些资料,
又观察 察看结果树中的请求信息,发现memcard的值是6
Debug Simpler中显示正则表达式提取到的memcard的值一共有4个,其中有正确的值,试着把正则表达式提取器 模板的值改变$0$后,再执行脚本就没问题了
添加断言:
对登录成功后的请求添加断言(可加可不加,通过察看结果树的响应数据,也可以确定是否请求成功)
code的值为0,表示请求成功
断言结果:
下面这样就表示,成功,如果断言失败,会给出错误提示信息
通过CSV Data Set Config 参数化用户名 密码:
Filename是参数化文件存放的位置,可以是绝对路径,也可以是相对路径,我这里使用相对路径
在要参数化的取样器(请求)中通过${username},${password}的方式调用
做完这一步之后直接运行脚本遇到的问题:
我只想给登录这个请求参数化,一共准备了4个用户名,密码.可是执行脚本只能读取 参数化文件准备的第1行数据 ,上面的脚本只有1次请求(用到参数化内容的),所以只会读取第1行数据,循环的话,会往下读。
所以有了下面的操作
添加循环控制器:
把要参数化的请求和相关的配置放到这个逻辑控制器下面
要实现本例的效果,其实可以不添加这个循环控制器,直接把线程组的循环次数改为4也可以,效果一样,但是意义完不同。
直接改线程的循环次数,相当于是4个线程同时进行登录操作,等于做了并发的操作。
最后的察看结果树报告显示如下:
请求成功,且返回的内容也是正确的。
最新文章
- MyBatis学习(二)
- Mvc导入导出Excel
- [shell基础]——awk命令
- 使用HttpWebRequest以及HttpWebResponse读取Http远程文件
- python 本地文档查看
- Mysql存储引擎__笔记
- 395. Coins in a Line II
- Hibernate 注解多对一 要求在多那边产生一个外键而不会另外产生一个表
- Linux 系统运行级别
- poj 2186 (强连通缩点)
- Socket编程实践(12) --UDP编程基础
- linux 架设 postfix 邮件服务器
- Windows下根据端口号查找进程并关闭
- HAProxy+Nginx 负载均衡
- QC的使用简介
- VBScript 学习笔记
- vue原理简介
- Kotlin入门(8)空值的判断与处理
- 一步步弄懂HTTPS
- linux怎么执行jar文件 怎么打可执行的jar包
热门文章
- sql server的数据库个数、表个数及表的数据量统计
- assertion: 18 { code: 18, ok: 0.0, errmsg: ";auth fails"; }
- [NOIP2016day2T1] 組合數問題(problem)
- 使用JQUERY的flexselect插件来实现将SELECT下拉菜单变成自动补全输入框
- MYSQL 字符集 MYSQL 源码
- Java Json格式的字符串转变对象
- Eclipse启动时提示fail to create the Java Virtual Machine问题的解决
- UIView 的图层关系
- bootstrap学习——javascript插件篇
- SQL语句改动表名和字段名