1. 程式人生 > >JMeter 功能挖掘之 WEB 文件導出

JMeter 功能挖掘之 WEB 文件導出

web 構建 write 服務器 -a hot shell tester ads

前言

自從寫從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();
      }
   }}

JMeter 功能挖掘之 WEB 文件導出