覆盖率浏览器 Windows

执行情况

此窗口在黑盒和白盒测试模式下都存在。它显示所有已完成的程序执行情况,包括其代码覆盖率细节。

原则

已instrumented应用的执行情况在执行情况窗口中以树视图显示。《CoverageBrowser》使用反斜杠/作为分组测量的分隔符。

例如,以下图像中显示的测试具有以下名称

  • 测试套件/1 参数
  • 测试套件/2 参数
  • 测试套件/3 参数
  • 测试套件/无参数

执行情况窗口

每个项目旁边的复选框可以用来选择执行情况。仅函数源查看器窗口显示所选执行情况的代码覆盖率状态。

测试的代码覆盖率百分比通过覆盖率列中的灰色水平条进行可视化。

输入字段允许使用通配符或正则表达式进行过滤。单击按钮以选择所有可见的执行情况(即所有未被过滤掉的执行情况)。或者单击按钮以取消选择所有执行情况。

若要使用更精确的过滤,单击...按钮。这将弹出一个对话框,您可以在其中根据执行状态和注释设置过滤条件。

请注意,被过滤的文本是一个测试执行的全名——例如,SubTest/test1

单击按钮以便切换到执行比较分析模式

用户可以通过单击测试的状态字段来设置已执行测试的状态。新的状态可以是以下任何一个

  • 未知:默认状态。
  • 通过:此状态用于标记测试为通过。此时状态字段的背景颜色变为绿色
  • 失败:此状态用于标记测试失败。然后状态字段的背景色变为红色。
  • 需手动检查:此状态用于表示测试必须手动完成。然后状态字段的背景色变为橙色。

注意:测试项及其状态也可由外部测试套件定义(参见测试套件和Coco)。

可以使用CoverageBrowser的上下文菜单和停靠窗口重命名、删除或合并执行,或为其添加注释。合并后,作为新合并执行源头的执行将被删除。

请使用表达式来识别应用这些修改的执行。正则表达式语法在使用通配符或正则表达式进行过滤中描述。在执行正则表达式驱动操作之前,CoverageBrowser会显示更改的影响预览。

