我有一个队列对象,它在我的项目中扮演着非常重要的角色,我无法负担任何错误。
它的想法就像内置Queue
,它的基类,但它存储数据,或至少存储在文件中的一部分以保存内存。我决定将其中一些保留在内存中,因为这样可以加快速度。我已经放了代码here,它可能比我解释它更容易看到它
想要这样做似乎很奇怪,但是我需要排队很多工作,排队的速度比我通过的速度要快得多,而且如果我使用标准,它将使用太多的内存{ {1}}。我不能只在Queue
上放一个maxsize并阻止工作人员将事情放入队列中,因为我想知道要尽快处理的数据总量。我也不能先计算总数,但不排队,然后通过输入Queue
返回,因为每次我查看数据时总数会有所不同,最后总数不匹配
我的问题是如何彻底测试这一点以确保没有项目丢失或更重要的是当缓冲区或文件中仍有项目时,或者在调用完成后并且队列是空。
有些东西似乎很容易测试并设置单元测试,当你知道某些输入应该是什么输出时,但是测试这样的东西我不能确定一个有效的方法。有可能用单元测试来测试这种东西吗?
我已经设置了一个测试程序,可以根据不同数量的项目以不同的速度放置和获取项目,看起来很好,但我已经看到了Queue
上带有项目阻塞的证据仍在队列中,所以我认为有一个问题。
我可以彻底测试这个以找到任何剩余的错误或接近确定它没有错误的最佳方法是什么?
可以生成一些类似于我在下面的代码中使用的测试数据,我在项目的某些条件下只有文件的校验和,有时候它是.get
所以我只生成了一些在下面的代码中尝试模拟
None
答案 0 :(得分:2)
我写了一些类似的组件。
我验证其正确性的策略通常是三方面的:
到目前为止,我用这种方法验证过的队列在制作过程中一直坚如磐石。