问题标签 [generative-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
945 浏览

testing - 如何以一对多的方式编写 clojure.test.check 生成器?

假设我有一个生成器users-gen,它生成一组 1 个或多个用户。另一个称为参数化的生成器user-actions-gen,它接受一个或多个用户的序列,并生成这些用户可能执行的一系列操作。

如果我想为 users-gen 生成的单个用户序列生成单个 action,那么很简单,直接 gen/bind users-gen 到 user-actions-gen 即可。

但是,我想从相同的用户序列中生成许多操作。我有这个问题,因为我基本上只是想说“这是状态,让任何随机动作进来,让我们将动作应用于状态,让我们确认状态仍然有效;对所有动作都这样做。 " 我有以下代码。

这类作品。问题是:

  1. 它似乎完全评估了doseq,而不是在第一个错误时停止
  2. 只是看起来有点不对劲。代码到处都是,它的作用并不完全清楚。
  3. 似乎 user-actions-gen 应该采用 users-gen 的生成器,而不是 users-gen 的已实现用户价值?这对可组合性有帮助吗?请注意,我不想将它们放在一起,因为 users-gen 可能对其他生成器有用。

所以,回顾一下。我从一个生成器获取单个生成的值,并将其作为参数传递给多个生成器。我该如何以更有吸引力/优雅的方式来做这件事?

0 投票
1 回答
249 浏览

clojure - 在 clojure 中使用生成测试库与使用高阶函数构建自己的测试库

Clojure 有许多用于生成测试的库,例如test.checktest.generationdata.generators

可以使用高阶函数来创建可组合的随机数据生成器,例如:

这只是一个示例,可以使用不同的参数、过滤器、部分等进行修改,以创建非常灵活的数据生成函数。

是否有任何生成库可以通过组合一些高阶函数而不是(或更多)简洁地实现的东西?

作为对stackoverflow之神的旁注:我不相信这个问题是主观的。我不是在征求关于哪个图书馆更好的意见。我想知道任何/所有数据生成库的哪些特定功能或技术将它们与组合普通高阶函数区分开来。一个示例答案应该说明使用任何库生成随机数据,并解释为什么按我上面说明的方式组合 HOF 会更复杂。

0 投票
2 回答
157 浏览

unit-testing - 如何在生成测试中断言?

我是测试新手。我开发了一个模块,它需要大约 14 个变量和输出True/False。对于测试,我使用了“Quickcheck”随机生成的测试用例。

但是 14 个变量是随机生成的(因为手动编写的测试用例数量很大),我不知道真值,所以我怎么能断言验证我的模块的结果。

这是一个工程问题:人们在编写生成测试用例时如何断言?

0 投票
2 回答
1680 浏览

c# - C#中的FsCheck:生成具有相同形状的二维数组列表

假设我正在编写一些用于视频分析的代码。这是 Video 类的简化版本:

我如何制作Arbitrary<Video>并注册它?我如何为那个任意制作收缩器?

试过这个,不明白 apply 是如何工作的:

试过这个,但无法在此处插入列表生成器:

0 投票
1 回答
95 浏览

clojure - test.check 生成具有不同节点类型的树

我想生成具有不同节点类型的树。对于每个节点类型,都有可能成为该节点子节点的节点类型的不同可能组合。任何节点类型都可能没有子节点。

recursive-gen从本质上迫使我从里到外构建树,从一个叶生成器开始,该生成器生成一个没有子节点的任何类型的节点。从子生成器创建生成器的函数本质上必须生成所需的父节点类型并such-that在子生成器上使用,直到它生成所需的子节点类型。这通常会导致运行时错误,说such-that在 10 次尝试后失败。

由于无法从父生成器参数化子生成器,有哪些替代选项?

0 投票
3 回答
1825 浏览

unit-testing - 如何在测试套件中包含 clojure.spec 的函数

无论如何在通用测试套件中包含 clojure.spec'd 函数?我知道我们可以注册规格并直接指定功能

稍后,如果我想针对该规范的函数运行生成测试,我可以使用stest/check.

但是我)无论如何将这些测试运行包含在我的通用测试套件中?我正在考虑test.check 具有的那种clojure.test集成。我能看到的最接近ii)的是(see here ) 函数。但这似乎只是让我们打开对 repl 的检查。不是我想要的。另外,iii)功能规格是否已注册?stest/instrument

0 投票
2 回答
1656 浏览

clojure - Clojure 中的生成测试是什么?

我遇到了Generative Testing in Clojure with spec一个概念,并想了解它。

还提供一些示例将非常有用。

0 投票
1 回答
911 浏览

scala - 为什么在丢弃许多案例后使用自定义生成器进行的 Scalacheck 测试失败,我该如何解决这个问题?

我是 Scala 的新手,我正在编写我的第一个 Scalacheck 套件。

我的程序中有一个数据结构,它基本上看起来像 a (List[Double], List[Double]),只有当 的每个元素_1严格大于 的对应元素时,它才是格式正确的_2

由于它在实践中稍微复杂一些(尽管为了这个 MWE 的目的,我们可以假装它已经具备了一切),我已经为它编写了一个自定义生成器。

然后我添加了两个微不足道的测试(包括最微不足道的1 == 1测试),在这两种情况下,测试都失败了,并带有消息Gave up after only XX passed tests. YYY tests were discarded.

为什么会这样,我该如何解决?

附件是我的测试套件和输出。



0 投票
1 回答
155 浏览

clojure - How to check Clojure, macro specs?

If I try to check a macro spec with clojure.spec.test.alpha, no tests are run, but if I define the same macro as a function with the same spec, a sequence of tests are run against the function. I can always generate parameters to unit test the macro, but is there a way to get that for free with spec? Here is an example:

0 投票
1 回答
184 浏览

clojure - 如何为每次执行生成测试功能,必须测试不同的边缘情况?

你好 Clojure 专家..!,

更新:2018 年 8 月 3 日下午 1:25 CDT - 重新表述了问题以使其更具描述性。

更新:2018 年 8 月 3 日下午 4:10 CDT - 添加了负面情景测试以使其更有意义。

我有一个正在测试的函数/规范(jvm 语言),我想使用 Clojure 生成测试 API 测试正面场景(现在)。

正面场景测试:鉴于 jvm 语言是五个 {"clojure" "haskell" "erlang" "scala" "python"} 之一,结果应该是正确的。

我的问题/要求:我应该用每个可能的有效场景(我在下面的一组中列出)为每次执行(每次我运行,lein 测试)测试我的被测函数,以便我可以摆脱定期单元测试。

根据我的少量测试知识,我认为(对我来说)在同一执行中使用相同的测试场景多次测试我的功能没有任何价值。如果您认为我的思维过程是错误的,请教育我。

  1. 有没有办法使用 Clojure 生成测试来完成我的用例?
  2. 如果没有,这不是一个很棒的功能吗?

    /li>