开源一个爬取redmine数据的测试报告系统
背景
軟件測試的最后有一道比較繁瑣的工作,就是編寫測試報告。手寫測試報告在數(shù)據(jù)統(tǒng)計和分析上面要耗費比較大的事件和精力。之前工作室使用mantis管理bug缺陷。公司有內部有個系統(tǒng),可以直接從mantis上面獲取數(shù)據(jù)并進行統(tǒng)計,生成一份測試報告。后來換了一個工作室,bug缺陷管理平臺也從原來的mantis 換成了redmine (http://www.redmine.org/?)。 然后走上了一條手寫測試報告的不歸路(測試人員前期還是推薦手寫測試報告的)。搞游戲的都知道,平時加班加點壓力就夠大的。急需一個接redmine的測試報告系統(tǒng)。
至此,交代完畢為啥要寫這么一個簡單的測試報告系統(tǒng)。
要求或者需求:
- 操作要足夠簡單
- 盡量獨立系統(tǒng)
開發(fā)技術:java/jsp
設計思路
數(shù)據(jù)來源:
照理來說,由于工作室內部自己搭的redmine,所以數(shù)據(jù)獲取應該可以直接讀取redmine 的數(shù)據(jù)庫就好了。我覺得這樣系統(tǒng)的依賴性較高,不夠獨立。而且問過接mantis 的測試報告系統(tǒng)的開發(fā),他們是直接從mantis 上面爬取數(shù)據(jù)的。所以最終,我也是直接從redmine上爬取數(shù)據(jù)的。
數(shù)據(jù)存儲:
由于測試報告系統(tǒng)一般就測試人員使用(特別是動態(tài)網(wǎng)頁),其他人頂多也就查看靜態(tài)的測試報告也沒而已。所以系統(tǒng)對性能要求不高。所以沒有使用數(shù)據(jù)庫軟件,我是直接用文本文件來記錄數(shù)據(jù)。有一個原因是因為我覺得用了數(shù)據(jù)庫,需要配置、部署數(shù)據(jù)庫,萬事都相對比較麻煩。反正沒啥性能要求,直接就用文本吧。
簡單架構
系統(tǒng)從遠端redmine爬取數(shù)據(jù),根據(jù)用戶選擇爬取某一個版本的數(shù)據(jù)。并且讀取測試報告模板和數(shù)據(jù)生成一份測試報告。并將測試報告發(fā)送給相應的人員和保存測試報告的靜態(tài)文件(用戶查看歷史測試報告)。
?
幾個核心問題和技術
- http請求——HttpClient
- 數(shù)據(jù)統(tǒng)計及圖片生成——JFreeChart
- 前端展示數(shù)據(jù)統(tǒng)計結果——Charts.js
- mail庫——mail
- 數(shù)據(jù)存儲——gson
爬取和過濾
爬取回來的是一個html文件,需要從html文件里面提取出需要的數(shù)據(jù),這里使用正則表達式提取。
數(shù)據(jù)統(tǒng)計
數(shù)據(jù)統(tǒng)計前端主要用Charts.js 來即時展示數(shù)據(jù)的結果。由于郵件里面的js是無效的。所以最終的統(tǒng)計結果用JFreeChart第三方庫轉換成圖片。
數(shù)據(jù)存儲
其實用的是文本存儲,所以用的就是java的文件的讀寫操作而已。使用到了gson是因為存儲的數(shù)據(jù)用了json格式。gson很好用。
發(fā)送郵件用的是mail.jar這個庫。至于這個庫為啥我不用密碼就能夠發(fā)生出去,我也不太清楚。這可能跟郵件供應商有關系。
另外由于發(fā)生郵件需要發(fā)送圖片,這里糾結了一番。如果圖片存儲在服務器,一旦服務器不正常(停電、斷網(wǎng)什么的),測試報告就顯示不了圖片了。那么可以考慮使用附件發(fā)送出去。但發(fā)送附件可能會被定為垃圾郵件。最后選擇將圖片轉換成數(shù)據(jù),直接寫入到html里面,解決噻~。下面是將圖片轉換成數(shù)據(jù)的源代碼。
/** 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?,結果爬取數(shù)據(jù)的時候報錯了。是因為我爬取一個表的時候,表結構不一樣。官方的remine 比我們工作室使用的redmine 在某個表少了一個字段。如果你也遇到了,可能需要改一下源代碼才能正常允許了。
例子
項目和版本選擇界面
測試報告編寫頁面
一個靜態(tài)的測試報告例子。直接點擊:http://www.veiyn.com/study/TestReport.html?可以查看。(點擊查看源代碼可以發(fā)現(xiàn)圖片是保存在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 #默認發(fā)件人 非必需 MAIL_TOS =name2@test.com|name3@test.com #默認收件人 非必需?
共勉之!
個人小博客原文地址:http://www.veiyn.com/?p=66
本文轉自 Ron Ngai 博客園博客,原文鏈接:http://www.cnblogs.com/rond/p/3878505.html??,如需轉載請自行聯(lián)系原作者
總結
以上是生活随笔為你收集整理的开源一个爬取redmine数据的测试报告系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux iptables 配置详解
- 下一篇: 实现离线加域---Windows2008