文章目录
前言
本文章讲解在使用Jmeter进行页面压力测试时,模拟用户登录行为准备Jmeter脚本的方法
一、页面GUI压力测试 模拟用户登录行为
示例:用户登录一个网站进行操作的一般行为是:登录1次–>操作页面多次–>登出1次。如果一个网站要求 页面压力测试30个并发,则模拟用户行为:30个用户登录(非压测部分)–>一直请求该页面(压测部分)–>30个用户登出(非压测部分)
二、Jmeter脚本实现方式
1.方式一:once only controller+runtime controller+once only controller
脚本结构:once only controller控制器(放置登录请求 控制登录)+runtime controller(放置压测页面 控制持续压测时间)+once only controller控制器(放置登出请求 控制登出)
线程组循环次数loop count需要设为1,因为runtime controller的作用域为当前循环
runtime设置压测时间
该方法一般适用于不需要参数化的页面
2.方式二:setUp线程组(登录)+线程组(压测请求)+tearDown线程组(登出)
脚本结构:设三个线程组,线程组一:登录;线程组二:压测请求;线程组三:登出;
思路:获取n个用户的cookie,拿这n个用户的cookie去压测,实现关键是 要实现线程组之间共享cookie变量,这个要用到Jmeter的全局变量(Jmeter属性)
-
setUp线程组(登录):利用beanshell脚本语言将30个用户的cookie变量都声明为Jmeter属性。
登录请求内添加beanshell处理器
//beanshell脚本如下
//获取用户名
String username = vars.get("username");
//声明用户的cookie属性
switch(username){
case "perf#01":
//String APP_ID = props.get("G_COOKIE_CLOUD_APP_ID1");
//log.error(APP_ID);
props.put("G_COOKIE_CLOUD_APP_ID1",vars.get("COOKIE_CLOUD_APP_ID"));
props.put("G_COOKIE_SESSION1",vars.get("COOKIE_SESSION"));
props.put("G_COOKIE_CLOUD_APP_NAME1",vars.get("COOKIE_CLOUD_APP_NAME"));
props.put("G_COOKIE_areaId1",vars.get("COOKIE_areaId"));
props.put("G_COOKIE_orgId1",vars.get("COOKIE_orgId"));
props.put("G_COOKIE_userId1",vars.get("COOKIE_userId"));
log.info("--------------"+username+"的cookie属性已生成---------------");
break;
case "perf#02":
props.put("G_COOKIE_CLOUD_APP_ID2",vars.get("COOKIE_CLOUD_APP_ID"));
props.put("G_COOKIE_CLOUD_APP_NAME2",vars.get("COOKIE_CLOUD_APP_NAME"));
props.put("G_COOKIE_SESSION2",vars.get("COOKIE_SESSION"));
props.put("G_COOKIE_areaId2",vars.get("COOKIE_areaId"));
props.put("G_COOKIE_orgId2",vars.get("COOKIE_orgId"));
props.put("G_COOKIE_userId2",vars.get("COOKIE_userId"));
log.info("--------------"+username+"的cookie属性已生成---------------");
break;
...
}
Jmeter的http cookie管理器会将用户的cookie都声明都为变量(在jmeter.porperties配置文件中设置),变量名称为:COOKIE_前缀+cookie名
-
线程组(压测请求):在压测线程组中使用这30个cookie去压测
添加cookie管理器,取cookie属性作为cookie值:java ${__P(G_COOKIE_SESSION${cookienum},)}
设置计数器,变量名为cookienum,取值范围为1~30,递增1 -
tearDown线程组(登出):设置计数器cookienum,与上面相同
该方法适用于所有页面
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。