1. 概述

    1. 使用 idea 自带的 code coverage 工具
  2. 背景
    1. 了解 白盒测试用例设计 和 测试覆盖率 之后, 大概就需要 实践 了
    2. 实践的话, 还是需要 工具 来检验效果
  3. 工具选取
    1. 选项

      1. JaCoCo
      2. IDEA Code Coverage
    2. 结果
      1. 两个都想试试

        1. 先看看 IDEA CC, 这个比较简单
        2. JaCoCo 感觉更加复杂
          1. 指标
          2. 使用的场景都更加复杂
      2. 先讲 IDEA Code Coverage
        1. 简单
        2. Idea 自带, 集成方便

1. 准备

  1. 理论基础

    1. 白盒测试用例设计
    2. 测试覆盖率
  2. 环境
    1. os

      1. win 10
    2. ide
      1. idea 2018.2
    3. 组件
      1. java

        1. jdk8
      2. testng
        1. 6.14.3
      3. maven
        1. 3.6.0
  3. 代码
    1. maven architecture

      1. quickstart
  4. 其他
    1. idea 插件

      1. coverage

        1. 这个一定要有
        2. 有了, 一定要打开
        3. idea 添加插件, 我就不讲了
    2. testng 的配置文件
      1. 这个我也不细讲了

        1. 自动生成配置文件的插件, 我之前讲过
        2. 配置文件里一些主要的配置, 我也讲过

2. 触发

  1. 概述

    1. 通过 执行测试, 触发 Coverage 插件
  2. 步骤
    1. 执行测试

      1. 进入某个测试类

        1. 比如 maven 工程自带的 AppTest 类
      2. 执行测试
        1. 在 类 中右键
        2. 选择 'Run Apptest with Coverage'
      3. 当然, 执行方式有很多
        1. 方法
        2. 配置文件
  3. 结果
    1. 测试执行完毕
    2. 默认在 idea 右边, 弹出一个 coverage 的插件
  4. 问题
    1. 如果没有出现怎么办

      1. 这个需要确认这些东西

        1. 插件是否下载
        2. 插件是否激活
        3. coverage 视图是否激活
          1. File > Settings > Build, Execution, Deployment > Coverage

            1. Active coverage view 选项

              1. 记得打钩

3. Coverage 视图简单介绍

  1. 概述

    1. 简单说下视图里的内容

      1. 其实没啥好说的, 操作两下, 就明白了
  2. 标签
    1. 标题

      1. 你执行 测试, 所对应的 Configuration

        1. 这意味着, 你又可以有地方调参数了...
    2. 左边一列的操作
      1. 向上
      2. 平铺展示
      3. coverage 视图焦点, 控制代码展示窗口
      4. 代码展示窗口, 控制 coverage 视图焦点,
      5. 生成报告
        1. 选择 文件路径, 生成报告
        2. 报告内容, 并不会很多
        3. 自己看看, 就明白了了
      6. 关闭视图
    3. 表格内容
      1. 元素

        1. 包或者文件
      2. class, %
        1. 类覆盖率
      3. method, %
        1. 方法覆盖率
      4. line, %
        1. 行覆盖率
    4. 表格交互
      1. 单击包

        1. 进入 包内, 并展示包内覆盖率
      2. 单击类
        1. 代码会跳转的类, 并且会聚焦到没有覆盖的位置

4. 代码区域

  1. 概述

    1. 执行 带覆盖率的测试 后, 代码区域也会发生变化
    2. 我这边默认是的 coverage 模式是 simpling
      1. 所以我先按照这个讲...
  2. 代码窗口
    1. 侧边栏

      1. 色块

        1. 红色

          1. 没有覆盖
        2. 绿色
          1. 覆盖至少一次
        3. 黄色
          1. 条件覆盖不充分
        4. 鼠标点击颜色
          1. 会出现 浮动的小窗
          2. 没啥前端背景, 所以这些东西准确叫啥, 真的让我很为难
      2. 浮动小窗
        1. 顶部控件

          1. 上下

            1. 在色块之间上下移动
          2. 灰色文件夹
            1. 暂时不可用, 后来再讲
          3. 字节码展示
            1. 开启新的小窗口, 展示 字节码

              1. 高端功能暂时用不了
          4. 颜色设置
            1. 这个暂时用不了

              1. 默认颜色挺好的
          5. 红叉
            1. 这个不是退出标签
            2. 这个是清楚这一轮的覆盖率数据
              1. 点的时候请注意
            3. 退出的话, 直接鼠标在别处点一下, 就行了

