编写测试套件的指南

时间:2010-10-20 13:22:24

标签: c++ testing design-guidelines

为C ++项目编写测试套件的最佳实践/指南是什么?

2 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题。对于单元测试和测试驱动开发(TDD),有一些有用的(如果有些偏颇的部分)指导from Microsoft - 如果不适用,您可以忽略Visual Studio特定的建议。

如果您正在寻找有关系统或性能测试的指导,我会澄清您的问题。 docs for Boost.Test中有一个相当广泛的理由。

  

最好有几个单元测试   我们结束之前要审查的做法。   首先,TDD是非常宝贵的   实践。所有的发展   可用的方法,TDD是   可能是最多的一个   从根本上改善许多人的发展   未来几年,投资是   最小的。任何QA工程师都会告诉你   开发人员无法写成功   没有相应测试的软件。   使用TDD,实践就是写作   甚至在写之前的那些测试   实施,理想的是,写作   测试,以便他们可以作为一部分运行   无人参与的构建脚本。它   以纪律开始这个习惯,   但一旦建立,编码   没有TDD方法感觉就像   在没有安全带的情况下开车。

     

对于测试本身有   一些额外的原则将   帮助成功测试:

     

避免在两者之间创建依赖关系   测试需要在a中运行测试   特别的顺序。每个测试都应该是   自主性。

     

使用测试初始化   用于验证测试清理的代码   成功执行并重新运行   如果是,在执行测试之前进行清理   没跑。

     

之前写测试   编写任何生产代码   实现。

     

创建一个测试类   对应于每个班级内   生产代码。这简化了   测试组织并使其变得容易   选择每个测试的位置。

     

使用   Visual Studio生成初始化   测试项目。这将显着   减少所需的步骤数   手动设置测试项目和   将它与生产联系起来   项目。

     

避免创建其他计算机   依赖性测试,如测试   依赖于特定目录   路径。

     

创建要测试的模拟对象   接口。模拟对象是   在测试项目中实现   验证API是否匹配   所需的功能。

     

验证   以前所有测试都成功运行   继续创建一个新的测试。那   确保您修复代码的方式   一旦打破它就立刻。

     

最大化   可以运行的测试数量   无人值守。绝对肯定   没有合理的无人看管   在完全依赖之前测试解决方案   关于手动测试。

答案 1 :(得分:0)

TDD无疑是一套最佳实践。在改造测试时,我的目标是两个代码覆盖和边界条件覆盖。基本上你应该选择输入函数,以便A)所有代码路径都经过测试,并且如果所有代码路径的所有排列都经过测试,则会更好(有时可能是大量的情况,如果路径差异在表面上不同,则不是必需的) B)如果您的代码具有if x>,则测试所有边界条件(那些是导致代码路径选择变化的条件)。在其中用x = 5进行测试,x = 6得到边界的两边。