問題タブ [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
、使い方に頭を悩ませることはできません。
Set
誤って(ではなくList
)を使用してデータ型を実装したとしましょう。
その後、このバグに遭遇しました。2つのオブジェクトは、そうではない場合でも同じです。
QuickCheck
このケースをテストするためのテストケースを作成するにはどうすればよいですか?擬似コードでは、これは次のようになります。
プロジェクトのgithubで例を見てみましたが、そのような些細なケースはカバーされていないようです。
ヒントは大歓迎です!
testing - Test.QuickCheck:同じタイプの複数のプロパティのテストを高速化
自分のタイプのインスタンスを生成するランダムジェネレーターをテストしています。そのために、私は次のカスタムインスタンスを持っていますArbitrary
:
これは、生成された値が特定のプロパティを保持していることをテストするためTest.QuickCheck
に(実際には)とうまく機能します。Test.Framework
ただし、確認したいプロパティはかなりあります。追加するほど、すべてのプロパティを確認するのに時間がかかります。
毎回新しく生成するのではなく、すべてのプロパティをテストするために同じ生成値を使用する方法はありますか?私は明らかに、失敗時にどのプロパティが保持されなかったかを確認したいので、1つの巨大なプロパティを作成することand
は最適ではありません。
haskell - haskell-QuickCheckを使用した平均浮動小数点エラー
QuickCheck-2.5.1.1を使用してQAを行っています。私は2つの純粋関数gold :: a -> Float
とをテストf :: a -> Float
していa
ます。インスタンスは任意です。
gold
これが参考計算であり、私f
が最適化しているバリエーションです。
これまで、クイックチェックを使用した私のテストのほとんどは、のようなテストを使用してき\a -> abs (gold a - f a) < 0.0001
ました。
ただし、平均誤差と標準偏差を知ることは私の設計を導くのに役立つので、しきい値を確認しながら統計を収集したいと思います。
QuickCheckを使用してこのような統計を収集する方法はありますか?
具体例
私が探している種類のものの具体的な例を与えるために、平方根を近似するための次の2つの関数があると仮定します。
これのテストは次のようになります。
したがって、テストの副作用として知りたいのは、統計abs (heron x - maclaurin x)
(平均や標準偏差など)です。
haskell - DocTest の QuickTest で ByteStrings を使用するには?
doctest とquickcheckArbitrary
を使用する場合、インスタンスを定義するにはどうすればよいですか?
Doctest と Cabal は、ここで説明されているようにセットアップされ、テスト用に別のディレクトリが作成されます。
doctest の行は次のようになります。
Arbitrary
doctest が見つけられるように、どこでどのようにインスタンスを定義すればよいですか? テストプロジェクトで定義したいことに注意してください。
testing - QuickCheck: バランスの取れた標本を生成するネストされたデータ構造の任意のインスタンス
tl;dr:Arbitrary
データ型で入れ子が多すぎる場合、爆発しないインスタンスをどのように記述しますか? そして、これらのインスタンスがデータ構造の真にランダムな標本を生成することをどのように保証しますか?
ランダムなツリー構造を生成し、ライブラリ コードで構造を壊した後、これらの構造の特定のプロパティをテストしたいと考えています。(NB: サブタイピング アルゴリズムの実装を書いています。つまり、型の階層が与えられた場合、型 A は型 B のサブタイプです。これは、複数の継承と初期化後の更新を階層に含めることで、任意に複雑にすることができます。これらのどちらもサポートしない古典的な方法は Schubert Numbering であり、私が知っている最新の結果は Alavi et al. 2008 です。)
次のバラの木の例を見てみましょうData.Tree
。
Arbitray の非常に単純な (そして自宅で試してはいけない) インスタンスは次のようになります。
型制約に従ってa
既にインスタンスがあり、これもインスタンスであるため、インスタンスがあるため、これは簡単に思えます。非常に明白な理由で (通常は) 終了しません: 生成するリストが任意に長いため、構造が大きくなりすぎて、メモリに収まらない可能性が高くなります。さらに保守的なアプローチ:Arbitrary
Forest
[]
同じ理由で、再び機能しません。リストの長さを抑えるために size パラメーターを微調整することもできますが、それでも終了を保証するものではありません。これは、まだ複数の連続したサイコロが振られているためです。子供。)
つまり、ツリー全体のサイズを制限する必要があります。それはそれほど簡単ではありません。unordered-containers
簡単です: を使用するだけfromList
です。これはここではそれほど簡単ではありません: どのようにしてリストをランダムにツリーに変換し、いずれにせよ偏りを招くことはありません (つまり、左枝や非常に左寄りのツリーを好まない)。
リストからある種の幅優先の構築 (によって提供される関数Data.Tree
はすべて事前注文されています) は素晴らしいものであり、それを書くことはできると思いますが、それは自明ではありません。私は現在ツリーを使用していますが、後でさらに複雑なものを使用するため、より一般的で複雑でない解決策を見つけようとするかもしれないと考えました。それとも自明ではない独自のArbitrary
ジェネレーターを作成する必要がありますか? 後者の場合、これは手間がかかりすぎるように見えるので、実際には単体テストに頼るかもしれません。
haskell - クイックチェックの使用
foldl の実装を書き、それが機能するかどうかを確認したかったので、いくつかのケースを試してみましたが、うまく機能しているようですが、確認したいと思います。
私はquickCheckについて読んで試してみましたが、うまくいかないようです。これがコードです
実行するquickCheck test
と、次のエラーがスローされます。
haskell - クイックチェック用に単純型の任意のインスタンスを生成する方法
私は単純な型定義を持っています:
Cell
おそらくクイックチェックがセル値を生成する方法を知らないため、クイックチェックプロパティへの入力として使用できません。
私の理解では、Cell を型クラスのインスタンスにする必要がありますArbitrary
。
たとえば、x と y のランダムな正の値で Cell を生成したい場合、どうすればよいでしょうか?
haskell - QuickCheck2 を使用する簡単なテスト フレームワークの例を提供してください
この基本的なテスト フレームワークの例を QuickCheck2 で動作させるのに少し苦労しています。サンプルで QuickCheck 1 を使用しているため、上記のページに記載されている次のエラーが発生します。QuickCheck2 の使用が一般的に好まれると思いますが、test-framework でどのように使用すればよいですか?
エラー:
前もって感謝します。
Test.Framework.Providers.QuickCheck2 をインポートすると、次のエラーが発生します。
haskell - Haskell の QuickCheck に関して、シュリンクとは何ですか?
QuickCheck >= 2.6 のロープを学んでいますが、シュリンクとは何かを理解していません。タイプ シグネチャを見ると、shrink は expand のように見えます。私を照らしてください:)