私たちは、長年にわたってメインプログラムのためにかなりの数の単体テストを構築してきました。数千。問題は、非常に多くのテストがあるため、どのテストがあるのか明確に把握していないことです。そして、それは問題です。なぜなら、どこでテストが苦手なのか(または重複箇所があるのか)わからないからです。
私たちのアプリはレポートエンジンです。したがって、解析のテスト(すべてのテーブルプロパティを読み取るか)、データのマージ(マージで正しいテーブルプロパティを維持したかどうか)、最終ページのフォーマット(ページがテーブルに正しく配置されているか)に使用するテンプレートを使用できます)および/または出力形式(作成されたDOCXファイルは正しいですか)。
これにテストする必要があるものを追加します。テーブルセルの周りの余白を取ります(レポートデザインにはWord、Excel、およびPowerPointを使用します)。セル内のテーブル、垂直方向に結合したセル、水平方向に結合したセル、内部テーブルに垂直方向と水平方向に結合したセルを含むテーブルを含む垂直方向と水平方向に結合したセルについて、改ページ全体のパディングをテストする必要がありますページを分割します。
それでは、そのテストはどのカテゴリに属しますか?テーブルのパディング、改ページ、ネストされたセル、垂直に結合されたセル、水平に結合されたセル、または他の何か?
そして、これらのカテゴリをどのように文書化し、単体テストに名前を付けるなどしますか?
更新:多くの人が、カバレッジツールを使用して、完全にカバレッジがあることを確認することを提案しています。残念なことに、バグは特定の組み合わせに起因する傾向があるため、このケースでは使用が制限されています。そのため、すべてのコードはテスト済みですが、その組み合わせではありません。
たとえば、昨日、テンプレート(Word文書)のforEachループの終わりにWordブックマークを開始し、次のforEachループの始めに終了した顧客がいました。これはすべて単体テストのあるコードを使用していましたが、ブックマークを展開するテンプレートの組み合わせが25回開始され、10回終了することを考えていませんでした(2つのforEachループの行数が異なりました)。