一个完整的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个线程同时进行登录操作,等于做了并发的操作。


最后的察看结果树报告显示如下:
请求成功,且返回的内容也是正确的。

一个完整的jmeter APP登录接口测试实例的更多相关文章
- 抖音短视频爆火的背后到底是什么——如何快速的开发一个完整的直播app
前言 今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,今天我来教你从零开始搭建一个完整的直播app,希望能帮助 ...
- 【Python接口测试】简单系统登录接口测试实例
我们可以用Jmeter做接口测试,但是呢个人觉得那个有点局限性,用python就灵活很多, 可以按自己的思路来构建比较灵活,下面给大家介绍一个简单的接口测试实例. 一.我们的思路如下: 首先我们要弄清 ...
- JMeter——简单的接口测试实例(一)
场景:使用JMeter来实现接口测试 基本流程:添加线程组->添加http信息头管理器->添加http请求->添加断言->添加监听器->执行,查看结果 案例分析:下面以办 ...
- 一个基于Behave框架的http接口测试实例
前言:本人没怎么做过http接口测试,只是最近学习了一下,Behave框架也是最近学习的,如果有不对的请各位大神指点,感谢! 1.1 接口准备 本次get请求的接口用的是百度接口:wd=搜 ...
- Python的Django框架完成一个完整的论坛(源码以及思路)
一个完整的论坛,登录.注册.发表.头像.点赞.评论.分页.阅读排行等 使用Django2,Python3.5 开发工具:Pycharm5 需要的知识:Python基础知识,Django原理的理解以及使 ...
- jmeter压力测试的简单实例+badboy脚本录制(一个简单的网页用户登录测试的结果)
JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter. http://jmeter.apache.org/ 在使用jmeter ...
- Jmeter工具进行一个完整的接口测试
Jmeter工具进行一个完整的接口测试 1.创建一个线程组 通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户. 2.输入线程组名字 3.添加一个cookie ...
- Jmeter接口测试实例
此文章作为工作中用到的jmeter接口测试相关内容简述,方便日后查阅参考,如有理解描述有误之处,欢迎指出. 首先Jmeter环境准备网上有很多教程,在此不多做赘述: 1.接口简述 接口可理解为从客户端 ...
- Struts2开发环境搭建,及一个简单登录功能实例
首先是搭建Struts2环境. 第一步 下载Struts2去Struts官网 http://struts.apache.org/ 下载Struts2组件.截至目前,struts2最新版本为2.3.1. ...
随机推荐
- 常用Git命令大全思维导图
开发中代码管理少不了使用Git,对于初学者来说Git命令的学习是一个难过的坎,为了帮助大家记忆并快速掌握Git的基本使用,我把常用的Git命令整理成思维导图,分享给大家. 高清大图在线预览 http: ...
- UE 高亮 一个或多个关键字的方法
#######2014-11-20,11:13:06######### 一.高亮一个关键字 方法1: 选中该关键字, Ctrl + . 即可: 方法2: 选中该关键字, Shift + 双击左键 ...
- [bzoj3694]最短路_树链剖分_线段树
最短路 bzoj-3694 题目大意:给你一个n个点m条边的无向图,源点为1,并且以点1为根给出最短路树.求对于2到n的每个点i,求最短路,要求不经过给出的最短路树上的1到i的路径上的最后一条边. 注 ...
- php表单常用正则表达式
<?php /** * @description: 正则表达式匹配 */ class Regex { /** * @手机号 */ public static function Phone($su ...
- Clojure:解决selmer模板不刷新的问题
当在REPL环境中尝试调试template的时候,会发现每次都需要重启REPL才能看到最新的变化.调查后发现,原来是每次启动REPL的时候,原来的template文件都被放到了target目录中,这样 ...
- Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误
这篇是计算机类的优质预售推荐>>>><Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误> 编辑推荐 纠错式学习,从"陷阱 ...
- SpringMVC案例2----基于spring2.5的注解实现
和上一篇一样,首先看一下项目结构和jar包 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVuamFtaW5fd2h4/font/5a6L5L2T/fo ...
- 计算cost--全表扫描
以下教大家怎样手工算出oracle运行计划中的cost值. 成本的计算方式例如以下: Cost = ( #SRds * sreadtim + #MRds * mreadti ...
- 严格符合CommonJS规范的包特性
严格符合CommonJS规范的包应该具备下面特性: 1.package.json必须在包的顶层文件夹下. 2.二进制文件应该在bin文件夹下. 3.JavaScript代码应该在lib文件夹下. 4. ...
- TControl的主要功能研究(属性,函数,事件)
-------------------------- TControl主要用来管理以下消息 -------------------------- 鼠标消息显示隐藏刷新控件状态 ControlState ...