• 15
  • 15
分享
  • 前端代码覆盖率工具JSCover的使用——软件测试圈
  • 曼倩诙谐 2021-09-15 10:15:43 字数 2898 阅读 2185 收藏 15

  一 JSCover简介

  JSCover是测试JavaScript的代码覆盖率工具,它是基于流行的JSCoverage工具开发的,通过在浏览器中执行之前向JavaScript代码中插桩实现的。JSCover提供三种方式来测试代码的覆盖率:服务器模式(web server mode),文件系统模式(file-system mode),代理服务器模式(proxy server mode)。JSCover是一个测试JavaScript代码覆盖率的免费工具,在https://sourceforge.net/projects/jscover/files/网站中下载JSCover工具,这里以JSCover-2.0.12.zip这一版本为例进行展开说明。

  二 解压文件并打开cmd命令窗口

  将下载的zip文件进行解压,如下图1所示。在解压的文件夹中路径显示框中输入“cmd”命令,回车后显示cmd命令窗口,如图2所示。这一步也可以通过win+r打开命令行窗口,然后通过cd命令将路径修改为解压后的JSCover-2.0.12文件夹。

1-1.png

图1 解压后的JSCover-2.0.12文件

1-2.png

图2 cmd命令窗口

  三 设置浏览器

  为了能导出报告,需要使用火狐浏览器,这里需要将火狐浏览器的”privacy.file_unique_origin”设置为false,具体的操作如下:

  1.在火狐浏览器的地址栏输入”about:config”并回车;

  2.在下图3所示的搜索框中输入“uniq”便会出现“privacy.file_unique_origin”的属性;

  3.双击“privacy.file_unique_origin”,便将“privacy.file_unique_origin”修改为false。

1-3.png

图3 火狐浏览器privacy.file_unique_origin属性界面

  四 调用代码覆盖率工具

  在cmd命令行中输入命令“java -jar target/dist/JSCover-all.jar -ws --document-root=doc/example  --report-dir=target”并回车,这样便打开了web服务器。其中:

  “-jar target/dist/JSCover-all.jar”这句命令:指定特定的jar包JSCover-all.jar,由于解压后的jar包文件路径相对于JSCover-2.0.12文件夹的路径是不变的,因此这句命令在使用的过程中不用改变,直接使用。

  “-ws”指定JavaScript脚本代码覆盖率的测试方式是web server mode,即网络服务器的方式。具体使用过程中还可以使用-fs的方式,即file-system mode(文件系统方式),采用文件系统模式的操作会有所不同,具体可参考http://tntim96.github.io/JSCover/manual/manual.xml#gettingStartedFileSystem

  “--document-root=doc/example”指定源文件所在的文件夹,这里可以使用绝对路径或者相对路径的方式来指定源文件所在的位置。以笔者这里为例:JSCover的文件夹路径是“D:\wechat_file\WeChatFiles\wxid_fqebf782xigp22\FileStorage\File\2021-08\JSCover-2.0.12”,所要测试的源文件所在的文件夹的路径是“D:\wechat_file\WeChatFiles\wxid_fqebf782xigp22\FileStorage\File\2021-08\JSCover-2.0.12\doc\example”,这里如果选择绝对路径表示这句命令是“--document-root=D:\wechat_file\WeChatFiles\wxid_fqebf782xigp22\FileStorage\File\2021-08\JSCover-2.0.12\doc\example”,如果用相对路径表示这句命令是“--document-root=doc/example”

  “--report-dir=target”命令是指定生成报告所在的位置,这里也可以使用绝对路径或者相对路径,我这里使用的是相对路径,生成报告的位置是“JSCover-2.0.12/target”。

  在火狐浏览器中输入“http://localhost:8080/jscoverage.html”,进入JSCover界面,如下图所示。

1-4.png

图4 JSCover界面

  五 收集覆盖率数据

  在图3 JSCover界面的URL输入框中输入“http://localhost:8080/index.html”,然后点击“Open in frame”按钮,这样便将doc/example中的index.html加载到JSCover的界面中,如下图所示。

1-5.png

图5 index.html加载到JSCover界面

  点击“Summary”按钮可以查看到此时script.js文件的代码覆盖率情况,如下图所示。

1-6.png

图6 代码覆盖率情况

  点击script.js,便可以查看到代码的具体执行情况,如下图所示,红色代表未执行的部分,绿色代表已经执行的部分,点击info会显示更多的未覆盖信息。

1-7.png

图7 代码的具体执行情况

  点击“Browser”按钮,回到index.html的界面,选择“One”,如图8所示会显示一些提示信息,然后再点击“Summary”,如图9所示,可以看到此时代码覆盖率相比于图6有所增加。

