关于Coco

Coco分析应用程序的运行方式,例如作为测试套件的一部分。然后,可以据此使测试更有效率、更完整。特别是,Coco有助于

  • 找到未测试的代码部分。
  • 找到冗余测试并随后消除它们。

    Coco可以确定哪些源代码部分由测试覆盖。它可以检测是否存在新测试可覆盖现有测试未能覆盖的源代码行。

  • 通过显示从未执行的代码来找到死代码。
  • 计算最优测试执行顺序,以最大化每次运行的测试覆盖率。

    这对于手动测试特别有用。

  • 分析应用程序的两个独立版本并比较差异。

    这使得能够看到受源代码修改影响的测试,并获取补丁或热修复的测试覆盖的一些度量标准。

  • 测量程序和测试的执行时间。
  • 使用遗传算法自动发现新的测试数据行

Coco可用于测试的所有阶段和所有测试方法(例如单元测试自动测试手工白盒测试黑盒测试等)。可以将测试套件划分为独立的零件:Coco允许将多个执行报告合并为一个单一的统一报告。

Coco程序包的主要组件是两个单独的工具和一个插件

  1. CoverageScanner – 一个分析并仪器化Tcl、QML、C#和C/C++应用程序的程序。
  2. CoverageBrowser – 一个显示和管理覆盖率分析结果程序的程序。
  3. Visual Studio Coco Wizard – 可选插件,用于配置使用Microsoft® Visual Studio®和类似IDE开发的C#或C++项目的代码覆盖率。

还有几个用于报告生成、覆盖率数据操作和许可管理的辅助程序。

Tcl、QML、C#和C/C++的代码覆盖率工具链概述

覆盖率扫描器 - 构建过程中的一个功能

覆盖率扫描器不对原始代码进行任何修改,仅对编译器能看到的源代码进行 instrumentation。它生成一个instrumented可执行文件、共享库插件。instrumentation会跟踪执行的可执行文件或在库或插件被使用时的代码。这使得能够测量例如每行执行次数或者是否执行过某一行。当instrumented程序终止时,它会产生一个执行报告。

为了获取高质量的覆盖率测量结果,覆盖率扫描器不仅在函数和语句级别进行instrumentation,还记录语句覆盖率和决策覆盖率信息。另一种instrumentation支持代码执行时间的测量。

可选地,可以将测试名称和执行状态(例如通过失败)插入到报告中。这可以通过脚本或直接从应用程序中进行。然后,覆盖率扫描器可以集成到测试框架(如CppUnitCxxTest)中,为每个测试生成单独的覆盖率信息。

覆盖率扫描器是一个命令行工具,可以替代用于构建可执行文件、库或插件的默认编译器。它将特殊的instrumentation指令插入预处理后的源代码,然后使用原始编译器编译修改后的代码。同时,会生成一个数据库(.csmes文件),用于后续分析。它包含instrumentation列表和instrumented源代码副本。

在编译后,可以像往常一样运行instrumented可执行文件(或者可以使用访问它们的程序使用instrumented库或插件),但现在,当程序终止时,会生成一个执行报告(.csexe文件)。

覆盖率扫描器可以与几乎任何标准编译器配合使用,包括GNU gcc、GNU g++、clang、clang++、Microsoft Visual Studio 6.0Express嵌入式C++和Intel® C++。对于大多数其他编译器,可以通过配置轻松使用覆盖率扫描器

注意:覆盖率扫描器具有对Qt框架的内建支持,这使得能够禁用元对象编译器(moc)生成的代码的instrumentation。

覆盖率浏览器 – 查看、分析和管理代码覆盖率结果

可以使用覆盖率浏览器工具分析和管理在.csexe文件中的执行报告。此程序具有GUI(图形用户界面),用户可以通过它来浏览和管理他们的执行报告。这使得定位未测试或无法访问的代码以及低效的测试变得简单。

覆盖率浏览器的功能摘要

  • 向instrumented源代码行添加注释。
  • 树视图中显示执行列表。
  • 将代码部分标记为手动验证,这部分代码无法进行测试。
  • 浏览instrumented代码。
  • 在覆盖级别之间切换:决策覆盖、条件覆盖和语句块覆盖。
  • 显示instrumentation状态的详细说明。这包括
    • 用户注释。
    • 每个instrumented语句的状态:已执行、未执行、部分执行。
    • instrumented语句执行的次数。
    • 一个列表,列出所有已执行程序化语句的测试。
  • 自动化测试套件中检索执行状态。
  • 单元测试进行代码覆盖率分析。
  • 将结果导出到电子表格
  • 一个测试收益分析模式使您能够看到一系列测试添加了哪些额外的代码覆盖率。
  • 源代码和功能浏览器,它显示每份文件、每个类、每个命名空间以及每个Tcl、QML、C#和C/C++函数的代码覆盖率统计。
  • 生成HTML格式的报告。它包括按源文件、方法和执行统计数据,以及未执行代码行的列表。
  • 支持黑盒测试
  • 有能力比较不同版本的软件的覆盖率数据

CoverageBrowser - 代码覆盖率

Coco v7.2.0©2024 The Qt Company Ltd.
Qt及其相关标志是芬兰以及/或全球其他国家的The Qt Company Ltd.的商标。所有其他商标均为相应所有者的财产。