下面以C++test安装目录下的Timer为例子,介绍单元测试发现内存泄露问题过程。
1 生成测试用例 #
导入Timer到c++test后,选中timer.c,为delete_timer_record()生成测试用例。选择测试执行-》内建-》Unit Testing-》Generate Unit Tests。生成的测试用例如下图所示:
其中代码中delete_timer_record()函数如下:
void delete_timer_record(int idx)
{
struct timer_record* tr = timer_records[idx];
int i;
/* fill in the holes */
for (i = idx-1; i < curr_index; i++)
{
if (0 == timer_records[i]) {
break;
} else {
timer_records[i] = timer_records[i+1];
}
}
curr_index--;
free(tr);
}
2 修改运行单元测试配置 #
将Run Unit Tests测试配置复制到自定义中进行修改。在“执行”-》“常规”,编辑插桩模式内容:
勾选插桩功能“内存监控”中的选项,如下图所示,然后确定保存。
3 执行单元测试 #
选中delete_timer_record()函数的测试用例-》测试执行-》用户自定义-》Unit Testing-》Run Unit Tests,执行结果如下图所示:
与此同时,该Timer项目也可以演示应用程序监控,不需要额外生成测试用例,选择Timer项目-》Parasoft-》测试执行-》C++test-》内建-》Application Monitoring-》Build and Run Application with Monitoring,如下所示:
同样可以发现该内存问题。