软件测试中的随机性 软件测试
本页内容
生成统一的随机数字
分析模式随机性
混排项目列表
生成正态/高斯数字
总结
创建和使用随机测试用例数据是一项基本的软件测试技能。尽管多数测试用例数据由所测试系统的特定输入数据以及特定预期值/状态组成,但您几乎始终都想让系统也受到随机测试用例输入数据的测试。通常,您这样做是为了了解向应用程序发送大量不同的输入数据是否会导致系统崩溃或引发异常。在本月的专栏中,我将阐述在 Microsoft? .NET Framework 环境中处理随机测试用例数据时的四个常见任务:
生成伪随机数字(Knuth 算法)
分析模式随机性(Wald-Wolfowitz 检验)
混排项目列表(Fisher-Yates 算法)
生成高斯数字(Box-Muller 算法)
让我们看一下图 1 中的示例。输出的第一部分显示了使用 .NET Framework 的 Random 对象生成基本随机数字的结果。尽管您可能很熟悉此方法,但我还是要指出如何避免常见缺陷。输出的第二部分体现了一个非常实用但却鲜为人知的方法,该方法用来分析由任意符号组成的模式是否具备随机性。通常,该方法广泛应用于软件开发中,而不只是应用于测试方面。图 1 的第三部分表明了混排项目列表的结果,该结果异常错综复杂。
图 1 随机方法演示
我将详细说明为什么许多混排实现方法表面上似乎正确,而事实上却完全错误。图 1 中输出的最后一部分表明了生成按正态钟形曲线分布的一组数字的结果。除了是一种非常实用的方法之外,该算法的实现细节凭其自身的性能而得以关注,将成为您个人编码工具箱的一个有价值的补充部分。
生成统一的随机数字