記事"ユニットテストの助けを借りたコードのクオリティー向上"についてのディスカッション

 

新しい記事 ユニットテストの助けを借りたコードのクオリティー向上 はパブリッシュされました:

シンプルなプログラムにさえ信じられないようなエラーがよくあるものです。「どうしてそんなふうになったんだろう?」というのが、そのようなエラーが明らかになったとき最初に思うことです「どうしたらエラーを出さずにすむのだろう?」というのは、あまり頻繁に心に浮かばない第2の問いです。完璧に欠点のないコードを作成するのは不可能です。特に大規模なプロジェクトでは。ですが、ちょうどよいタイミングでエラーを検出するために技術を利用できるものです。本稿では、一般的なユニットテスト方法の助けを借りてコードのクオリティーを向上する方法を説明します。

ユニットテスト作成についての練習

トレーニングのゴールを設定します。タスクがエントリで配列を2つ受け取る関数を持つライブラリを作成することだとします。この関数は第1の配列から第2の配列にないエレメントを削除します。結果、第1の配列は第2の配列のサブセットとなります。

そこで関数のプロトタイプを決定します。

void CreateSubset(int & a1[], int a2[]);

関数作成に対してテスト駆動方法を試してみます。テストデータセットを決めます。以下を行うため、複数の入力データの等価クラスをマークします。

  1. 両方の配列が空である。
  2. A1 は空、A2 にはエレメントがある。
  3. A1 にはエレメントがあり、A2 は空。
  4. 両配列が同様のエレメントセットを持ち、同様のサイズである。
  5. A1 には A2 にはないエレメントがある。
  6. A1 のエレメントの一部は A2 にもあり、A2 の一部は A1 に含まれる(どちらにも交点がある)。
  7. A1 エレメントはすべて A2 にあるが、A2 のサイズの方が大きい。
  8. A1 エレメントのごく一部が A2 にある。また、エレメントは配列じゅうに散らばっている。
  9. A1 エレメントのごく一部が A2 にある。また、エレメントは配列の最初に集中している。
  10. A1 エレメントのごく一部が A2 にある。また、エレメントは配列の最後に集中している。

作者: Андрей

理由: