私は進化的アルゴリズムを実験するためのパッケージをコーディングしていますが、言うまでもなく多くの確率的方法が含まれています。さて、私はこのパッケージのいくつかの(doc)テストを書いてみたいので、すべてがうまくいくことを確認できますが、テストが本当に「ほとんどの時間」に当てはまる状況に遭遇します。私はおそらくこれに間違ったやり方で近づいているように感じますが、私はまだこれについてあなたの考えを聞きたいと思います。例えば確率関数のテストを書く
、私は私のdoctestをにこのようなものを持っている:
>>> a = Genome()
>>> b = Genome()
>>> a.mutate()
>>> a != b
True # Well, most of the time.
はそのようなテストはすべてが動作している間にテストが時々失敗することを意味する実装。
私がテストを行う前に、RNGシードを修正するための提案を読んで、その後私はすべてがテストが期待される結果を含める必要があるため、私は、テストを書くことができます前を動作することを確認する必要があります。
あなたは「ほとんどの時」であなたが望むものを知っていますか?それが少なくとも1%であれば、ユニット内で100個の回答を生成し、1〜2個の回答があなたの望むものと異なることを確認できます。 – Zenon
@ Zenonしかし、統計的には、その最小パーセンテージ以上になることがありますので、テストに失敗することがあります。 – noio
確率的関数に関するテストを特定し、失敗した場合は、妥当なしきい値で2回目のテストを実行してください。 – Zenon