開源一個爬取redmine數據的測試報告系統


背景

軟件測試的最后有一道比較繁瑣的工作,就是編寫測試報告。手寫測試報告在數據統計和分析上面要耗費比較大的事件和精力。之前工作室使用mantis管理bug缺陷。公司有內部有個系統,可以直接從mantis上面獲取數據並進行統計,生成一份測試報告。后來換了一個工作室,bug缺陷管理平台也從原來的mantis 換成了redmine (http://www.redmine.org/ )。 然后走上了一條手寫測試報告的不歸路(測試人員前期還是推薦手寫測試報告的)。搞游戲的都知道,平時加班加點壓力就夠大的。急需一個接redmine的測試報告系統。

至此,交代完畢為啥要寫這么一個簡單的測試報告系統。

要求或者需求:

  • 操作要足夠簡單
  • 盡量獨立系統

開發技術:java/jsp

設計思路

數據來源:

照理來說,由於工作室內部自己搭的redmine,所以數據獲取應該可以直接讀取redmine 的數據庫就好了。我覺得這樣系統的依賴性較高,不夠獨立。而且問過接mantis 的測試報告系統的開發,他們是直接從mantis 上面爬取數據的。所以最終,我也是直接從redmine上爬取數據的。

數據存儲:

由於測試報告系統一般就測試人員使用(特別是動態網頁),其他人頂多也就查看靜態的測試報告也沒而已。所以系統對性能要求不高。所以沒有使用數據庫軟件,我是直接用文本文件來記錄數據。有一個原因是因為我覺得用了數據庫,需要配置、部署數據庫,萬事都相對比較麻煩。反正沒啥性能要求,直接就用文本吧。

簡單架構

架構

系統從遠端redmine爬取數據,根據用戶選擇爬取某一個版本的數據。並且讀取測試報告模板和數據生成一份測試報告。並將測試報告發送給相應的人員和保存測試報告的靜態文件(用戶查看歷史測試報告)。

 

幾個核心問題和技術

  • http請求——HttpClient
  • 數據統計及圖片生成——JFreeChart
  • 前端展示數據統計結果——Charts.js
  • mail庫——mail
  • 數據存儲——gson

爬取和過濾

爬取回來的是一個html文件,需要從html文件里面提取出需要的數據,這里使用正則表達式提取。

數據統計

數據統計前端主要用Charts.js 來即時展示數據的結果。由於郵件里面的js是無效的。所以最終的統計結果用JFreeChart第三方庫轉換成圖片。

數據存儲

其實用的是文本存儲,所以用的就是java的文件的讀寫操作而已。使用到了gson是因為存儲的數據用了json格式。gson很好用。

mail

發送郵件用的是mail.jar這個庫。至於這個庫為啥我不用密碼就能夠發生出去,我也不太清楚。這可能跟郵件供應商有關系。

另外由於發生郵件需要發送圖片,這里糾結了一番。如果圖片存儲在服務器,一旦服務器不正常(停電、斷網什么的),測試報告就顯示不了圖片了。那么可以考慮使用附件發送出去。但發送附件可能會被定為垃圾郵件。最后選擇將圖片轉換成數據,直接寫入到html里面,解決噻~。下面是將圖片轉換成數據的源代碼。

 /*
     * Convert PNG to Base64
     * path the PNG path
     * */
    public static String getBase64Png(String path) throws Exception {
        String msg=”";
        try{ 
            BufferedImage image = ImageIO.read(new File(path));
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(image, ”png”, baos);
            msg = Base64.encode(baos.toByteArray());
 
        }catch(IOException e){
            e.printStackTrace();
        } 
        return msg;
    }

 

一個小問題

我直接將redmine 地址改成redmine官方地址http://www.redmine.org ,結果爬取數據的時候報錯了。是因為我爬取一個表的時候,表結構不一樣。官方的remine 比我們工作室使用的redmine 在某個表少了一個字段。如果你也遇到了,可能需要改一下源代碼才能正常允許了。

例子

項目和版本選擇界面

版本選擇界面

測試報告編寫頁面

編寫測試報告

一個靜態的測試報告例子。直接點擊:http://www.veiyn.com/study/TestReport.html 可以查看。(點擊查看源代碼可以發現圖片是保存在html里面的)

題外

源代碼:https://github.com/rondsny/TestReport/

記得使用的時候一定要先配置config.properties 文件:

PT_URL =http://www.redmine.org                              #redmine平台地址    必需
MAIL_HOST =mail.test.com                                         #郵件服務器地址      必需
MAIL_FROM =name1@test.com                                  #默認發件人   非必需
MAIL_TOS =name2@test.com|name3@test.com        #默認收件人   非必需

 

共勉之!

個人小博客原文地址:http://www.veiyn.com/?p=66


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM