JavaScript覆盖率测试工具
目前开源的大家常用的JS覆盖率收集工具有主要有下面两种。
- JsCover
- Istanbul
参考资料:
-
JsCover:
- http://tntim96.github.io/JSCover/
- https://github.com/tntim96/JSCover
- Istanbul
https://github.com/gotwarlost/istanbul
对比
分类 | 要素 | JsCover | Istanbul |
覆盖率 | statement | × | ● |
line coverage | ● | ● | |
condition coverage | ● | × | |
branch coverage | ● | ● | |
function coverage | ● | ● | |
対象 | Javascript file | ● | ● |
html file | × | × | |
其他工具支持情况 | HtmlUnit | ● | × |
WebDriver | ● | × | |
PhantomJS | ● | × | |
Selenium | ● | × | |
Ant | ● | × | |
Jenkins | ● | × | |
单元测试工具的支持情况 | Junit | ? | ● |
Jasmine | ● | ● | |
Qunit | ● | ? | |
Node.js | ? | ● | |
Mocha | ● | ● | |
RequireJS | ● | ? | |
license | GNU | BSD |
覆盖率收集过程:
1. js文件进行注入
2.执行测试(手动,自动)
3.统计覆盖结果,并生产报告
JsCover介绍
支持两种注入方式,运行时注入(on the fly)和事前注入。
运行时注入提供了2中方式:
- 启动JSCover,发布在jscover服务的web应用的js都可以注入和覆盖率收集。(请参考,jscover官方资料看。)
1)命令1:java -jar xx\xx\JSCover-all.jar -ws --document-root=doc/example --report-dir=target
2)Web浏览器里打卡:http://localhost:8080/jscoverage.html
3)查看覆盖率结果:
2.代理方式进行注入。代理方式的意思就是说,你的web可以发布在自己的服务中而不是jscover服务里。但是通过jscover服务做的代理访问你的web站点时就可以收集覆盖率。
1)修改本地代理
2)启动代理服务
命令:java -jar JSCover-all.jar -ws --proxy --port=3128 --report-dir=target
3)host文件修改(参考jscover资料)
4)被测试对象web服务启动(例如:http://172.1.2.3:8000/)
5)打开浏览器,输入:http://172.1.2.3:8000/jscoverage.html
6)在浏览器显示画面,url 输入框:输入实际要测试的地址。
7)【summary】画面可以看到报告
事前注入提供了方式:可以用于web系的自动化测试,收集覆盖率
- 先给js文件注入 :java -jar JSCover-all.jar -fs origin dest
- 注入后的js发布到web服务上
- 测试
- 使用AP获取json文件。
-
生成的json放知道coverage报告的文件夹下。修改jscoverage.js文件。
- jscoverage.html打开看结果。
istanbul
on the fly方式注入、适用于UT测试,FT测试收集覆盖率不太能用,暂时还没有找到好办法。
原理:
如何使用:
- 直接执行 js文件:istanbul cover xxxjs
- 通过执行UT测试方式: istanbul cover _mocha // _mocha是mocha 启动UT测试用例的UT运行工具。
- UT运行工具运行时顺便采集覆盖率。UT执行工具的配置文件里面配置上 istanbul的参数。具体根据UT运行工具来定。不懂百度