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. Angular 相关概念

    1.XMLHttpRequest 对象(属于xmlJavascript) XMLHttpRequest 对象用于在后台与服务器交换数据. Ajax 是对XMLHttpRequest 的封装,XMLHt ...

  2. OpenCV: “vector”: 未声明的标识符和Vector不是模板

    漏写using namespace std: 会出现此错误“vector”: 未声明的标识符或者是将“vector”写成‘Vector’会出现Vector不是模板的错误:改正即可

  3. ModuleNotFoundError: No module named 'numpy.testing.nosetester'

  4. 跨站点请求伪造(CSRF、XSRF)

    相关文章: 1. http://www.cnblogs.com/xiaoqian1993/p/5816085.html  深入解析跨站请求伪造漏洞:原理剖析 2 .http://blog.csdn.n ...

  5. Centos7添加软链接

    1.pycharm添加软连接: 命令行模式中输入命令: ln -s /root/pycharm-2018.1/bin/pycharm.sh /usr/bin/pycharm ps:代码中/root/p ...

  6. [UOJ228] 基础数据结构练习题 - 线段树

    考虑到一个数开根号 \(loglog\) 次后就会变成1,设某个Node的势能为 \(loglog(maxv-minv)\) ,那么一次根号操作会使得势能下降 \(1\) ,一次加操作最多增加 \(l ...

  7. mysql 查询——逻辑查询

    --去重查询 distinct select distinct gander from student; --逻辑查询 and or not --查询18-28之间的数据 select *from s ...

  8. python os 模块详解

    os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd:得 ...

  9. FineUIPro/Mvc/Core v6.1.0 发布了!

    FineUIPro/Mvc/Core v6.1.0 正式发布了(2019-12-25),这个版本主要是BUG修正,并增加了一些新特性,建议升级到此版本. 在列举新版本特性之前,我们先来回顾下每次发布大 ...

  10. OPC通信原理在数采中的应用

    OPC通信原理在数采中的应用 OPC是Object Linking and Embedding(OLE)for Process Control的缩写,它是微软公司的对象链接和嵌入技术在过程控制方面的应 ...