近刊検索 デルタ

2019年6月27日発売

技術評論社

iOSアプリ開発自動テストの教科書 〜XCTestによる単体テスト・UIテストから、CI/CD、デバッグ技術まで

このエントリーをはてなブックマークに追加
内容紹介
「iPhone X、XR、iPad……端末が多すぎて、テストが手動じゃ追いつかない」
「競争が激しいアプリ開発現場で、スピードを落とさずテストしなければ」
「どうして、テストしたはずのアプリで、ユーザーからこんなにバグが報告されるんだ」

競争が激化し、複雑になるiOSアプリの開発において、こんな問題を解決できる手段が「自動テスト」です。

本書は、DeNAの開発生産性や品質を担うSWETグループのエンジニアたちが、iOSアプリ開発の自動テストにフォーカスしてまとめた、これまでにない“テストの入門書”です。自動テストの基本はもちろん、単体テスト・UIテスト、CI/CD、さらに効率的なデバッグのテクニックまでを網羅できます。

iOSアプリ開発でテストに関わるエンジニアはもちろん、開発の現場のすべてのエンジニアが持っておきたい、iOSテスト必携の1冊です。
目次
●はじめに

■■■第1章 自動テストをはじめる前に
■■1-1 なぜ自動テストを実装するのか
■■1-2 テストピラミッドを意識する
■■1-3 どこまでのテストを自動化するか
■■1-4 テストの目的を把握する

■■■第2章 自動テストにおける落とし穴を避ける
■■2-1 テストケースを独立させる
■■2-2 テストの失敗原因をわかりやすくする
■■2-3 自動テストをどこから追加していくか
■■2-4 不安定なテスト結果に向き合う
■■2-5 テストの実行時間を意識する

■■■第3章 XCTestを利用した単体テスト
■■3-1 XCTest frameworkとは
■■3-2 XCTestを使った最初の単体テスト
■■3-3 アサーション
■■3-4 失敗時のエラーメッセージを指定する
■■3-5 独自のアサーションを作成する
■■3-6 XCTestのライフサイクル(setUp / tearDown)
■■3-7 テストを階層化する - XCTContext
■■3-8 非同期なAPIのテスト - XCTestExpectation
■■3-9 単体テストが書きづらいケースに対処する
■■3-10 APIを利用するModelクラスをテストする
■■3-11 ランダムな順序で実行させる
■■3-12 コードカバレッジを考える

■■■第4章 単体テストに役立つOSSを活用する
■■4-1 Quick/Nimble - BDDフレームワーク
■■4-2 Mockingjay - HTTP通信のモック
■■4-3 Cuckoo - モック用のコードの自動生成
■■4-4 SwiftCheck - Property-based Testing

■■■第5章 XCTestを利用したUIテストの基本
■■5-1 XCUITestとはなにか
■■5-2 UIテストを実装するための最初のステップ
■■5-3 Xcodeのレコーディング機能を利用する
■■5-4 UI要素に設定されている情報を調べる
■■5-5 テストコードを実装する

■■■第6章 XCUITestのAPIを理解する
■6-1 UI要素を特定する
■■6-2 UI要素を操作する
■■6-3 UI要素の状態を確認する
■■6-4 UI要素の情報を取得する - debugDescription
■■6-5 対象のアプリを決める - XCUIApplication
■■6-6 端末を操作する - XCUIDevice
■■6-7 テスト実行時の成果物を保存する - XCTAttachment

■■■第7章 UIテストの一歩進んだテクニック
■■7-1 ユニークなAccessibility Identifierを設定する
■■7-2 UI要素に対する複数の操作をまとめる
■■7-3 アプリのUI変更に対応する - Page Object Pattern
■■7-4 UIテストの実行時間を短縮させる

■■■第8章 CI/CDの基本を押さえる
■■8-1 CI/CDとはなにか
■■8-2 iOSアプリ開発で利用できるCI/CDサービスを選ぶ
■■8-3 CI/CDの結果をフィードバックする
■■8-4 CI/CDサービスと連携するサービス
■■8-5 CI/CDパイプラインを決めて自動化する

■■第9章 fastlaneを利用したタスクの自動化
■■9-1 fastlaneとは
■■9-2 fastlaneを導入する
■■9-3 最初のレーンを定義して実行する
■■9-4 アクションの基本
■■9-5 Fastfileのライフサイクル
■■9-6 Rubyで定数や関数を定義する
■■9-7 プラグインの利用
■■9-8 fastlaneに用意されたアクションを利用する

■■■第10章 アプリ配信サービスとデバイスファームの活用
■■10-1 アプリ配信サービス - TestFlightを利用する
■■10-2 アプリ配信サービス - DeployGateを利用する
■■10-3 デバイスファーム - Firebase Test Labを利用する
■■10-4 デバイスファーム - AWS Device Farmを利用する

■■■第11章 BitriseとCircleCIによるパイプラインの自動化
■■11-1 Bitriseでワークフローを設定する
■■11-2 CircleCIを使ってワークフローを設定する

■■■第12章 デバッグのテクニック
■■12-1 ブレークポイントをもっと効果的に活用する
■■12-2 変数の値を監視する
■■12-3 Xcodeに用意されたデバッグツールを使いこなす
■■12-4 LLDBを使ったデバッグ
■■12-5 シミュレータのデバッグ機能を使う
■■12-6 実機のデバッグ機能を使いこなす
■■12-7 アプリ上でデザインを確認する - Hyperion

■■■Appendix
■■A-1 XCTestを導入する
■■A-2 XCTestを実行する
■■A-3 Bundlerによるツールバージョンの固定

●索引
●参考文献
●著者略歴
著者略歴
平田 敏之、細沼 祐介(ヒラタ トシユキ ホソヌマ ユウスケ)
●平田敏之(ひらた としゆき) DeNAのSWET(Software Engineer in Test)グループ所属。グループウェアの開発、女性向けWebサービスやiOSアプリ開発を経て現職のSWETにたどり着く。現職では、iOSやCI/CDに関する領域を主に担当。テストに関する勉強会である「Test Night」を立ち上げ、SWETメンバーと共に定期開催している。 ●細沼祐介(ほそぬま ゆうすけ) DeNAのSWET(Software Engineer in Test)グループ所属。JavaのテスティングフレームワークであるJUnitや、XP開発におけるテスト駆動開発について、黎明期で触れ、自動テストに興味を持つ。Web、Windows、iOSなど様々なプラットフォームでのアプリケーション開発を経て、自動テストの専門部署であるSWETにたどり着く。現在はiOS/Go言語の自動テスト領域を担当。SwiftやHaskellなどの関数型プログラミングを好む。

※近刊検索デルタの書誌情報はopenBDのAPIを使用しています。

本日のピックアップ
印刷学会出版部:宇野則彦 
アトリエサード:アトリエサード 
日経BP:グレッチェン・ルービン 花塚恵 
三才ブックス:市原千尋 

連載記事

発売してからどうです(仮)

>> もっと見る

※近刊検索デルタの書誌情報はopenBDのAPIを利用しています。