背景

软件测试的最后有一道比较繁琐的工作,就是编写测试报告。手写测试报告在数据统计和分析上面要耗费比较大的事件和精力。之前工作室使用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

本文转自 Ron Ngai 博客园博客,原文链接:http://www.cnblogs.com/rond/p/3878505.html  ,如需转载请自行联系原作者

开源一个爬取redmine数据的测试报告系统相关推荐

  1. jsoup爬虫技术及爬取微博数据实例

    最近实现了一个爬取微博数据的小程序,借此对爬虫技术 jsoup的使用,以及实际开发过程中的细节进行总结. jsoup的jar包下载地址:https://jsoup.org/download 首先,对于 ...

  2. python爬取微博数据存入数据库_Python爬取微博数据并存入mysql,excel中

    寒假期间做微博数据统计,由于是部门要求,也没办法,自己又是一个懒人,直接用python实现吧.写的很粗糙,也很差,请大家别介意. 总的来说分成两个模块:一个爬取微博数据存入数据库,一个从数据库调取数据 ...

  3. python爬取网页数据软件_python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  4. 不会Python爬虫?教你一个通用爬虫思路轻松爬取网页数据,赶紧收藏!!

    前言 其实爬虫的思路很简单,但是对于很多初学者而言,看得懂,但是自己写的时候就不知道怎么去分析了!说实话还是写少了,自己不要老是抄代码,多动手! 其实一个爬虫无非就三步:下载数据.解析数据.保存数据. ...

  5. node爬取app数据_从零开始写一个node爬虫(上)—— 数据采集篇

    爬虫相信大家都知道,这里我们从一个空的文件夹开始,也来写一写我们自己的爬虫程序吧. github入口 下一篇--数据分析篇入口 爬虫毕竟涉及到数据的爬取,所以其实有一个道德的约束,那就是Robots协 ...

  6. 一个爬取沪深两市融资融券标的融资融券交易数据的小爬虫

    1.学习初衷 本着紧跟时代进步步伐,坚决不拖社会主义建设后腿的想法,紧赶大数据.数据分析.机器学习的趋势......当然,前面只是瞎扯了. 最后我综合考虑R跟Python,最终还是选择走上了pytho ...

  7. 口红送什么色号,这是一个难题,爬取口红数据,希望对你有所帮助

    前言 送女生礼物,口红永远是最好的选择.这一点只要看过李佳琪的直播间就能明白.唯一的问题是送什么色号. 所以本文爬取了京东商城上部分口红数据,希望对你选择口红有所帮助. PS:如有需要Python学习 ...

  8. 不会Python爬虫?教你一个通用爬虫思路轻松爬取网页数据

    前言 其实爬虫的思路很简单,但是对于很多初学者而言,看得懂,但是自己写的时候就不知道怎么去分析了!说实话还是写少了,自己不要老是抄代码,多动手! 本人对于Python学习创建了一个小小的学习圈子,为各 ...

  9. tushare正确爬取 指数数据

    相信很搞金融数据分析的人,都知道Tushare,一个免费.开源的python财经数据接口包.可以非常简单爬取股票.宏观经济数据.新闻时事.银行间同业拆放利率.甚至电影票房数据都可以爬取,比起国外的雅虎 ...

最新文章

  1. python学习之老男孩python全栈第九期_day002作业
  2. JDBC query VARRAY on DB level
  3. 固态硬盘Ghost安装Windows 10无法引导的问题
  4. 博客SEO文字转链接工具
  5. ubuntu 16.04 python3.4 升级为 python3.6
  6. 终端编译opengl程序编译运行_ubuntu – 通过SSH编写opengl代码,通过机器显示运行程序...
  7. python中用于生成数字序列的函数_Python中的生成器?
  8. SQL Sever数据库的基本操作和它的建立
  9. ftp下载工具绿色版,有没有好用且免费的ftp下载工具绿色版,有几款值得推荐?
  10. 轩辕传奇场景优化笔记
  11. TensorFlow卷积网络常用函数参数详细总结
  12. 7-45 连年 7-69 求婚
  13. cpu第几代计算机,赛扬G系列有几代cpu分别是
  14. WaaSMedicAgent是什么程序?又叫Windows更新医生服务
  15. 本人大一的课程设计,时间太长,代码可能有些许丢失,欢迎纠错
  16. r语言lm函数找不到对象_R语言错误的提示(中英文翻译)
  17. 什么是Google PR值? 如何提高PR值?
  18. Microbiome杂志和主编介绍
  19. html图片浮动特效
  20. 统计学名词解释 —— 1. 什么是「自由度(degree of freedom)」

热门文章

  1. 日期setHours()方法以及JavaScript中的示例
  2. 远控免杀专题(22)-SpookFlare免杀
  3. 远控免杀4---Evasion免杀
  4. 框架controller找不到_SpingBoot框架知识详解
  5. 二叉树题目----2 检查两颗树是否相同 和 对称二叉树的判定
  6. Linux系统编程---14(回收子线程,回收多个子线程,线程分离,杀死线程)
  7. HDU - 2973威尔逊定理
  8. Ubuntu下mongodb的安装与配置
  9. 从青铜到王者的路线,java不同系统间数据同步
  10. 算法题+JVM+自定义View,终局之战