八葉の日記

日々、感じたことをまとめる場として利用する

ソフトウェアテスト(統合テストとユニットテスト) 覚書

■統合テスト
複数の層を1つに繋げるテストを指す。

 できること
 - UIテストで見つけにくい下位の不具合、最下層のユニットテストでは見つからない不具合を検出できる
  → 複数の部品がちゃんとつながっていることを確認できる

ユニットテスト
※はじめにUIテストのデメリット
※ - 時間がかかる。一つあたりが数秒かかる場合を考えると数がおおくなればなるほど時間がかかる
※ - 問題あることの検知は容易だが、どこに問題があるか検知するのが難しい

 できること
 - 高速に実行できる、手軽に作成できる、迅速にフィードバックできる
 - コードが正しく動くことを保証する。
 - テストを書くことでコードに意図を伝えることができる
※いつまでやるか
  →コードに自信がもてるまで。考えるべきことはすべて考えたかということがテストで明らかになる
 


ユニットテストのデメリットとしていかが起こりうる。
モックの泥沼:ユニットテストを頑張って書いた人なら一度はかんじたことがある。
       「テストコード中の事前準備(モックの設定)が嫌におおい」→テストコードを書くのに時間がかかる。
       原因は、テスト対象コード自体が保守しにくい構造になっているため、テストコードとテスト対象が密接に結びついているため。

解決策
1.リファクタリング:試験対象を直して、試験コードもきれいにする。
2.入出力にのみ注目する:テスト対象レイヤのインプットとアウトプットのみに注目して試験を行う。

両者ともに試験対象と試験コード間の結合度を下げる。2については、ポートとアダプタというアーキテクチャを利用できる。