繁体   English   中英

在C ++环境中优化回归测试

[英]Optimizing regression testing in a C++ environnement

为了避免过多的测试,我想向质量保证(QA)团队提供关于在开发迭代之后必须对哪些特征进行回归测试的提示。 你知道在C ++和Subversion(和visual studio)开发环境中可以做到的工具吗?

有关用例的详细信息:

  1. 特征将由开发团队根据入口点(通常是类或类方法)来定义。 比如,“excel文件导入”功能由类FileImporter的方法ImportExcelFile(...)定义。
  2. 在开发迭代期间,开发团队对某些类的某些方法进行了一些更改。 比如说,其中一个类是由方法ImportExcelFile()间接使用的
  3. 在迭代结束时,工具会分析所有提交,并生成报告并将其交付给QA团队。 在我们的示例中,QA团队被告知必须测试“excel文件导入”功能,并且其他功能XY和Z不变。

很可能这个工具会使用静态代码分析并使用subversion API。 但它存在吗?

天儿真好,

你所描述的并不是真正的回归测试。 您只是在测试新功能。

回归测试是专门运行完整测试套件的地方,以查看支持新功能的代码是否已破坏以前的工作代码。

我强烈推荐阅读Martin Fowler的优秀论文“ 持续整合 ”,其中涵盖了您正在讨论的一些方面。

它还可以为您提供更好的工作方式,特别是Martin在他的论文中谈到的CI方面。

编辑:特别是因为CI有一些隐藏的小陷阱,事后才很明显。 停止测试人员试图测试尚未实现新功能的所有文件的版本。 (您确认在过去五分钟内没有提交)。

另一个重点是,如果你有一个破坏的构建,并且在有人检查代码然后尝试构建它以便他们可以测试它之前不知道它已经被破坏,那么就会浪费时间。

如果它坏了,你现在有:

  • 坐在周围的测试人员无法进行预定的测试,
  • 一个开发人员打断他们当前的工作,回到以前的工作来理清造成破坏的构建的原因。 更可能是开发人员,因为问题是两个独立部分之间的交互,每个部分都是自己工作的。
  • 由于开发人员必须重新回到上一段工作的思维模式而导致的时间损失,以及
  • 在调查中断之前,开发人员要回到他们正在研究的新工作的思维模式上的时间损失。

CI的基本思想是在白天对完整产品进行多次构建,以便尽早捕获破坏的构建。 您甚至可以选择一些测试来检查产品的基本功能是否仍然有效。 再次尽快通知您构建的当前状态存在问题。

编辑:至于你的问题,在你完成测试后标记存储库怎么样,例如TESTS_COMPLETE_2009_12_16。 然后,当你准备好了解下一组测试时,最新测试完成标签和HEAD之间的“svn diff -r”是什么?

HTH

顺便说一句,我会在考虑这些问题时用一些进一步的建议来更新这个答案。

干杯,

将项目拆分为单独的可执行文件并构建它们。

如果依赖项发生变化,Make将重建任何可执行文件。

将任何链式测试的输出文件添加到下一个测试的依赖项中 - 例如,保存文件测试的输出作为读取文件测试的依赖项。

在此之后构建的任何东西都需要进行单元测试。

如果任何库使用共同的可耗尽资源(堆内存,磁盘,全局互斥等),也将它们添加为依赖项,因为由于一个库中的泄漏导致的耗尽通常是另一个库中的回归失败。

在某个点之后构建的任何东西都需要回归测试。

除非您在保证人员缺乏资源耗尽的环境中工作(例如TinyC),否则您最终将对所有内容进行回归测试。 回归测试不是单元测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM