使用EMMA获取Android测试覆盖率

发表于:2016-7-26 11:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:chichichichi    来源:51Testing软件测试网采编

  EMMA是一个Java代码测试覆盖率获取工具。尝试了一种使用EMMA获取Android测试覆盖率的方法,参考使用了 DynoDroid提供的方法,其原理是使用插桩与BroadcastReceiver,使得插桩后打包签名而成的APK运行时每次操作均发送信息给BroadcastReceiver,BroadcastReceiver中负责将覆盖率信息写到SD卡的名为coverage.ec的文件中。其一大优点为全程无需修改原APK的源码。
  Pre
  假定APK所在包为net.clasnake.project,工程主目录为/folder。
  Step 1 插桩
  首先下载EmmaInstrument.rar,解压后包含四个文件:
  EmmaInsrumentation.java
  FinishListener.java
  InstrumentedActivity.java
  SMSInstrumentedReceiver.java
  将文件夹EmmaInstrument复制到/folder/src下。 将上述四个java文件的包名修改为net.clasnake.project.EmmaInstrument,并令InstrumentedActivity继承自项目的主Activity。 然后修改AndroidManifest.xml,加入SMSInstrumentedReceiver、EmmaInstrumentationActivity:
  加入插桩标签,并允许写SD卡权限:
  Step 2 重编译、安装
  连接设备至adb,首先android update project更新项目,生成build.xml,以便使用ant。
  然后编译插桩版本:ant instrument。
  安装:ant installi。
  Step 3 测试
  启动插桩版本: adb shell am instrument net.clasnake.project/net.clasnake.project.EmmaInstrument.EmmaInstrumentation
  进行测试,结束后使用后退键退出应用。
  从设备中得到coverage.ec:adb pull /mnt/sdcard/coverage.ec
  从/folder/bin中得到coverage.em,该文件中包含了待测APP的结构信息,将其与coverage.ec放置同一目录下,然后生成覆盖率报告:
  java -cp ~/adt/sdk/tools/lib/emma.jar emma report -r html -in coverage.em,coverage.ec。
  在同目录下的coverage文件夹下生成覆盖率报告:
  
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号