这种测试很简单,就是申请分配资源直到失败,然后释放掉所有分配的资源。这只是一种最简单的测试,如果你确保它可以工作了,那么还有几件事情等着你去做。
首先,将它放到一个循环里面,然后执行很多次。它是否依然可以正常工作?
其次,在它运行的时候观察整个系统,看被测试进程是否有内存,句柄或者其他资源的泄漏。这种场景下的一个典型的BUG就是资源分配函数发生错误时没有被正确处理。即使它不会立即导致崩溃,但仍可能会导致内存泄漏或者错误。这种事情我以前也遇到过。
如果要更深入此类测试场景,则需要理解资源的依赖关系,以及在软件依次消耗掉所有的这些资源情况下其是否正确处理了所有的资源错误。这方面的一个例子就是处理消息的软件。它将在等待处理的消息在磁盘上保存为一个队列。那么磁盘如果满了的话会发生什么?这种场景可能会比较难设置,它看起来类似于:
1. 限制硬盘空间
2. 将消息注入到队列中
3. 停止从队列中取消息
4. 磁盘满了,会发生什么?相应的工作行为是正确的吗?
5. 重新开始从队列中取消息。是否一切工作正常?
接下来的几个步骤类似于我们上面已经做的,那就是在更多的情况下去重复测试它,并观察结果:
尝试取出所有的消息,直到队列为空。
建立一个稳定的消息输入流,但时而暂停并再恢复取出消息,反复执行磁盘空间测试用例,看是否在这样的情况下仍然工作正常? 如果出错的话,是否该出错被正确处理?是否有副作用,比如内存泄漏,句柄泄漏或者数据出错?是否队列的生产者和消费者都正确处理了错误用例?
在你的软件中还会有很多关于这个主题的情况等待你去挖掘,我不准备将所有可能的情况都列在这里。我想你能够自己考虑这些事情。
文章来源于领测软件测试网 https://www.ltesting.net/