テストするオープンソース ソフトウェアが割り当てられました。ソフトウェアには 3 つのパッケージがあり、各パッケージには 10 個以上のクラスがあり、各クラスには数十のメソッドがある場合があります。
私の質問は、構造 (ホワイト ボックス) テストを開始する前に、ソフトウェアのすべてのコード行を理解する必要があるかということです。
main() メソッドから始まるプログラム全体の流れを理解する必要がありますか?
私が取るべきアプローチは何ですか?
テストするオープンソース ソフトウェアが割り当てられました。ソフトウェアには 3 つのパッケージがあり、各パッケージには 10 個以上のクラスがあり、各クラスには数十のメソッドがある場合があります。
私の質問は、構造 (ホワイト ボックス) テストを開始する前に、ソフトウェアのすべてのコード行を理解する必要があるかということです。
main() メソッドから始まるプログラム全体の流れを理解する必要がありますか?
私が取るべきアプローチは何ですか?
各メソッドが何をすべきかについての仕様がある場合: 指定された入力に対して期待される出力は何ですか? それらのメソッドの実装の詳細に入る必要はありません。通常、これは書き留めておく必要があります。
メソッドが定義済みのコントラクト (存在する場合) を満たしているかどうかを確認する単体テストを作成できます。
仕様がない場合、または最近の傾向である「UserStories」を使用している場合は、「仕様をリバース エンジニアリングする」必要があります:) 各メソッドを分析して、それが何をしているのかを理解する必要があります。次に、それらのメソッドが呼び出されている場所を確認します。メソッド呼び出しで渡される可能性のある値を把握するために。また、呼び出しメソッドから、コーナー ケースが何であるかがわかります。そして、あなたが間違いなくテストしたいもの。
....そしてゆっくりとコード全体を学びました:)
テストにはいくつかの種類があります。
BigInteger fact(int n)
メソッドがある場合、通常の正の整数、ゼロ、負の整数、および最大/最小値に関するテストを作成する必要があります。JUnit、TestNGなど、役立つライブラリがいくつかあります。ソフトウェア業界の暗黒時代の後、コミュニティはついにいくつかの優れた単体テストの実践にたどり着きました。