- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
个人知识管理平台下共享资源的个性化推荐 王蕾 ? 2013 Sina Weibo. JAVA代码覆盖工具 大纲 代码覆盖的意义 1 JAVA常用覆盖工具 2 工具的工作原理 3 * 实例与问题 4 * 代码覆盖的意义 使用目的 发现手工/自动化测试的遗漏点,并补充case 作为手工测试、UT及qa自动化测试全面性的衡量标准 使用范围 RD使用衡量单测覆盖率 QA使用衡量测试覆盖率 使用方式 手工测试中,通过环境搭建使用覆盖率工具 持续集成中,通过hudson插件根据自动化执行情况生成覆盖率 自动化case开发中,通过eclipse的覆盖率插件使用 JAVA常用覆盖率工具 Emma、Cobertura、Jacoco JAVA常用覆盖工具 jacoco emma cobertura 原理 使用asm修改字节码 可以修改Jar文件、class文件字节码文件 基于jcoverage。基于ASM框架,对class 插桩 覆盖粒度 方法,类,行,分支和指令覆盖 语句、行、类、基本块、指令。无分支覆盖。 项目,包,类,方法的语句覆盖和分支覆盖 插桩 支持on-the-fly和offline的插桩模式 支持on the fly模式和offline 采用Offline模式,把统计代码插入编译好的.class文件 生成报告 在tomcat的catalina.sh中配置-javaagent参数,指出要采集覆盖率的文件。默认在shutdown时才能收集覆盖率数据。 html、xml、txt、二进制格式报表 生成HTML或xml报告 缺点 1、需要debug版本、并打开build.xml中的debug编译项 2、需要源代码。必须与插桩的代码完全一致 1、不能捕获测试案例中未考虑的异常 2、关闭服务器才能输出覆盖率信息的结果(已有修改源代码的解决方案,定时输出结果) 3、输出结果之前设置了hook,会与某些服务器的hook冲突。 4、Web测试中需要将cobertura.ser文件来回copy 性能 快 比较小 插入的字节码信息更多 执行方式 Ant/maven 命令行 maven,ant 或命令行 jenkins集成 生成html报告,直接与hudson集成,展示覆盖率报告。无趋势图 无法与hudson集成 有现成的插件,有美观的报告,并有趋势图 报告实时性 默认在shutdown时收集覆盖率数据;可动态从jvm dump出数据。 可以不关闭tomcat 就得到覆盖率报告 默认是在shutdown服务器时才写覆盖率文件 覆盖率基本概念 行覆盖率 度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。 类覆盖率 度量计算class类文件是否被执行 分支覆盖率 度量if和switch语句的分支覆盖情况。计算一个方法里面的总分支数,确定执行和不执行的分支数量。被执行(绿色方块) 方法覆盖率 度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。 指令覆盖 计数单元是单个java二进制代码指令。指令覆盖率提供了代码是否被执行的信息,度量完全独立源码格式。 圈复杂度 在(线性)组合中,计算在一个方法里面所有可能路径的最小数目。缺失的复杂度同样表示测试案例没有完全覆盖到这个模块 * 覆盖工具工作过程 工作过程 字节码插桩的过程 执行测试用例,收集程序执行轨迹的信息,将其dump出内存 数据处理:覆盖率信息分析计算的过程 数据显示:生成覆盖率报告的过程 On-the-fly插桩 (java agent) JVM中通过– javaagent参数指定特定的 jar 文件启动 Instrumentation 的代理程序。 代理程序在每装载一个class前判断是否转换修改class文件,将统计代码插入.class。测试覆盖率分析可以在JVM执行测试代码的过程中完成 典型代表:jacoco。 插桩原理 On-the-fly插桩:Class Loader 自定义classloader实现自己的类装载策略,在加载到JVM前修改字节码 典型代表:emma * 插桩原理 Offline插桩 在测试前先对文件进行插桩,然后生成插过桩的class或jar包,测试插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告。 offline插桩(Instrumentation)又分为两种: Repace:修改字
您可能关注的文档
最近下载
- 不同的拧紧策略的优缺点分析课件.pptx VIP
- 第三单元有趣的纸藤编织(课件)-五年级上册综合实践活动全国通用.pptx VIP
- 临床药物治疗学(本科).docx VIP
- 在办公用房权属统一登记工作动员会上的讲话.docx VIP
- ANSI ESD STM11.12-2021平面材料的体积电阻测量.pdf VIP
- 同济大学顾祥林-混凝土结构课后答案.pdf VIP
- 05人工智能技术的突破-大语言模型技术02.pptx VIP
- 安全文明施工方案.docx VIP
- 05人工智能技术的突破-大语言模型技术01.pptx VIP
- 矿井供电系统与井下供电安全培训课件PPT(共 51张).ppt VIP
文档评论(0)