我正在开发一些Python模块,它们使用mysql数据库插入一些数据并生成各种类型的报告。我正在进行测试驱动开发,到目前为止我一直在运行:
某些SELECT操作运行缓慢,因此我的测试耗时超过30秒,这破坏了测试驱动开发的流程。我可以看到两个选择:
我不确定采取哪种方法。有什么建议吗?
答案 0 :(得分:1)
我会两个都做。首先针对小集运行以确保所有代码都正常工作,然后针对需要进行时间测试的大型数据集运行,特别是选择,搜索和报告。如果您在多个行集上进行插入或删除或更新,我会针对大集测试它们。简单的单行动作查询不太可能花费太长时间,但如果它们涉及很多连接,我也会对它们进行测试。如果查询不会在超时限制内的prod上运行,那么这是一个失败而且远远更好,要尽快知道,这样你就可以在你带来刺激之前解决问题。
答案 1 :(得分:1)
对真实数据进行测试的问题在于它包含大量重复值,而且边缘情况不够。也很难知道预期值应该是多少(特别是如果你的实时数据库非常大)。哦,根据实际应用程序的作用,将数据用于测试或开发是非法的。
通常最好的事情是编写测试数据以配合测试。这是非常乏味和无聊的,这就是为什么这么多TDD从业者厌恶数据库的原因。但是,如果您有一个实时数据集(可以用于测试),那么请为测试采用非常简化的数据子集。如果你可以针对30个记录的数据集编写有效的断言,那么对三万个数据集运行测试只是浪费时间。
但是肯定的是,一旦你得到了返回正确结果的查询,就可以通过一些性能测试来查询。