为了练习Jmeter的使用,今天我要测试的场景是“登录--上传--下载--登出”这样一个过程.
测试的目标是我曾经练手写的一个文件分享系统,它要求用户只有登录后才可以下载想要的文件。
Jmeter总体结构:
第一步:添加HTTP Cookie管理器
为了能够维持登录状态以便后续操作,需要向Jmeter添加一个HTTP Cookie管理器。添加后无需配置就可以。
第二步:添加HTTP提取器(登录)
添加响应断言和观察结果树
第三步:添加HTTP提取器(上传)
因为这个待测系统上传文件的同时还要求携带一些其他参数,因此需要配置两个地方,如下两图所示:
添加响应断言和查看结果树:
第四步:添加HTTP提取器(下载)
为了简化,地址固定了.
由于Jmeter不能直接下载文件,我们需要使用Beanshell后置处理器并编写一些Java代码来协助下载,如下图:
代码如下:
import java.io.*;
byte[] result = prev.getResponseData();
String file_name = "D:/m1/picture_${__time(,)}.jpeg";
vars.put("filename",file_name);
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();
为了判断文件是否下载成功,添加一个Beanshell断言(我看很多其他教程是没有这个功能的,我这个算是首创吗,哈哈)
代码:
import java.io.File;
File file=new File("${filename}");
if(file.isFile()){
log.info("get file");
Failure=false;
}
else
{
Failure=true;
log.info("no file");
}
第五步:添加HTTP提取器(登出)
添加一个断言和查看结果树
运行结果
真正的项目中,登录一般用的都是HTTPS协议,所以应该获取证书才行(这类教程CSDN上有,自己搜搜就行).本篇由于条件所限,只能拿HTTP练习.