C/C++test完成静态分析、单元测试或覆盖率采集后,可以把本次执行结果整理成HTML、PDF等测试报告。报告中能看到多少内容,并不只取决于报告格式,还和本次测试配置、执行范围、覆盖率采集方式以及报告参数有关。有时工程测试已经结束,生成的报告却只有部分告警,或者缺少测试用例、覆盖率明细。这类情况可以先确认测试结果本身是否存在,再检查报告生成配置,避免把测试数据缺失和报告显示不全混在一起处理。
一、C/C++test怎么生成测试报告
1、先设置报告保存位置和格式
使用图形界面生成报告时,可以先把报告参数配置好。
①启动C/C++test,打开当前测试工程。
②进入【Parasoft】相关首选项,找到【Reports】报告设置。
③在报告输出位置中指定保存目录。
④报告使用网页查看时选择【HTML】格式。
⑤项目需要文档形式时,可以选择【PDF】格式。
⑥保存报告设置,返回测试工程。
⑦执行当前项目使用的静态分析或单元测试配置。
⑧任务结束后执行报告生成,打开输出目录检查生成的报告文件。
HTML是常用的本地报告格式,还会配合XML结果保存测试数据。报告目录不要长期混放多个工程的输出文件,按项目或测试任务单独保存,后面核对数据更方便。
2、用cpptestcli自动生成报告
持续集成或批处理环境可以直接通过命令行输出报告。
①确认当前【cpptestcli】命令已经能够正常执行测试。
②使用【-config】指定本次运行的测试配置。
③使用【-input】或对应工程参数传入测试对象。
④增加【-report】并填写报告保存路径。
⑤需要加载单独的报告属性时,加入【-settings】并指定properties文件。
⑥执行命令后检查报告目录中的HTML和XML结果。
例如命令可以按下面的参数关系配置:
【cpptestcli-config builtin://Recommended Rules-input cpptest.bdf-report reports】
如果要输出PDF,可以在properties文件中设置:
【report.format=pdf】
再通过【-settings】加载这份配置。使用【-report】时,填写目录就会把报告写入该目录;直接填写具体报告文件名时,还要留意旧文件是否被覆盖。
3、把规则、抑制结果和测试参数写进报告
默认报告不一定展示所有辅助信息,这些内容可以单独打开。
①准备本次运行使用的【properties】文件。
②想查看启用过的静态分析规则,设置【report.active_rules=true】。
③想让报告包含已经抑制的静态分析结果,设置【report.suppressed_msgs=true】。
④要查看本次执行参数,设置【report.test_params=true】。
⑤修改完成后保存properties文件。
⑥在命令中通过【-settings】重新加载。
⑦重新执行测试并生成报告,对比新增的报告内容。
这些参数控制的是报告展示内容,并不会补做静态分析或单元测试。原始测试没有产生的数据,仅修改报告参数也不会出现。
二、C/C++test测试报告内容缺失如何检查
1、静态分析告警少了一部分
先看当前测试结果里有没有这些告警。
①打开【Quality Tasks】或当前版本对应的结果视图。
②确认目标规则产生的告警已经存在。
③进入当前【Test Configuration】,检查目标规则是否启用。
④检查分析范围里的【Include】和【Exclude】配置。
⑤确认目标源文件没有被排除。
⑥如果缺少的是已抑制告警,检查【report.suppressed_msgs】是否为【true】。
⑦重新运行同一份配置,再生成一次报告。
结果视图本身没有告警时,问题在分析任务或扫描范围;结果视图里有、报告里没有,再去查报告参数会更直接。
2、单元测试结果没有写进报告
①打开【Test Case Explorer】。
②展开对应【Test Suite】和【Test Case】。
③确认目标测试用例已经执行。
④查看用例是否有明确的【Passed】或【Failed】结果。
⑤打开【Console】,检查测试可执行文件是否正常构建。
⑥如果日志中有链接错误、测试程序退出或超时,先处理这些运行问题。
⑦用例能够完成执行后,再重新生成报告。
测试程序在中途停止时,后面的测试结果不会写出完整数据,报告自然也会缺少对应条目。
3、覆盖率汇总有了但源码明细缺失
覆盖率报告经常出现这种情况:总百分比能看到,却没有逐行源码页面。
①打开【Coverage】视图,确认本次测试已经采集覆盖率。
②切换到实际采集的覆盖率类型,查看数据是否存在。
③进入当前【Test Configuration】。
④打开【Execution】→【Runtime】。
⑤找到【Generate detailed coverage report for】。
⑥选择需要生成明细的覆盖率指标,例如【LC】【SC】【DC】或【MCDC】。
⑦重新执行测试并生成HTML报告。
命令行环境还可以通过【report.ue_coverage_details_htmls】指定源码级覆盖明细类型。例如设置为【LC】时,HTML报告可以链接到逐行覆盖率页面。
三、报告仍有内容缺失怎么继续检查
1、确认实际生效的报告配置
图形界面已经改过设置,命令行报告却没有变化时,可以查真正加载的参数。
①找到运行命令里的【-settings】文件。
②检查文件中的【report.format】、【report.active_rules】和其他报告参数。
③确认命令没有同时加载多份properties文件并覆盖同名设置。
④执行【-showsettings】查看当前生效参数。
⑤对照输出结果修改配置文件。
⑥再次运行测试并生成报告。
properties中的同名参数会覆盖前面的设置,所以不能只看某一份配置文件判断结果。
2、检查是不是打开了旧报告
①查看当前【-report】指定的位置。
②检查报告文件修改时间。
③确认当前工程没有继续使用以前的输出目录。
④不同模块可以设置不同的【session.tag】。
⑤不同测试任务使用不同报告目录。
⑥重新执行一次测试,打开刚生成的文件核对时间和内容。
如果多条批处理任务共用同一个目录,很容易把上一次报告当成本次结果。
3、查看Setup Problems
报告缺少大块内容时,还可以检查测试环境本身有没有出错。
①打开生成的HTML报告。
②找到【Setup Problems】。
③检查是否存在工程加载、编译器、输入文件或测试配置错误。
④命令行同时查看【Console】输出。
⑤想增加命令行过程信息时,可以加入【-showdetails】。
⑥把环境问题处理完后重新执行原测试配置,再生成报告。
【report.setup.problems】可以控制Setup Problems在报告中的显示位置,也可以隐藏。排查内容缺失时,先保留这一部分更方便查看测试是否在中途出现配置错误。
总结
C/C++test测试报告缺内容时,可以先判断原始测试数据有没有生成,再看报告参数是否把对应结果带出来。静态分析、单元测试和覆盖率使用的是不同的数据来源,某一部分为空,并不代表报告文件本身损坏。把测试配置、执行结果和报告设置对应起来,后续批量生成报告时也更容易保持结果一致。如需进一步了解C/C++test测试报告生成、报告内容配置与结果缺失排查方法,欢迎联系咨询。