疑い始めたらキリがないという話です。ぐだぐだです。
固定した値でのテスト
例えば、FizzBuzzのテストをするとしよう。fizzBuzzを返すことをテストするときは、Objective-Cだと下記のように書く
- (void)testFizzBuzz15 { NSString *result = FizzBuzz.mapping(15); XCTAssertEqualObjects(result, @"fizzbuzz", @""); }
単純に値に対して適切な文字列を返す関数に15を入れてAssertで正しい値が帰ってきているかをテストしている。
15だけで不安はない?
15だけがうまく言って他の15の倍数は動かないかもしれません(まともなエンジニアならそうでは無いと思いますが)。せいぜい30をしておけばいいでしょう。より複雑なメソッドは不安になるかもしれません。どのくらいやれば不安じゃなくなるでしょうか?ループで100回行えばいいでしょう?テストを動かすたびに?毎回?
ランダムに値を決める
QuickCheckを使えばランダムに値を生成され、テストを行うことが出来ます。毎回違う値でテストが行えます。これで安心できるかどうかは別として15だけ通るテストでは無いはずです。
ところでランダムのテストってどうやるの?
ランダムな値を使ってテストをしていますが、実際その値ってランダムなの?どうやって均等に分散されていることを確かめるのか?せめて概ねそれらしい確率で出てきていることを確かめたい。例えば下記のリンクのようなやり方があります。
ランダムに振る舞う機能を JUnit する #渋谷Java 第3回
ここでは統計的な手法を用いることによって解決しています。非常にステキだと思います。
まとめ
まとまらない