要删除执行,请右键单击执行窗口,并在上下文菜单中选择删除多个执行。会出现一个窗口,可在此处输入执行的名称。以下是一些示例

  • 使用通配符语法删除所有执行
    • 执行名称*
  • 使用通配符语法删除TESTS中的所有执行
    • 执行名称TESTS/*
  • 使用正则表达式语法删除TESTS中的所有执行
    • 执行名称=TESTS/.*

要重命名执行,请在上下文菜单中选择重命名多个执行。会出现一个窗口,可在此处输入执行旧名称和新名称的表达式。

使用正则表达式重命名

以下是一些示例

  • 将所有执行移动到TESTS目录中,设置
    • 实际执行名称=.*
    • 新执行名称TESTS/&
  • TESTS目录中的所有执行移动到OLD目录中,设置
    • 实际执行名称=TESTS/(.*)
    • 新执行名称OLD/\1
  • 将所有目录中的所有执行重命名为testname [directory],设置
    • 实际执行名称=([^/]*)/([^/]*)
    • 新执行名称\2 [\1]

加载执行报告

当Instrumented应用程序完成执行时生成执行报告。它包含已运行的每个应用程序所有执行的代码段列表。执行报告永远不会被覆盖;执行数据始终附加。其文件名由CoverageScanner库的初始化函数__coveragescanner_install()定义(参见__coveragescanner_install()),并且始终以.csexe结尾。

要加载执行报告,请单击文件 > 加载执行报告或工具栏上的图标。打开以下对话框。

执行报告加载对话框

从文件导入

可以直接或通过脚本导入报告。要直接加载,请在上左菜单中选择文件。在自由形式输入框中输入.csexe文件的路径,或使用浏览按钮。

名称”字段指定了导入的测试仪器的名称,如果该名称在执行报告中已指定,则无需再指定(见 __coveragescanner_testname())。还可以设置尚未在运行时设置的导入执行的(通过失败需要人工检查)状态。默认情况下,状态为 未知

无效的执行不会被导入。如果导入的测试仪器名称重复,则在名称后添加索引号以使其唯一。名称为“主测试”的执行可能变为“主测试(2)”。

要查看将导入哪些执行,请点击“下一步”,这将显示要加载的文件中所有执行的列表,以及它们是否将被导入以及原因说明。

导入概述

到此为止,尚未进行导入。仍需要按 导入(或 导入并删除)按钮以加载 .csexe 数据。或者可以点击 返回 以更改设置,或 取消 以停止操作。

通过脚本导入

如果执行报告无法通过文件系统访问,可以使用脚本导入。要在对话框右上角菜单中选择 脚本

出现两个输入字段

  • 获取命令:在此处输入导入执行报告的脚本及其参数。

    脚本必须将执行报告的内容打印到标准输出(stdout)。如果它写入标准错误流(stderr),则输出将出现在窗口中,可用于调试。如果成功,脚本必须返回值 0。

  • 删除命令:在此处输入删除执行报告的脚本及其参数。

    只有在选择 加载后删除执行报告 模式时,此字段才需要填写。

在这两个输入字段中,可以使用引号(单引号和双引号)来分组参数,并且可以使用反斜杠作为转义字符。

点击 下一步 按钮,执行获取命令。如果失败,将显示错误报告。如果成功,将显示与之前相同的预览导入执行列表。要完成导入,还需要再次点击 导入(或 导入并删除)按钮。

在“高级参数”部分中,还可以指定分组在一起的附加选项

  • 如果启用 加载后删除执行报告 复选框,则在加载后自动删除执行报告文件。
  • 如果选择 文件修改时自动打开此对话框 复选框,则在修改 .csmes 文件时,导入对话框会再次出现,并且可以重新加载。

    要交互式收集测试结果的工作流是选择这两个复选框并重复运行经过仪器化的程序。每次程序结束后,都会创建一个 .csexe 文件,可以将它导入到 CoverageBrowser 中,然后删除。通过这种方式,测试结果会累积。

  • 如果选择 检查脚本的输出 复选框,并且通过脚本加载执行报告,则在执行脚本时会显示一个输出窗口。它显示脚本的运行输出,并最终显示其返回值。
  • 导入预处理”选项选择在发生冲突或冗余执行时的行为
    • 忽略重复执行:如果与已导入的执行执行了相同的代码,则忽略执行。
    • 导入重复执行:如果至少执行了一条受控源代码行,则导入执行。
    • 导入重复和空执行:导入所有执行。
    • 合并同名执行:合并所有同名执行。将所有合并受控集的执行次数相加。

执行比较分析模式

点击按钮 可激活执行比较分析模式。

在此模式下,必须选择一个或多个执行作为参考,其他作为分析对象。CoverageBrowser将仅显示在分析执行的执行但不参考执行的行。类似地,在列表中显示的覆盖率统计数据仅包含分析执行仅执行的受控语句的百分比。

使用执行比较分析模式,您可以查找程序不同运行之间的覆盖率变化。

首先使用执行窗口中参考列的复选框选择参考执行。然后在执行列中选择要分析的执行。

注意:如果要分析的执行出现在参考执行的列表中,它将自动从列表中删除。因此,如果将执行A与执行A和B进行比较,CoverageBrowser实际上仅将执行A与B进行比较,因为与自身比较将不会提供有用信息。

执行比较分析模式

源文件

注意:此功能不适用于黑盒测试。

通过选择查看 > 源文件来打开源文件窗口。

源文件窗口

列中的每一行都包含一个源文件的名字。当您单击一行时,将显示源文件窗口

对于C和C++,还包括已受控的包含头文件的子条目。

如果文件编译了多次但预处理程序选项不同,则文件将出现多条条目。为了区分它们,条目会附加数字。在示例中,文件context.h可以是两个条目context.h #1context.h #2。在计算覆盖率百分比时,每个变体都作为单独的文件计算。

覆盖率列显示每个源代码文件的初步代码覆盖率统计数据。每个字段中都有一个基础的水平条形图,其长度代表被覆盖的代码部分。条形的颜色根据每个文件的覆盖率统计和阈值值选择。

如果代码的一部分已手动验证,则在覆盖率列的左侧还有一个灰色的水平条形图;其宽度代表已手动验证的测试数量。列的整个长度仍然代表所有已验证的测试的分数。如果窗口还包含手动验证列,则仅显示灰色的水平条形图。

每个源文件前面的复选框允许您在统计计算中排除或包含源文件。如果排除,则文件被视为其功能和函数没有被受控。

输入字段 允许使用正则表达式过滤窗口的内容。过滤表达式引用源文件的完整路径。例如:c:\directory\file.cpp

图标快捷键描述
Ctrl+Shift+F上一个源文件
Ctrl+F下一个源文件

函数

注意:此功能不适用于黑盒测试。

可以通过选择“视图” > “函数”来打开函数窗口。

函数窗口

它显示所有函数、类和命名空间的代码覆盖率统计信息。在窗口中单击一个项目会显示在源码查看器窗口中对应对象的代码,并将其突出显示。

方法列包含显示覆盖率的函数或类方法的名称。如果启用了分层显示,它还会显示类和命名空间。如果函数在一个被编译多次且具有不同预处理器选项的文件中定义,则它会有多个条目。为了区分它们,会附上文件名和一个数字。文件 context.h 中的函数 get_context() 可以有两个条目,例如:get_context() [error.h #1]get_context() [error.h #2]。文件名和数字与窗口中的一致。

覆盖率列显示了每个函数的基础代码覆盖率统计信息。每个字段中都有一个底层的水平条,其长度表示被覆盖代码的比例。条的主色根据每个文件的代码覆盖率统计信息和阈值的值选择。

如果代码部分已被手动验证,则在覆盖率列的左侧还有一个第二、灰色水平条。它的宽度表示仅手动验证的测试数量。列的全长仍然表示所有已验证的所有测试的比例。然而,如果窗口中还包含手动验证列,则仅显示灰色水平条。

输入字段 允许您使用正则表达式过滤输出。过滤表达式引用项目的完整名称,包括类名和命名空间。例如:MyNamespace::MyClass::MyProc

源码查看器

注意:此功能不适用于黑盒测试。

可以通过单击视图 > 新建源窗口来显示源码查看器窗口。

源码查看器

源码查看器窗口显示源文件或其C或C++预处理器视图。单击可以使用户在两个不同的视图之间切换。

源代码使用了代码覆盖率工具进行着色。使用的颜色在颜色约定中进行了描述。通过鼠标选择区域,相应的工具会突出显示,并在说明窗口中显示其详细说明。可以使用导航按钮 在工具之间导航。

黄色、蓝色、红色和绿色的导航按钮用于跳转到下一个或上一个注释、手动验证的工具、未执行的代码部分或已执行的代码部分。单击源代码将选择最近的工具。

如果对工具输入了注释,则边距中会显示图标

在右侧,CoverageBrowser显示每行的测试覆盖率计数或代码覆盖率计数。如果源代码行包含多个仪器,CoverageBrowser将显示其计数范围。

测试覆盖率计数是通过使用--cs-hit选项使用CoverageScanner生成仪器获得的。

代码覆盖率计数是通过使用CoverageScanner和选项--cs-count生成仪器获得的。

鼠标滚轮描述
滚轮向上/向下滚动
Ctrl+滚轮缩放
Shift+滚轮下一个/上一个仪器
图标快捷键描述
Ctrl+Shift+R上一个源文件
Ctrl+R下一个源文件
Ctrl+Shift+I上一个仪器
Ctrl+I下一个仪器
Ctrl+Shift+T上一个已执行的仪器
Ctrl+T下一个已执行的仪器
Ctrl+Shift+U上一个未执行的仪器
Ctrl+U下一个未执行的仪器
Ctrl+Shift+M上一个手动验证的仪器
Ctrl+M下一个手动验证的仪器
Ctrl+Shift+B上一个注释
Ctrl+B下一个注释
Ctrl+Shift+G上一个死代码
Ctrl+G下一个死代码
Ctrl+J打开一个新的源窗口
Ctrl+Shift+J在预处理器视图和原始源之间切换
Ctrl+K添加/编辑注释
Ctrl+Shift+K删除注释
Ctrl+D标记为已验证
Ctrl+Shift+D清除验证标志
Ctrl+Z撤销
Ctrl+Shift+Z重做

颜色约定

使用不同的颜色在源窗口中显示仪器

  • 绿色 - 已执行:当代码已被执行时,仪器显示为绿色。
  • 橙色 - 部分执行:当一个仪器未完全执行时,将被标记为部分执行。例如,当布尔表达式仅为真或假时。如果源代码行包含多个仪器,当其中一个是未执行时,该行将被标记为部分执行。有关详细信息,请参阅说明窗口。
  • 红色 - 从未执行执行计数过低:当一个仪器从未被执行或执行计数低于请求的执行计数时,显示为红色。
  • 洋红色 - 死代码:当一个代码无法执行时,仪器显示为洋红色。
  • 蓝色 - 手动设置为执行:用户可以将一个仪器标记为手动验证。这通常是为了排除死代码或无法测试的代码。这种状态仅在执行处于从未执行部分执行状态时才相关。
  • 灰色 - 未知隐藏:当没有关于仪器的信息可用时使用灰色。这种情况发生在没有选择执行或在比较测试执行(参见执行比较分析模式)时。

注释

注意:此功能不适用于黑盒测试。

编辑注释

通过选中仪器并点击上下文菜单中的添加/设置注释,主菜单中的仪器 > 添加/设置注释或工具栏上的图标,可以添加注释。

打开注释窗口并允许编辑注释。可以通过点击最后评论选择字段检索最新输入的注释。可以使用集成工具栏按钮进行基本文本格式设置。

注释编辑

注意:如果设置了注释的最小长度,则只能在达到此长度时输入注释(参见[最小注释大小])。

评论将在黄色框中打印在说明中,并且在代码窗口中行号附近的图标 将显示。

图标快捷键}描述
Ctrl+S删除线
Ctrl+B粗体
Ctrl+I斜体
Ctrl+U下划线
Ctrl+J居中对齐
Ctrl+R右对齐
Ctrl+L左对齐
Ctrl+M居中
Ctrl+Z撤销
Ctrl+Shift+Z重做

移除评论

可以通过选择一个仪器并点击上下文菜单中的“清除评论”,主菜单中的“仪器” > “清除评论”或工具栏上的图标 来删除评论。

说明

注意:此功能不适用于黑盒测试。

说明》窗口是一个自动更新的浮动窗口,它包含有关源窗口中选择的仪器的详细描述。对于每个仪器,以下信息将显示

  • 仪器状态的简短描述(见 颜色约定)。
  • 受仪器影响的预处理源代码。
  • 对于布尔表达式,展示执行的和不执行的状态的真值表。
  • 执行代码部分的执行列表。
  • 用户评论。

说明窗口

CoverageBrowser 在布尔表达式部分执行时显示真值表。真值表指示表达式在执行过程中是否达到了某个值。

例如,真值表表明表达式是假的,而不是真的。

TRUEFALSE

统计

统计》窗口是一个自动更新的浮动窗口,其中包含整个项目的代码覆盖率统计。

统计窗口

如果手动验证了代码的一部分,则在覆盖率统计中也显示了它们的百分比。条形图有两个区域:左侧是手动验证的代码百分比,然后是自动测试覆盖的代码百分比。条形图中的数字指的是所有已验证的代码,包括手动验证的和测试覆盖的。

通过单击 ... 按钮,两种验证类型将分别分为两个条形图。

具有手动验证的统计窗口

Coco v7.2.0©2024 Qt 公司有限公司。
Qt 及其相关的标志是芬兰和/或其他国家 Qt 公司的商标。所有其他商标均为其各自所有者的财产。