精准化测试之:jacoco实现增量代码覆盖率统计

精准化测试可解决的问题:

        根据代码变更确定用例范围

        更准确深入地覆盖被测业务

        白盒探索式测试

        从线上数据反推有效测试用例

字节码插桩目的

        1.获取执行时代码的调用链数据

        2.覆盖率是调用链的一种精简模式

jacoco能解决测试哪些问题?

        1.测试中帮助覆盖代码的所有逻辑

        2.监视研发的所有改动

        3.缩小测试范围,减少工作量.

1.被测项目的插桩操作

        1.插桩原理:

        2.两种插桩方式:1.on-the-fly模式(不需要停机,实时获取覆盖率,无需提前进行字节码插桩);                                          2.offline模式(需停机).

                on-the-fly:JVM中通过-javaagent参数指定特定的jar文件启动instrumentation的代理程序,代理程序在通过class loader装载一个class前判断是否转换为修改的class文件,将统计代码插入class,测试覆盖率分析可以在jvm执行测试代码的过程中完成.

                 offline:在测试前先对文件进行插桩,然后生成插过桩的class或者jar包,测试插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告.

3.增量代码覆盖率统计实现原理: 

4.精准化测试平台架构设计:

        1.获取用例执行时所调用的方法/类.:------>得到hashmap表

                1.jacco使用运行时插针的模式.

                2.执行(单条)用例,生成(单条)用例覆盖率统计情况,收集统计情况中被染色的代码方法,就

                        是用例的调用链涉及到的方法.

                3.将用例名与被染色的方法进行管理处理成hashmap表,hashmap格式:{用例名:调用链涉

                        及到的方法},存储在数据库中.

        2.git diff获取两个分支代码中的不同的行,然后根据AST抽象语法树特点查询到代码行所对应

                的方法/类.------?得到diff表

        3.根据方法名/类名查询hashmap表中对应的用例名,就可以知道需要执行哪些用例了.

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chuntian_tester

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值