0

わかりました、指定された配列で最も繰り返される数字を確認する関数があると仮定しましょう。

次に、この関数をテストする必要があり、関数が正しく機能することを確認するために特定の値を使用してテストする必要があります (単体テスト) - これらの値は何ですか? よくわかりません。

Psなぜこれらの値を使用する必要があるのですか?コードをデバッグするだけでなく、ペンと紙に書いて結果がどうなるかを確認し、出力された値と照合する必要があるのはなぜですか?

4

2 に答える 2

4

コーナーケース。

*ネガを処理できますか*

Array = [-5, -5, -5, 5, 5, 5, 5] expected : 5
Array = [-5, -5, -5, -5, 5, 5, 5] expected : -5

あいまいなケースをどのように処理しますか

Array = [1,1,1,2,2,2] expected = ?? (See spec for expected)
Array = [1,2,3,4,5,6] expected = ??

任意の大きなintをどのように処理しますか

Array = [999999999999999, 999999999999999, 999999999999999, -99999999999999999]
expected = 999999999999999;

任意の大きな配列をどのように処理しますか

Array = [0,0] + {i : 1 < i < 9999999999999, i is an int }
expected = 0; 

nullをどのように処理しますか

Array = null; 
expected = null; 

Array = [null, 1, 2, 3, 3, 3]
expected = 3;

Array = [null, null, null, 1, 2, 3, 3]
Expected = null or 3 depending on spec. 

ユニットがデバッグだけでなくテストするのはなぜですか?

1.)デバッグは、エラーがすでに存在することがわかっていることを前提としています。コードを見るだけですべてのエラーを常に知っていれば、テストする必要はまったくありませんか?

2.)多くの場合、コードのエラーよりも、関数仕様の未定義の領域に関心があります。配列でnull値を処理する方法を教えてくれたことはありません...APIが「完了する」前に、仕様でそれを指定する必要があります

3.)この特定の機能については、手作業で簡単に実行できます。しかし、関数のジャコビアン行列の決定を計算している場合はどうでしょうか。あなたは本当にそれを紙の上でやりたくないのですか?

4.)エンタープライズ環境では、形式化されたテストにより、チームがクランチタイムに手抜きをすることを防ぎます。これは企業に非常に損害を与える可能性があり、コードの安定性が低下するため、正味合計は開発時間を短縮するのではなく増加させます。

于 2012-11-05T18:19:09.680 に答える
1

値はテスト値です。あなたの例では、最も頻繁に発生する [1,2,2,3] を持つ配列、タイ [1,1,2,2,3] を持つ配列、および空の配列 [] を使用して、最も興味深いものをテストすることができます。エッジケース。

于 2012-11-05T18:11:45.710 に答える