branch10480’s blog

Topics that I've learned.

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

テストコードの中身をわかりやすくする

テストコードの中身もわかりやすくなっていることが重要。
テストコードは主に以下のフェーズを行っていく。

No フェーズ
1 前処理(準備)- Setup
2 実行
3 検証
4 後処理(後始末)- TearDown

この4フェーズに分けて実装する考え方は Four-Phase Test と呼ばれている。
こうすることで何をテストしているのかがわかりやすくなる。もしこれらの処理がバラバラに散らばっていると読み手がこのテストの意図を掴みにくくなってしまう。

■ 実装例

func testAddWidthPositiveNumber() {
    // 前処理(準備)
    let calculator = Calculator()
    // 実行
    let result = calculator.add(3, 4)
    // 検証
    XCTAssertEqual(result, 7, "3 + 4 = 7 であること")
    // 後処理(後始末)
}

Setup(前処理)、TearDown(後処理)は大抵の場合テストクラス内で共通化して使う。(クラス内の複数のテストで使い回す)

上記の Four-Phase Test 意外にも「Arrange, Act, Assert」、「Given-When-Then」などのスタイルもある。

テストが失敗した時の情報を用意する

自動テストが失敗した時の情報があると原因の特定をしやすくなる。テスト時の情報とはテスト名以外に自動テスト実行時のログなどである。

iOSで利用する XCTest のアサーションでは失敗時に出力する文字列を指定できる。

また、テストピラミッドの上に行くほど情報を欲する。画面操作が発生するUIテストではテストが失敗した時点の前後情報があると原因特定がしやすい。

e.g.: スクリーンショット、動画

> 次回に続く