gpt4 book ai didi

java - 生成随机但静态的测试数据

转载 作者:行者123 更新时间:2023-11-28 20:20:29 24 4
gpt4 key购买 nike

在设计测试用例时,我希望能够使用随机但静态的数据。

如果我使用的数据不是随机的,那么我将使用代表我期望的数据的简单示例,而不是我在代码中防范的数据。例如,如果我的代码需要一个最大长度为 15 个字符的字符串,那么我宁愿指定这些约束并在这些约束内为我生成数据,而不是一些任意示例,由于我的期望,这可能是,在一组更严格的约束内。

如果我使用非静态数据,那么我的测试将无法重复。使用每次运行测试时都会更改的字符串是不好的,因为测试偶尔会失败。最好使用一致的字符串,然后在发现错误时指定更多关于如何生成该字符串的约束(并且显然在我的代码中进行相同的检查)。

这是测试数据的好策略吗?

如果是这样,那么我知道如何独立实现这两个目标。对于静态但非随机的数据,我只是随意输入一些内容,例如。对于随机但不是静态的东西,我只使用 apache random utils 例如随机字符串(5)。我怎样才能同时获得两者?

请注意,当数据必须是唯一的时,有一些方法来指定两段生成的数据必须是不同的也很方便。随机性在大多数情况下都是如此,但显然,如果没有不可靠的测试,就不能依赖它!

TL;DR:如何在没有随机生成数据的情况下指定我想要生成的数据类型?

最佳答案

您所描述的是基于属性的测试——最著名的例子是 Haskell 的快速检查。

http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1

已经有一些java端口,比如

Quickcheck 哲学强调随机数据的使用,但大多数(所有?)java 端口允许您设置固定种子,以便生成的值是可重复的。

我从来没有真正尝试过这种方法,但我希望它能通过将值与测试分开来使您的测试更具可读性(而不是像 piotrek 所建议的那样可读性较差)。

如果值的知识对于理解测试/SUT 行为很重要,那么这是错误的方法。

关于java - 生成随机但静态的测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com