5. Project 区域

  1. 概述

    1. Project 区域的覆盖率展示
  2. 惊喜
    1. 眼睑的同学, 已经有了新的发现

      1. Project 栏里的包树形图, 右侧已经出现了一些关于 覆盖率的信息

        1. package

          1. 类覆盖率
          2. 行覆盖率
        2. class
          1. 方法覆盖率
          2. 行覆盖率
  3. 疑问
    1. 问题1: 我不想要这东西, 有办法吗?

      1. 当然有啦

        1. 路径

          1. ctrl + alt + f6
          2. Analyze > show coverage data
        2. 操作
          1. 勾选你想要显示 覆盖率的路径
          2. 然后确定

6. configuraion 配置

  1. 概述

    1. 覆盖率这个东西, 也是可以配置的
  2. 路径
    1. 打开 run configuration
    2. 找到你执行测试的那个 configuration
    3. 切换到 coverage tab
  3. 选项说明
    1. choose coverage runner

      1. 现在用 idea
      2. 讲 jacoco 的时候, 应该要换的
    2. sampling & tracing
      1. 模式

        1. 针对 idea 的选项
        2. 其他 runner, 只有 sampling
      2. sampling
        1. 简单模式

          1. 就是上面讲的东西
      3. tracing
        1. 追踪模式

          1. 概述

            1. 会对 判定 做更细致的追踪
          2. 变化
            1. 后面会描述
    3. packages and classes to record coverage data
      1. 概述

        1. 追踪覆盖率的类
      2. 建议
        1. 最好勾选一下

          1. 如果默认的话, 所有的包都会出现在 coverage 那个窗口里

            1. 虽然没 覆盖率, 但是看着好烦的...
  4. tracing 模式的变化
    1. 概述

      1. tracing 模式有所增强
    2. 增强内容
      1. 对 if 的判断, 有了增强

        1. 会统计 if 里 各个条件 真假执行次数
    3. 具体表现
      1. 单击 左侧的色块

        1. if 条件那行, 会有更加明确的信息
    4. 选项: track per test coverage
      1. 概述

        1. 追踪测试方法
      2. 回顾
        1. 之前色块的小弹窗里, 有个不可执行的灰色文件夹, 还记得吗?
      3. 勾选之后
        1. 单击那个 灰色文件夹

          1. 有新弹窗出现
          2. 内容是 执行这个代码的 测试方法
        2. 感觉是个 很不错的功能
  5. 问题
    1. 尝试配置修改中, 我有过多次执行同一个 configuration

      1. 执行完后, 会有一个弹窗

        1. 看得我一脸懵逼

          1. 这玩意是什么鬼, 能设置吗?o
      2. 当然能啦

7. settings 配置

  1. 概述

    1. settings 里的配置
  2. 路径
    1. 开始提到过的一个路径

      1. File > Settings > Build, Execution, Deployment > Coverage
  3. 配置
    1. when new coverage is gathered

      1. 概述

        1. 配置 新的覆盖率 是否聚合
      2. 选项
        1. active coverage view

          1. 概述

            1. 展示 coverage 窗口
          2. 作用
            1. 执行 run test with coverage 时, 展示 coverage 窗口
          3. 这次一定要先讲下面这个...
            1. 首先要窗口出现, 才能出发后面的东西吧
        2. 一个 radio
          1. 选项

            1. show options before applying coverage to the editor

              1. 已经弹出 coverage 视图后, 再次执行, 会弹出一个 选项框

                1. 询问的选项, 就是下面三种
            2. do not apply collected coverage
              1. 丢弃 这次的 代码覆盖率结果
            3. replace active suites with the new one
              1. 丢弃 上次的 代码覆盖率结果
              2. 将 这次的 代码覆盖率结果, 填充到 coverage 窗口
            4. add to the active suites
              1. 保留 上次的 代码覆盖率结果
              2. 将 这次的 代码覆盖率结果, 叠加到 coverage 窗口
          2. 问题
            1. 大部分时候都好用, 但是碰到过几次失灵的情况

              1. 直接用了 选项3
              2. 问题需要我 确认
    2. java coverage
      1. 选项

        1. 不统计 普通类 的默认构造函数

          1. 统计也没啥意义
        2. 不统计 工具类 的私有构造函数
          1. 工具类不需要实例化

            1. 所以通常做一个 私有构造, 防止有开发把这个类实例化
      2. 解释
        1. 这来选项我就翻译一下, 意义就不解释了, 大家应该都懂

