问题标签 [quickcheck]
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.
haskell - Quickcheck 中的测试不相等?
我是新手,QuickCheck
不能完全理解如何使用它。
假设我不小心用 a Set
(而不是 a List
)实现了一个数据类型:
然后后来遇到了这个错误,其中两个对象是相等的,即使它们不应该:
如何编写QuickCheck
测试用例来测试这种情况?在伪代码中,这看起来像这样:
我已经尝试查看项目 github 上的示例,但似乎它们并没有涵盖这些微不足道的案例。
欢迎任何提示!
testing - Test.QuickCheck:加快测试同一类型的多个属性
我正在测试一个随机生成器,生成我自己类型的实例。为此,我有一个自定义实例Arbitrary
:
这适用于Test.QuickCheck
(实际上Test.Framework
)测试生成的值是否具有某些属性。但是,我要检查的属性很多,添加的越多,验证它们所需的时间就越多。
有没有办法使用相同的生成值来测试每个属性,而不是每次都重新生成它们?我显然仍然想看看,在失败时,哪个属性不成立,所以制作一个巨大的属性and
并不是最优的。
haskell - haskell - 使用 QuickCheck 的平均浮点错误
我正在使用 QuickCheck-2.5.1.1 进行质量检查。我正在测试两个纯函数gold :: a -> Float
和f :: a -> Float
,其中的a
实例是任意的。
这gold
是一个参考计算,f
是我正在优化的一个变体。
迄今为止,我使用 quickcheck 的大多数测试都在使用\a -> abs (gold a - f a) < 0.0001
.
但是,我想在检查阈值的同时收集统计数据,因为了解平均误差和标准偏差对指导我的设计很有用。
有没有办法使用 QuickCheck 来收集这样的统计数据?
具体例子
举一个我正在寻找的东西的具体例子,假设我有以下两个函数来近似平方根:
对此的测试可能是:
因此,作为测试的副作用,我想知道的是统计数据abs (heron x - maclaurin x)
(例如平均值和标准差)。
testing - QuickCheck:生成平衡样本的嵌套数据结构的任意实例
Arbitrary
tl; dr:如果您的数据类型允许太多嵌套,您如何编写不会爆炸的实例?你如何保证这些实例产生你的数据结构的真正随机样本?
我想生成随机树结构,然后在我用我的库代码破坏它们之后测试这些结构的某些属性。(注意:我正在编写子类型算法的实现,即给定类型的层次结构,类型 A 是类型 B 的子类型。这可以任意复杂化,包括对层次结构的多重继承和初始化后更新. 不支持这两种方法的经典方法是舒伯特编号,我知道的最新结果是 Alavi et al. 2008。)
让我们以玫瑰树为例,如下Data.Tree
:
Arbitray 的一个非常简单(并且不要在家尝试)的实例是:
由于根据类型约束a
已经有一个实例,并且将有一个,因为它也是一个实例,这看起来很简单。它不会(通常)由于非常明显的原因而终止:由于它生成的列表任意长,结构变得太大,并且它们很可能不适合内存。甚至更保守的方法:Arbitrary
Forest
[]
出于同样的原因,再次无法正常工作。可以调整 size 参数,以降低列表的长度,但即使这样也不能保证终止,因为它仍然是多个连续的掷骰子,结果可能非常糟糕(我想要奇数节点 100孩子们。)
这意味着我需要限制整个树的大小。这不是那么直截了当。unordered-containers
很简单:只需使用fromList
. 这在这里并不容易:如何将列表随机变成一棵树,并且不会以某种方式产生偏见(即不支持左分支或非常左倾的树。)
列表中的某种广度优先构造(Data.Tree
由列表提供的功能都是预购的)会很棒,我想我可以写一个,但结果证明它不是微不足道的。由于我现在使用的是树,但稍后会使用更复杂的东西,我想我可能会尝试找到一个更通用、更简单的解决方案。有没有,或者我将不得不求助于编写自己的非平凡Arbitrary
生成器?在后一种情况下,我实际上可能只是求助于单元测试,因为这看起来工作量太大。
haskell - 使用快速检查
我为 foldl 编写了一个实现并想检查它是否有效,我尝试了一些案例,它似乎运行良好,但我想确定一下。
我阅读了有关 quickCheck 并尝试了它,但我似乎无法使其工作,这是代码
当我运行quickCheck test
它时会引发以下错误:
haskell - 如何生成简单类型的任意实例以进行快速检查
我有一个简单的类型定义:
我不能Cell
用作 quickcheck 属性的输入,大概是因为 quickcheck 不知道如何生成 Cell 值。
我的理解是我需要使 Cell 成为类型类的实例Arbitrary
。
例如,如果我希望使用 x 和 y 的随机正值生成 Cell,我该怎么做?
haskell - 请提供一个使用 QuickCheck2 的简单测试框架示例
我正在努力让这个基本的测试框架示例与 QuickCheck2 一起使用。由于示例使用 QuickCheck 1,我收到上面页面中提到的以下错误。我假设通常首选使用 QuickCheck2,但是如何将它与测试框架一起使用?
错误:
提前致谢。
如果我导入 Test.Framework.Providers.QuickCheck2,我会收到以下错误:
haskell - 关于 Haskell 的 QuickCheck,什么是收缩?
我正在学习 QuickCheck >= 2.6 的技巧,但我不明白收缩是什么。从类型签名来看,收缩看起来更像是扩展!请照亮我:)
haskell - 为一个类定义一套测试
这个问题涉及到Haskell QuickCheck 最佳实践(尤其是在测试类型类时)停止的地方。
我有一个类和该类的一堆实现。像这样的东西:
我所有的实现都应该满足某个属性。例如:
我想为每个实现测试该属性。我可以做这样的事情。(我正在使用 Test.Framework。)
但就我而言,我有几十个属性要测试,还有十几个类,所以这种方法容易出错,而且很麻烦。(我犯的一个常见错误是剪切和粘贴测试,但忘记更改类型名称,所以我最终为该属性测试 A 两次,而没有测试 B。)
我有一个解决方案,我会在下面发布,以防其他人觉得它有帮助。