我应该继续测试代码还是实现更多功能?

tra*_*oft 0 testing unit-testing semantic-versioning

我有一个我喜欢编码的辅助项目,我尽可能花时间,因为我还在完成大学学业.当我开始它时,我几乎不知道好的编程实践和TDD等等,我只是为了好玩而编码.

之后的几次迭代,重构,改进和积累的知识使我在实现新功能之前编写单元测试和集成测试.但是,我仍然没有足够的时间来进行所有测试以获得可接受的代码覆盖率......尽管软件运行良好.

因此,当我有时间花在这个项目上时,我想实现新的功能(这次是,并行进行单元测试)没有做很多测试,不得不说非常无聊,而且很多很难因为嘲弄和东西......

我应该继续添加功能还是应该先完成所有测试?

我确定软件应该是测试版,直到达到合理的代码覆盖率.这时它是版本0.9-beta.

如果我添加新功能,我应该遵循保留测试版的语义版本吗?例如,作为下一次迭代0.10-beta,0.11-beta依此类推,直到测试完成,最后它将转向非beta版本.

如果你想检查我的项目,请点击链接: octaviospain.github.io/Musicott

小智 5

为现有代码编写测试不是测试驱动开发.对于像这样的辅助项目,如果您担心代码可能无法正常工作,我只会这样做.如果要测试现有代码,您可以做什么以及我建议您编写验收测试.

验收测试是涵盖用户故事的测试,意味着用户想要执行的一系列操作,并检查整个系统的行为是否满足要求.由于验收测试主要是端到端测试,因此您无需模拟太多的系统.通过这些验收测试可以确保您的系统对普通用户输入做出正确反应.

之后,您可以专注于使用TDD循环添加新功能.我也建议在那里使用验收测试.首先编写涵盖整个功能或用户故事的验收测试,然后重复Red-Green-Refactor循环直到您的验收通过.到那时,您知道某个功能正常运行,您可以开始处理下一个功能.

如果您想了解更多关于验收测试的信息,我建议您阅读"面向成长的面向对象软件,测试指导".有时候它会有点无聊,作者重复几次,但值得一读.