【厚积薄发系列】C++项目总结11—基于Python爬虫框架的Bug规范性检查系统

需求背景:

日常开发和集成测试期间由于团队的庞大,每天测试新建的Bug和开发关闭的Bug数量也比较多,难免有些测试提Bug时其描述不规范,或者开发关Bug时备注不规范。如果每天投入人力去全部过这些Bug是否规范势必是个繁琐而费时的体力活。因此基于爬虫框架的Bug规范性检查的出现很好的解决上面的问题。

基本流程:

本人以前所在的公司用的bug系统是JIRA,只要是web型的管理系统都是走爬虫,用python语言实现。

【厚积薄发系列】C++项目总结11—基于Python爬虫框架的Bug规范性检查系统

基本架构:

【厚积薄发系列】C++项目总结11—基于Python爬虫框架的Bug规范性检查系统

模块设计:

BugURL管理器:管理待抓取URL集合和已抓取URL集合(防止重复抓取、防止循环抓取)

【厚积薄发系列】C++项目总结11—基于Python爬虫框架的Bug规范性检查系统

URL下载器:是网络爬虫的核心,将JIRA系统中的Bug对应的URL对应的网页下载到本地。采用Requests是第三方库,比Urllib2更为强大。提供一些复杂的接口用于处理: 基本认证,重定向,Cookies等。

URL解析器:从Bug对应的网页中解析出需要检测的内容如Bug状态、Bug描述、Bug附件、Bug备注和嵌套的其他Bug URL等等。采用BeautifulSoupd的Python库来实现(提供结构化解析)。

【厚积薄发系列】C++项目总结11—基于Python爬虫框架的Bug规范性检查系统

合法性检查:主要是对测试和开发备注性的东西检查是否规范,每个项目组对测试提bug的规范性和开发关bug时备注的规范性都有不同要求,这些规则可以配置在数据库中或者配置文件中。再根据上面解析出来的备注等来做自然语言处理,判断是否符合规范。判断是否规范主要采用了两种方法,第一种就是专家规则方法,这种方法比较死板不够灵活;第二种采用机器学习的思想引入了Naive Bayes(朴素贝叶斯方法)+Word2Vec(词向量)来处理自然语言中近义词问题(后续出篇文章详细说Naive Bayes和Word2Vec)。

备注:如果是JIRA系统的bug库,可以采用JIRA的第三方python库来实现数据的获取,from jira import JIRA导入即可,很方便,详细使用说明:http://jira.readthedocs.io/en/master/。