充分发挥C/C++test的价值(上)

对于开发测试来说,最有效的环境就是能够深度集成到开发人员IDE中的统一测试解决方案。例如,团队可能会将测试工作集中在最近更新的、高风险的代码上,而Parasoft C/C++test这样的集成工具就是最合适的解决方案。

软件验证和确认(Verification &Validation)是软件开发的一个固有部分。投入到特定V&V项目中的工作和预算取决于许多因素。无论是因为什么原因,一个团队要去实施项目质量管理计划,生产安全、高质量的软件产品所需要的不仅仅是决心,选择合适的测试方案是重中之重,这也是非常具有挑战性的。如今,互联网技术正在快速发展,公司必须在开源产品和商业产品之间做出选择。

这篇文章解释了如何将静态分析、运行时内存监控、自动化单元测试和流分析等自动化测试技术相结合,以改进项目质量管理过程,并提出了实施统一测试解决方案的好处。

统一测试解决方案的价值

在讨论统一测试解决方案的价值之前,我们需要明确它能够提供什么帮助。在理想情况下,解决方案应该:

  • 支持多种测试技术

  • 易于使用

  • 检测功能问题和回归

  • 提供需求和测试用例的可追溯性

  • 度量代码的复杂性、可移植性和可维护性

  • 提供即时反馈来提高开发人员编写代码效率

  • 提供有关开发进度的信息

  • 结合不同环节的结果进行高级分析

一个统一和集成的测试解决方案有助于避免一些问题:

  • 使用带有不同界面的独立工具时,存在多种学习曲线和可用性问题

  • 分散开发人员的精力

  • 避免在工具链的不同部件之间交换信息

检测尽可能多的缺陷

软件缺陷属于不同的类别,因此不能期望通过一种测试技术识别所有缺陷。例如,手动系统级测试。要了解更多的信息,请观察下面的示例代码片段:

充分发挥C/C++test的价值(上)_第1张图片

上面的几行代码包含了几个问题。具体来说,在第16行中,开发人员试图使用calculateIdx()函数中计算的索引值来初始化全局缓冲区,但他们无法验证该值是否在允许的范围内。即使运行了几十个手动测试用例,他们也可能不会发现这个问题,因为将整数值写入随机内存位置大概率不会立即产生惊人的效果。

在这个例子中,Parasoft的内存错误检测很容易就识别了问题:

充分发挥C/C++test的价值(上)_第2张图片

静态分析的价值

静态分析可以检测到运行时内存监控无法识别的问题。例如,在下面的代码片段中,第27/28行出现空指针解引用的可能性。在person指针参数为null的情况下调用storePersonToFile 函数会导致错误,但只有当在retrivePersonFromDB函数返回null时才会发生错误。在系统测试期间,不太可能出现这种情况,因为数据库连接很可能按预期运行,因此运行时内存监控工具不会报告出问题。但是,静态分析工具中的流分析很容易检测到从该函数返回的空指针,并报告潜在的空指针解引用问题。

充分发挥C/C++test的价值(上)_第3张图片

Parasosft C/C++test

Parasoft C/C++test使用不同的技术来检测不同情况下会产生的缺陷,帮助我们检查出更多的缺陷,以此来提升我们的代码质量,下一期我们继续来了解:如果有些代码在静态分析和单元测试都没有检测出问题,我们还需要进行测试吗?

联系我们  了解更多

Parasoft中国

地址:上海市打浦路1号金玉兰广场西楼902

电话:021-60932819

 [email protected]

充分发挥C/C++test的价值(上)_第4张图片

你可能感兴趣的:(c++,单元测试,开发语言)