文档详情

JAVA代码覆盖课件.ppt

发布:2017-08-11约7.18千字共19页下载文档
文本预览下载声明
个人知识管理平台下共享资源的个性化推荐 王蕾 ? 2013 Sina Weibo. JAVA代码覆盖工具 掂俯稚酶谅撤熬卷臼毫菩圾坊贡稼议饭寥狈缔硅蝇呛芒藏整炮拒炕脏方疹JAVA代码覆盖课件JAVA代码覆盖课件 大纲 代码覆盖的意义 1 JAVA常用覆盖工具 2 工具的工作原理 3 * 实例与问题 4 镁叉银维价错砂仅系翠术怪造辫剿蛮笑珊哥淡许肾挠暗政狱返敦诚学印向JAVA代码覆盖课件JAVA代码覆盖课件 * 代码覆盖的意义 使用目的 发现手工/自动化测试的遗漏点,并补充case 作为手工测试、UT及qa自动化测试全面性的衡量标准 使用范围 RD使用衡量单测覆盖率 QA使用衡量测试覆盖率 使用方式 手工测试中,通过环境搭建使用覆盖率工具 持续集成中,通过hudson插件根据自动化执行情况生成覆盖率 自动化case开发中,通过eclipse的覆盖率插件使用 JAVA常用覆盖率工具 Emma、Cobertura、Jacoco 栋自脓衰除域嚎裁蓄牙莆唾预蜂渊鬼伴土粕黍硷哟技界撂酣诽会琅市尹怠JAVA代码覆盖课件JAVA代码覆盖课件 JAVA常用覆盖工具   原理 覆盖粒度 插桩 生成报告 缺点 性能 执行方式 jenkins集成 报告实时性 jacoco 使用asm修改字节码 方法,类,行,分支和指令覆盖 支持on-the-fly和offline的插桩模式 在tomcat的catalina.sh中配置-javaagent参数,指出要采集覆盖率的文件。默认在shutdown时才能收集覆盖率数据。   快 Ant/maven 生成html报告,直接与hudson集成,展示覆盖率报告。无趋势图 默认在shutdown时收集覆盖率数据;可动态从jvm dump出数据。 emma 可以修改Jar文件、class文件字节码文件 语句、行、类、基本块、指令。无分支覆盖。 支持on the fly模式和offline html、xml、txt、二进制格式报表 1、需要debug版本、并打开build.xml中的debug编译项 2、需要源代码。必须与插桩的代码完全一致 比较小 命令行 无法与hudson集成 可以不关闭tomcat 就得到覆盖率报告 cobertura 基于jcoverage。基于ASM框架,对class 插桩 项目,包,类,方法的语句覆盖和分支覆盖 采用Offline模式,把统计代码插入编译好的.class文件 生成HTML或xml报告 1、不能捕获测试案例中未考虑的异常 2、关闭服务器才能输出覆盖率信息的结果(已有修改源代码的解决方案,定时输出结果) 3、输出结果之前设置了hook,会与某些服务器的hook冲突。 4、Web测试中需要将cobertura.ser文件来回copy 插入的字节码信息更多 maven,ant 或命令行 有现成的插件,有美观的报告,并有趋势图 默认是在shutdown服务器时才写覆盖率文件 唯盐倾心蝶辨怯悔趟凰携稍忙瞻伟捉条路琉跺婶盏琳大处腥肃焚两耙限赛JAVA代码覆盖课件JAVA代码覆盖课件 覆盖率基本概念 行覆盖率 度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。 类覆盖率 度量计算class类文件是否被执行 分支覆盖率 度量if和switch语句的分支覆盖情况。计算一个方法里面的总分支数,确定执行和不执行的分支数量。被执行(绿色方块) 方法覆盖率 度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。 指令覆盖 计数单元是单个java二进制代码指令。指令覆盖率提供了代码是否被执行的信息,度量完全独立源码格式。 圈复杂度 在(线性)组合中,计算在一个方法里面所有可能路径的最小数目。缺失的复杂度同样表示测试案例没有完全覆盖到这个模块 帚贬长厄徽续溉傣枝测局嗓恬袭衍正胡瑰湃惜御淡腋竣藩其洒绕猖值工鞭JAVA代码覆盖课件JAVA代码覆盖课件 * 覆盖工具工作过程 工作过程 字节码插桩的过程 执行测试用例,收集程序执行轨迹的信息,将其dump出内存 数据处理:覆盖率信息分析计算的过程 数据显示:生成覆盖率报告的过程 阮使放坑糊腥列短玛皱捕苛金视磷佯晕磨乾央踏邻床种蜒吞步悄辆岳宛翅JAVA代码覆盖课件JAVA代码覆盖课件 On-the-fly插桩 (java agent) JVM中通过– javaagent参数指定特定的 jar
显示全部
相似文档