Randomized testing(随机测试)

Randomized testing(随机测试)

您目前看到的代码片段都没有显示随机测试功能,因为它们被小心隐藏在hood下。 但是,当您编写自己的测试时,您也应该使用这些功能。 在开始之前,您应该要知道,如何重复使用相同设置的失败测试,如何失败的。 幸运的是,这很容易,因为整个mvn调用与失败的测试都将一起记录,这意味着你可以简单地复制和粘贴该行并运行测试。

generating random data(生成随机数据)

下一步是把使用静态测试数据的测试,转换为使用随机测试数据的测试。您可以随机化的数据类型与您正在测试的功能有很大的不同。看看下面的例子(注意,这个列表可以继续页面,因为分布式系统有许多很多移动的部分):

使用任意UTF8符号搜索数据 每次运行时更改映射配置,索引和字段名称 每次运行时更改响应大小/可配置限制 创建索引时更改碎片/副本的数量 那么,你如何创建随机数据。最重要的事情是,你不应该实例化自己的随机实例,而是使用随机化测试中提供的随机实例,所有弹性搜索依赖测试类都从该实例继承。

| getRandom() | 返回随机实例,可以在使用特定参数调用测试时重新创建 | | randomBoolean() | 返回随机布尔值 | | randomByte() | 返回一个随机字节 | | randomShort() | 返回随机短 | | randomInt() | 返回一个随机整数 | | randomLong() | 返回一个随机长 | | randomFloat() | 返回随机浮点数 | | randomDouble() | 返回一个随机的double | | randomInt(max) | 返回0和max之间的随机整数 | | between() | 返回提供的范围之间的随机值 | | atLeast() | 返回至少为指定整数的随机整数 | | atMost() | 返回最多指定整数的随机整数 | | randomLocale() | 返回随机区域设置 | | randomTimeZone() | 返回随机时区 | | randomFrom() | 从列表/数组返回一个随机元素 |

此外,还有几种帮助方法,可以创建随机ASCII和Unicode字符串,请参阅随机测试类中以randomAscii,randomUnicode和randomRealisticUnicode开头的方法。后者尝试通过非任意随机创建更真实的unicode字符串。

如果要调试特定随机种子的特定问题,可以使用@Seed注释配置特定种子进行测试。如果要多次运行测试,而不是重复启动整个测试套件,可以使用@Repeat注释和任意值。每次迭代都不同于使用不同的种子运行。