1-8.png

图8 Browser界面

1-9.png

图9 Summary界面

  点击“Browser”按钮,回到index.html的界面,依次选择“Two”、“Three”、“Four”,进入Summary界面发现代码覆盖率再次增加。

1-10.png

图10 选择“Two”后代码覆盖率情况

1-11.png

图11 选择“Three”后代码覆盖率情况

1-12.png

图12 选择“Four”后代码覆盖率情况

  此时代码覆盖率和函数覆盖率都达到了100%,分支覆盖率是87%,打开“Source”界面,点击info,显示一些提示信息,如图13所示。

1-13.png

图13 显示未覆盖的原因

  六 导出报告

  如图14所示,点击“Store”后再点击“Store Report”,此时就将报告保存在先前在cmd命令窗口中设置的文件夹中,点击“Stop Server”便关闭了服务器。注意导出的html文件的报告需要用火狐浏览器打开,使用其他浏览器打开的话会出现报告覆盖率数值异常。

1-14.png

图14 JSCover的Store界面

  

  参考:

[1]http://tntim96.github.io/JSCover/manual/manual.xml#gettingStartedServerReportStorage

[2]https://github.com/tntim96/



作者:刘芝付、冯瑶   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   继 PlayStation 5 Pro 的传闻之后,微软也加入了这一行列,预告将推出拥有"有史以来最大技术飞跃"的下一代 Xbox。这一令人兴奋的消息是在暗示将推出传统游戏机之外的独特 Xbox 硬件的同时发布的,其中可能包括传闻已久的掌上设备。  在 Xbox 官方播客中,Xbox 总裁莎拉-邦德(Sarah Bond)承诺下一代 Xbox 硬件将有重大进步:  我们还有更多精彩等着你,将在这个假期分享一些令人兴奋的硬件产品,并且还致力于下一代路线图。我们真正关注的是在新一代硬件中实现有史以来最大的技术飞跃,让玩家、创作者和他们正在构建的愿景都能得到更好的体验。  微...
            0 0 280
            分享
          • day11、安装了python3.8,我是windows系统,下载完之后直接打开安装即可2、安装完之后,打开cmd命令,敲入python,出现带有python版本号信息就算安装成功了3、>>>符号表示进入了python环境,输入exit()可以退出python环境安装Python - 廖雪峰的官方网站 (liaoxuefeng.com)
            0 0 902
            分享
          • 游戏测试是测试的一种,逃不开软件测试的魔爪。所以——游戏测试的目的:发现游戏中存在的缺陷。游戏测试分两种:大型网络游戏和手游。大型网络游戏网游一般大型的网络游戏中测试都分很多个阶段:前期测试:内部测试 内部封测 综合版本不对外测试 限量玩家内测中期测试:公开测试 不删号测试 不删号测试2期 免费公测后期测试:新版本公测 全面公测 正式公测 完全上线在测试中,主要是对以下方面进行测试。压力测试:包括服务器的承载能力、网络运行环境、数据库细分、并发量、最大负载等等。内容测试:一是游戏本身剧情、副本内容、交易系统等等;二是玩家交互,BUG的调整。手游手游的测试阶段相对来说简单一些,进行如下测试:安装...
            0 0 2062
            分享
          • 这篇将介绍 Cypress 如何生成测试报告Cypress 可以生成 XML 和 JSON 的测试报告文件,需要我们再生成可视化的报告在这里就介绍一下简单且好看的测试报告 mochawesome现在让我们来安装它吧``` npm install --save-dev mocha mochawesome mochawesome-merge mochawesome-report-generator ```接下里让我们做一下配置,我们在 cypress.json 配置报告生成器reportDir: 配置生成的 测试结果 JSON 文件目录o...
            0 0 3154
            分享
          • 摘要:多年的数字对讲机测试经验总结出一种“总分总”软件测试法(又称三步测试法),该测试方法基于传统软件测试过程V模型的右方集成测试、系统测试、验收测试阶段,结合现代软件测试过程,综合运用黑盒测试法、灰盒测试法、冒烟测试法、回归测试法、探索性测试法,并进一步尝试发散性思维测试。关键词:数字对讲机;软件测试;总分总测试法;三步测试法;BUG抓取自从工信部2009年666号文件《工业和信息化部关于150MHz 400MHz频段专用对讲机频率规划和使用管理有关事宜的通知》颁布拉开了对讲机模转数的序幕,国内企业经过几年的模转数的技术积累和产业结构调整,已有能力批量生产制造数字对讲机。随着微电子技术的发展...
            0 0 1223
            分享
      • 51testing软件测试圈微信