Kap*_*old 9 tdd performance integration-testing automated-tests
我正在研究一个非常需要一些性能调整的项目.
如果我的优化不能提高程序的速度,如何编写失败的测试?
详细说明:
问题不在于发现要优化的部分.我可以使用各种分析和基准测试工具.
问题是使用自动化测试来记录特定优化确实具有预期效果.如果我可以使用测试套件以后发现可能的性能回归,那也是非常可取的.
我想我可以运行我的分析工具来获取一些值,然后断言我的优化代码会产生更好的值.然而,明显的问题是基准值不是硬值.它们因当地环境而异.
那么,总是使用同一台机器进行这种集成测试的答案是什么?如果是这样,您仍然必须在结果中允许一些模糊性,因为即使在相同的硬件上,基准测试结果也会有所不同.那么如何考虑到这一点呢?
或者答案是保留程序的旧版本并比较前后的结果?这将是我首选的方法,因为它主要与环境无关.有没有人有这种方法的经验?我想只有在最新版本的性能至少与前一版本一样好的情况下才能通过所有测试时,才需要保留一个旧版本.
我怀疑应用TDD来提高性能是一个错误.无论如何,使用它来获得良好的设计和工作代码,并使用在TDD过程中编写的测试来确保持续的正确性 - 但是一旦你有完善的代码和一套可靠的测试,你就会处于良好的状态适用于调整和不同(来自TDD)的技术和工具.
TDD为您提供良好的设计,可靠的代码和测试覆盖安全网.这会让你进入一个调整的好地方,但我认为,由于你和其他人所引用的问题,它根本不会让你在调整之路上走得更远.我说这是TDD和实践者的忠实粉丝和支持者.
首先,您需要建立一些可接受的性能标准,然后您需要设计一个测试,当使用现有代码时,该测试将无法满足该标准,然后您需要调整代码的性能,直到通过测试。您可能会有不止一项绩效标准,并且您当然应该有不止一项测试。