『软件测试』GitHub_Crawler Test

项目需求:

抓取 awesome-java 所提到的上榜项目,统计每个项目的活跃度(star,fork,opened_issue),并按照活跃程度排序,最终以柱状图形式展示。

项目流程

①抓取模块:获取服务器网页上的内容

预期:抓取到Awesome_Java页面内容
实际:Awesome_Java页面内容被提取
分析:模块功能正确

②分析模块:分析网页内容,解析出需要的数据

预期:抓取每个项目的star、fork、opened_issue数
实际:成功获取star、fork、opened_issue数
分析:模块功能正确

③存储模块:将数据存储到数据库

预期:数据成功保存到数据库
实际:出现异常
分析:当前出现异常的url对应的不是一个GitHub项目。之前将不是GitHub项目的url放入了黑名单中了(但是没有放干净)。
解决方案:在抓取过程中,任何一个项目异常的出现都不要影响后面项目的抓取。用try catch 把抓取的循环包裹住。

性能优化:此时程序执行消耗大量时间。进行测试找到性能瓶颈。

寻找瓶颈:给代码每个环节加了一个时间戳,打印出每个环节消耗时间,发现性能最差的就是循环调用Github API 。大量的时间都消耗在了等待服务器响应上了。一次服务器响应的时间是固定的。
解决方案:使用多线程方式提高效率

④展示模块:通过一个网页来展示这些抓取到数据的信息

预期:获取到数据,展示图标
实际:展示成功
分析:模块功能正常

『软件测试』GitHub_Crawler Test

总结

经过测试,获取到GitHub上Awssome_java中上榜的项目,并将项目根据活跃度以柱状图展示。我们可以快速衡量出一堆代码中,哪些项目是比较活跃,受关注度比较高的啦~