通用技术 JMeter 功能挖掘之 WEB 文件导出

K米测试 · 2017年05月09日 · 最后由 blabla 回复于 2017年05月10日 · 1945 次阅读

前言

自从写从 0 构建自动化测试平台 (一) 之技术选型开始,在工作中 Get 新技能就非常想郑重的记录下来,方便自己查阅;相信很多人都有这种感触:平时问题解决后,没有及时记录,下次遇到类似问题,需要花同等的成本 (各种搜索) 去解决;与其后面劳心劳力,不如现在趁着这股热乎劲记录下来。

使用场景:

如上图,是 WEB 页面上有一个导出按钮,需要每周五导出本周的产品 BUG,对其进行数据分析,及时发现产品中存在的问题,针对问题能够及时提出解决方案,每周一次频率不算很高,但是想用自动化方法实现自动导出,有 2 个可选方案:JMeter 实现,Python 实现。由于 Python 实现也是要先抓包,干脆就先用 JMeter 先进行抓包并实现文件保存功能。

一句话描述需求:

JMeter 实现 WEB 端文件导出功能

实现思路:

  1. 登录系统;
  2. 跳转到对应的页面,点击导出 excel 按钮;
  3. 保存响应的内容;

详细实现:

  • 线程组添加录制控制器和 HTTP Cookie 管理器

  • JMeter 添加并启动代理服务器

  • 浏览器设置代理

  • 根据以上思路登录系统,访问到对应的页面,执行导出 excel 动作
    在 JMeter 的录制控制器中我们可以查看到对应录制的内容,我们只保留登录和导出 excel 对应的请求

  • 上面的导出 excel 请求是关键内容,我们需要将请求的内容进行保存,这里我们在这个请求中添加一个 BeanShell 的后置处理器:

  • 后置处理器中要实现的功能:获取请求的响应内容,保存到本地的 excel 文件,对应实现代码如下:

byte[] responseData = prev.getResponseData();
private String filePath = "/tmp/new-version.xls";
BufferedOutputStream bos = null;
FileOutputStream fos = null;
File file = null;
try {
   File file = new File(filePath);
   fos = new FileOutputStream(file);//不添加参数true,以非追加的方式添加内容
   bos = new BufferedOutputStream(fos);
   bos.write(responseData);
} catch (Exception e) {
   e.printStackTrace();
} finally {
   if (bos != null) {
      try {
         bos.close();
      } catch (IOException e1) {
         e1.printStackTrace();
      }
   }
   if (fos != null) {
      try {
         fos.close();
      } catch (IOException e1) {
         e1.printStackTrace();
      }
   }
}

相关说明:

  1. 这里我们使用 JMeter 的内置 API:prev.getResponseData() 获取请求的响应内容,详细使用方法请查阅:JMeter API
  2. BeanShell 是嵌入式的 Java 源代码解释器,执行标准 Java 语句和表达式,说白了就是 java 脚本。
  3. 笔者使用的是 JMeter3.1 版本。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 5 条回复 时间 点赞

微信图片跪了

图片已经挂掉了

花开 回复

已经更新,原来使用的是微信公众号的地址,现重新上传

wangpengfei100 回复

感谢反馈,已经处理。

看了 2 遍,终于大体看懂了,是通过 JMeter 实现一个 web 的导出功能

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册