2010-09-14 45 views
0

我正在做一个广告相关的项目,在这个项目中我需要确保我们的系统在特定的时间间隔内从db中获取广告并将其插入到我们的正常服务流中。如何测试在特定时间间隔发生的软件行为?

您如何设计这样的系统测试,以便您在确认广告在正确的时间发生时不必等待30分钟?

+0

你想要它被白盒测试或黑盒测试? – ckv 2010-09-14 07:44:01

+0

@ckv我想要它白盒子,我需要在代码中实现测试程序。 – satoru 2010-09-14 07:52:07

+0

为什么不使时间间隔可配置,并为了测试而减少时间间隔?如果它以30秒为间隔工作,理想情况下,它应该在30分钟的时间间隔内工作 – InSane 2010-09-14 07:59:09

回答

2

我会解耦处理从定时器部分插入广告的逻辑,将后者隐藏在接口后面(对于DB也是如此)。然后(例如使用dependency injection)我可以使用在单元测试中“立即”(或在任何需要的时间间隔后)触发的mock定时器来替换常规定时器,因此我可以断言广告(通过模拟DB接口提供)被插入正确输入输出。

这将是单元测试部分;我仍然会尝试整合一些集成测试来验证整个系统是否按预期工作。但是在单元彻底测试逻辑之后,集成测试可能会更浅,只需验证几个最基本的用例。

0

时间依赖性对于测试是不利的(它们会损害可再现性)。尝试注入时序依赖。在你的情况下,你可以注入/参数化一个时间范围(例如从30分钟到近乎即时)。

相关问题