branch10480’s blog

Topics that I've learned.

iOSアプリ開発自動テストの教科書 を読んでいく 〜 2 〜

単体テストのメリット

メリット
細かい粒度でテストしておくことで結合した時の品質が担保できる
内部のロジックに着目し、網羅的なテスト(ホワイトボックステスト)が可能になる
高速で実行可能
UIテストと異なり、デザインが変更されてもテストを修正しなくて良い場合が多い

小さい部品(ユニット)に対して 高速 かつ 繰り返し可能 な自動テストを作成するのは費用対効果が高いとされている。

UIテスト

UIテストにおける弱点は以下。

弱点
手動テストと同様のことができるとは限らない(微妙なデザイン崩れの検知など)
UIの変化に伴いテストコードの修正が必要になる(UI変更が頻繁に起こる画面に実装すると修正コストがかかる)
実行時間がかかる

UIテストを導入し運用し続けるためには 実装コスト運用コスト の両方を意識する必要がある。

テストケースを独立させる

テストは互いに独立した状態が好ましい。
言い換えると、あるテストが他のテスト結果に依存しない方が良いということ。

独立していないテストを実行すると...

  1. 失敗した場合に原因の特定が困難になる
  2. テスト実行結果が安定しない(1つを直したら他が失敗する など)

テストを独立させるためのヒント

ヒント
実行順序に依存したテストを書かない
グローバルな状態、あるいは外部システムを変更しない。変更した場合は元に戻す。

> 次回に続く