入门级 实战
记录第一次实实在在用JMeter测试项目的完整流程(就目前我这个渣渣而言,是完整的流程了,肯定是还有很多流程是我不知道的哦!!!)
添加线程组
测试计划 - 添加 - 线程(用户) - 线程组 - 填写线程数、间隔运行时间、循环次数
添加HTTP请求
线程组 - 添加 - 取样器 - HTTP请求
填写相应的参数,如果有自定义的参数记得添加用户自定义变量,然后再http请求中参数用${XXX}表示。如果是普通参数,就在参数栏写,如果是JSON格式就在消息体数据栏写,记住这两个是不能同时存在的,当一方填写了数据另一方是点不开的!!!
用户定义的变量
线程组 - 添加 - 配置原件 - 用户定义的变量
添加对应的参数,非数字一定要记得加上双引号哦!!!(亲自踩过的坑)
添加请求头
有请求头的请在这里设置哦!!! 线程组 - 添加 - 配置原件 - HTTP信息头管理器
察看结果树
线程组 - 添加 - 监听器 - 察看结果树
stop是直接强制停止,X叉叉是慢慢关闭线程
聚合报告
聚合报告分析:
1、Lable:http请求的名称;
2、#样本:英文版也叫#Samples,这里表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100;(我的是用户有1000,只迭代一次,但是这里却是700多???继续研究究~~~)
3、平均值(Average):平均响应时间,默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间;
4、中位数(Median):中位数,也就是 50% 用户的响应时间;
5、90%百分位:90%用户的响应时间;
6、95%百分位:95%用户的响应时间;
7、99%百分位:99%用户的响应时间;
8、最小值(Min):最小响应时间;
9、最大值(Maximum):最大响应时间;
10、异常%(Error%):本次测试中出现的错误率,即错误的请求的数量/请求的总数;
11、吞吐量(Throughput): 默认情况下表示每秒完成的请求数(Request per Second),单位时间内处理完的请求越多,说明系统的效率越高;
12、接收KB/sec(Received KB/sec):每秒从服务器端接收到的数据量;
13、发送KB/sec(Sent KB/sec):每秒从客户端发送的请求的数量。
简单版-日志保存
这个是最基础的日志保存方式,自己可以写脚本导出更有用的日志,但是这个我正在研究中~后续更新
按自己的理解大概翻译了一下
聚合报告,上面的保存文件是保存如上图所示的文件,下面的保存表格数据就是保存的下图中表格里面的数据啦,是有区别的哦~~~
BeanShell 后置处理程序
自己写脚本看日志来咯~~~
HTTP请求 - 添加 - 后置处理器 - BeanShell PostProcessor (还有前置的、断言的BeanShell,用法大同小异,继续学习ing…)
也可以**引入已经写好的java文件,用source(“D:\demo\xxx.java”)**就行了
放上代码
import java.io.FileWriter;
import java.io.IOException;
//获取返回参数和code
String returnData = prev.getResponseDataAsString();
String code = prev.getResponseCode();
//控制台打印
log.info("====================================");
log.info("返回数据:" + returnData);
log.info("返回code:" + code);
log.info("返回message:" + message);
//获取BeanShell参数
log.info("获取BeanShell参数:" + bsh.args[0] + " , " + bsh.args[2] + " , " + bsh.args[1] + " , " + bsh.args[4] + " , " + bsh.args[3]);
//获取用户定义的变量
log.info("当前时间:" + vars.get("nowTime"));
log.info("====================================");
if(returnData.contains("\"statusCodeatus\":200") && code.equals("200")){
Failure = false;
FailureMessage = "\n${__time(yyyy-MM-dd HH:mm:ss,)} 断言成功";
}else{
Failure = true;
//${__time(yyyy-MM-dd HH:mm:ss,)} = 当前时间
FailureMessage = "\n${__time(yyyy-MM-dd HH:mm:ss,)} 断言失败\n响应信息\n" + returnData + "\n返回值\n" + code;
//生成日志
String fileName = "D:/log/test1.doc";
FileWriter fw = new FileWriter(fileName, true);
fw.write(FailureMessage);
fw.write("\r\n");
fw.close();
}
是不是看错误日志就方便多了啊,哈哈哈哈哈哈
BeanShell 断言
说到断言的Failure 和 FailureMessage 补充一下,比如果后台没有报错但是返回错误码,这时怎么捕捉呢,也是可以用到这两个的,设置Failure = true,就会报错啦!!!
设置BeanShell 断言更方便
里面的代码跟上面,我是一样写的。
总结
目前俺知道的就这么点了,小白一个,有不足之处多多指导哦!!!
学无止境,希望来个大神做我的明灯!!!后续继续学习将持续更新…