JMeter性能测试工具阶段总结
1.系统功能:
1.登录
2.登录后,功能界面。
登录后,进入该界面,可在该界面中进行启动简单流程和进入待办任务列表等操作。
3.待办任务界面。
在上一界面,点击【待办任务】按钮,进入待办任务界面。
4.工作项推送
单击待办任务界面的工作项ID,进入任务明细界面,通过【推送】按钮进行工作项推送操作。
2.性能测试用例
测试系统中的【启动简单流程】和【推送】功能。
因为是为了测试后台性能,所以前台界面做的尽量简单,减少不必要的逻辑和性能消耗。
3.启动流程依赖登录用户
启动流程请求需要依赖系统登录的用户Id,系统登录后将用户Id放到了session中,启动流程之前需要从session中先获取当前登录用户。
启动流程获取userId代码示例:
HttpSession session = request.getSession(); String userId = (String) session.getAttribute("userId"); |
解决方法一:
在HTTP请求下一级,添加配置元件->HTTP Cookie 管理器。
添加JSESSIONID的cookie信息。如下图所示:
第一次访问应用服务器的时候,应用服务器会产生一个sessionid用于维护客户端的信息,tomcat的sessionid的key是jsessionid。
jsessionid可以通过chrome浏览器的Resources->Cookies获取到:
详见【工作流性能测试_启动流程.jmx】测试计划。
解决方法二:
新建2个循环控制器:
登录-循环控制器和启动-循环控制器
登录-循环控制器的循环次数设置为1,启动-循环控制器的次数视性能测试情况设置。
并在需要用到session的HTTP请求的上一级目录建立HTTP Cookie 管理器。
这样启动的时候就可以获取到session中的用户Id了。
详见【工作流性能测试_登录后启动.jmx】测试计划。
4.JMeter关联
进入待办任务界面,需要解析返回的任务列表,获取到其中的工作项Id,然后根据获取到的工作项Id进入到任务明细界面,并进行推送操作。这个场景需要通过JMeter的关联实现。
在要解析的HTTP请求之后,新建一个后置处理器->正则表达式提取器。
引用名称:workitemId,可以在之后当做变量用
正则表达式: ,括号中的是提取出的变量值。
对应的jsp代码片段为:
|
请求返回的响应结果片段为:
|
模板:$1$,表示根据匹配到的字符串再做分组区分,如果要去正则表达式的第二组参数则设置为$2$,此处只有一组参数,设置为$1$
匹配数字:0,代表随机获取一个,此应用每次返回10条任务,随机获取其中一条。
获取之后就可以在下一个请求中使用${workitemId}作为参数用了。
详见【工作流性能测试_推送.jmx】测试计划
5.JMeter参数化
推送测试的时候不能多个线程同时推送同一条工作项,所以要模拟不同的登录用户,获取不同的任务列表,然后进行推送测试。这个场景需要通过JMeter的参数化实现。
点击 选项->函数助手对话框,在弹出的窗口中选择_StringFromFile。
名称栏可输入VUsers,值为文件对应的全路径,点击生成按钮,就可以将生成的字符串,拷贝到需要用到的参数内。
这样登录用户就从之前配置的文件中获取了。
D:\apache-jmeter-2.11 \users.txt内容如下:
admin admin1 admin2 admin3 admin4 admin5 admin6 admin7 admin8 admin9 admin10 |
详见【工作流性能测试_登录后启动_参数化.jmx】测试计划