ps

  1. ref

    1. Code coverage

      1. 官方文档

        1. 就这一个吧, 其他的基本是自己边尝试边整理
  2. 后续
    1. jacoco

      1. ide
      2. maven
      3. jenkins
  3. 为啥不直接讲 jacoco
    1. jacoco 其实有点复杂

      1. 数据
      2. 配置
    2. idea 简单好理解
    3. 两者有些东西, 本质上是相通的
      1. 理解了简单的 idea, 后面依葫芦画瓢, 学习曲线会更加平滑
  4. 遗漏
    1. 生成的结果报表

      1. 这个不太难, 基本都能看懂

测试工具 - IDEA - IDEA Code Coverage的更多相关文章

  1. 代码覆盖率 (Code Coverage)从简到繁 (一)

    代码覆盖率(Code Coverage)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标.它也是对测试工作进行量化的重要指标之一,测试工作往往不如开发那样激动人心,一个重 ...

  2. 覆盖率测试工具gcov的前端工具_LCOV

    http://my.oschina.net/alphajay/blog/33725 1.Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候 ...

  3. Qt代码覆盖率code coverage(VS版)

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt代码覆盖率code coverage(VS版)     本文地址:http://techi ...

  4. iOS代码覆盖率测试工具

    基于lcov-1.11的:CodeCoverage4iOS   阅读目录 环境准备 Xcode工程配置 构建并安装程序 收集代码覆盖率 过滤结果 合并多个Coverage.info⽂件⽣成覆盖率报告: ...

  5. Android高手速成--第四部分 开发工具及测试工具

    第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson ...

  6. Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

    一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...

  7. 网站性能Web压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: wget http:/ ...

  8. Linux压力测试工具

    1 http_load:http://www.oschina.net/p/http_load 命令行输入man http_load 或者 http_load -h可以看到工具的使用方式: 参数说明: ...

  9. Python渗透测试工具合集

    摘自:http://www.freebuf.com/tools/94777.html 如果你热爱漏洞研究.逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言.它包含大量实用的库和工具, ...

随机推荐

  1. 条件锁Condition

    """设计场景:timo先说一句,亚索再说一句timo: timo队长正在待命yasuo: 面对疾风吧timo: timo整装待发yasuo: 哈杀gay "& ...

  2. google protocol 入门 demo

    ubunbu系统下google protobuf的安装 说明: 使用protobuf时需要安装两部分: 第一部分为*.proto文件的编译器,它负责把定义的*.proto文件生成对应的c++类的.h和 ...

  3. PHP程序员应该如何提升

    PHP程序员应该如何提升 尤其不认可W3school之类的东西,不够深度,理解不深,比起这个更建议看官方文档,中文不清楚,看英文的. 入门视频:入门视频推荐:哈佛大学公开课:构建动态网站Beginne ...

  4. re正则匹配模块_python

    一.re模块 1.模块功能 通过re模块的接口接入正则表达式语言,主要用于匹配字符串. 2.正则表达式元字符以及意义 . 代表任意一个字符(除了换行符\n) ^ 以什么开头 $ 以什么结尾 * 重复匹 ...

  5. 如何在Word中排出漂亮的代码,去除回车符,去除拼写检查

    这位博主写到很到位,这里补充一下在VBA里用模块的部分. https://blog.csdn.net/code4101/article/details/41802715 1.放代码的方式是贴纯文本. ...

  6. 【网站】Kiwi浏览器中文网

    2020年1月1日上线 访问地址:http://huangenet.gitee.io/kiwibrowser/

  7. C++中类成员变量的初始化问题

    C++11之后允许对非静态成员变量进行初始化(in-class initialization),不过对于非fundamental(非基本数据)类型需要采用的是initializer_list来实现的 ...

  8. 第三篇,ajax 和 axios、fetch的区别

    1.jQuery ajax $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () ...

  9. centOS7中启动MySQL数据库提示: Failed to start mysqld.service: Unit not foundc

    现象: 在centOS7中启动MySQL数据库提示: Failed to start mysqld.service: Unit not found [明明已经安装了,为什么提示不存在呢?] 原因: 在 ...

  10. MODBUS TCP/IP协议规范详细介绍

    1.该规范的发展概况                                    原始版本1997年9月3日作为公共评论的草案.     再版1999年3月29日,即修订版1.0.     ...