やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

iOSアプリ テスト自動化入門 のサポート

【3/21】タイトルを変えました

拙著『iOSアプリ テスト自動化入門』が発売されました。このエントリで内容のフォローをしていきます*1ので、誤字・脱字、説明の足りないところ等ありましたら、コメントなどでご指摘ください。

iOSアプリ テスト自動化入門

iOSアプリ テスト自動化入門

Amazonさんでは在庫切れのようですが、お近くの書店等でぜひお手に取ってご覧ください。

サンプルコードはGitHubで公開しています。

本書の内容、想定読者、目次などについては、先のエントリを参照してください。

誤字・脱字・補足説明など

1.1.1 テスト自動化の必要性

3.2 GHUnit

  • Podfileに記述する識別子が、'GHUnitIOS'から'GHUnit'に変更になりました(ただしiOS 6以上)

3.3 Kiwi

  • Podfileに記述する識別子が、'Kiwi/XCTest'から'Kiwi'に変更になりました
  • サンプルコードで使用していた[KiwiStubAdditions stubAndReturn:]は非推奨になりました。[KiwiStubAdditions stub: andReturn:]に変更しています

5.3 Frank

5.4 MonkeyTalk

5.5.1 KIF(Keep It Functional)

  • XCTestに対応したKIF 3.0がリリースされています。Xcode 5.1ではKIF 3.0以降でないとビルドに失敗するようです

6.2.4 ビルドの配布方法

7.3.2 .travis.yml

8.1 コードカバレッジ

  • Xcode 5.1より、カバレッジ取得のための__gcov_flush()による回避策は不要となりました。サンプルコードでは以下を変更しています。
    • GenerateTestCoverageFor_iOS7を使用しない
    • Makefilecoverageルールを廃止し、testルールに統合

執筆に関して

企画自体は昨年前半に決まっていたのですが、仕事のスケジュール、Xcode 5・iOS 7リリースによる様々な影響もあって、ほぼ昨年一杯かかってしまいました。

企画当初からChapter 2にある「ユニットテストの書きかた、テスタブルなプロダクトコード」が中心でした。その軸は変わらなかったのですが、想定よりもChatper 7(CI)、Chapter 8(メトリック)にページを割くことになりました。
そもそも普段は一人で開発しているもので、余りこのあたりの恩恵を受けていませんでした。しかし書き進めるうち、またテスト自動化研究会などで話をするうち、現状ユニットテストすら無いプロダクトにおいて「CIや静的解析から入る」アプローチも有効だと感じ、それがページ数に反映された形です*2

また、勉強会などで質問を受けるたび、テスト自動化、それ以前にテストに関しての前提がまちまちであると感じており*3、この本がテストおよびテスト自動化へのスタートラインになるよう気を配ったつもりです。

今回、執筆はMarkdown、査読はGitHub上に上げた原稿をもとにIssueを上げていただく形で進めました。自動化の本を書いていながら、スクリーンショットを撮影したり捏造したり、校正以降はpdfを目diffするなど、昔懐かしい感じ(戻りたくはない)の手作業に追われて考えさせられたりもしましたが、なんとか形にすることができました。

*1:ブクマしてね!

*2:特にChapter 8は、当初Appendixだったものが昇格しました

*3:ほぼ、質問者の現状へのヒアリングから始まります