初めての自動テスト

―Webシステムのための自動テスト基礎

[cover photo]
TOPICS
Web
発行年月日
PRINT LENGTH
288
ISBN
978-4-87311-816-1
原書
The Way of the Web Tester
FORMAT
Print PDF
Ebook
3,080円
Ebookを購入する
Print
3,080円

Webシステムの自動テストを始めたい方を対象に、自動テストの考え方やフレームワークを解説する書籍です。テストのピラミッドやユーザーインターフェイステストの概念など、基礎的な事柄から、レガシーシステムへのUIテストの追加、RESTfulなWebサービスのテスト、ブラウザ上のJavaScriptの挙動をユニットテストでテストする方法など、実践的な事柄までを豊富なイラストとサンプルを使って分かりやすく解説します。さらにテストファーストやモックの活用法、テスターに向けた自動テストのためのプログラミング基礎知識なども詳述。自動テストを書くためのノウハウを網羅した本書は、自動テストをマスターしたいエンジニア必携の一冊です。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

2刷正誤表


※2018年4月。3刷で修正済みです。

■P.29 下から3行目、P.30 上から4行目
【誤】querySelector
【正】querySelectorAll

■P.29-30 コラム「CSSセレクタがうまく動かない場合」
※コラムの最後に以下の2つのパラグラフを追加。

もう少し厳密に言うと、jQueryを用いているサイトにおいて$()はjQuery()のショートカットであり、ブラウザのデベロッパーツールの$()とは意味が異なります。デベロッパーツールで要素を取得するショートカットとしては$()や$$()があり、それぞれJavaScriptのdocument.querySelector()、document.querySelectorAll()に相当します。jQueryを用いていないサイトで$()を使うとdocument.querySelector()の意味になり、セレクタに対応する最初の要素一つだけが取得されることになります。ですので、そういった場合は$$()もしくはdocument.querySelectorAll()を使えば良いということになります。ちなみにjQueryを用いているサイトでこれらを使用しても問題ありません。
このページ(https://developers.google.com/web/tools/chrome-devtools/console/expressions?hl=ja#_2)にGoogle Chromeに付属のデベロッパーツールの使い方が解説されています。このツールを使ってCSSセレクタのチェックを行う方法については、本書の3章でも詳しく解説しています。

目次

謝辞
本書への推薦の言葉
訳者まえがき
はじめに

第Ⅰ部 ピラミッドの地図を作る

1章 テストのピラミッド
    1.1 美しかった自動テスト
    1.2 車輪が転がるように
    1.3 3つの厳しい教訓
    1.4 テストのピラミッドに入り込む
        1.4.1 章の順序
        1.4.2 3つの層
    1.5 UIテスト
    1.6 統合テスト
    1.7 ユニットテスト
    1.8 親指の法則
    1.9 誰が自動テストを書くのか
    1.10 この章で学んだこと

2章 ユーザーインターフェイステストに触れる
    2.1 いつもの失敗リリース
    2.2 ユーザーインターフェイステストを始めよう
    2.3 UIテストの仕組み
    2.4 HTMLを使った検証
    2.5 CSSを使った要素の選択
    2.6 この章で学んだこと

3章 レガシーシステムにUIテストを追加する
    3.1 ステップ1:正しい画面にいることを確認する
    3.2 ステップ2:正しいCSSセレクタを見つける
    3.3 ステップ3:アサーションを追加する
        3.3.1 有効な認証情報でテストする
        3.3.2 無効な認証情報でテストする
    3.4 この章で学んだこと

4章 統合テストで点と点を結ぶ
    4.1 UIがない!
    4.2 統合テストを始めよう
    4.3 Webの仕組み
    4.4 HTTPでおしゃべりする
    4.5 RESTを知る
    4.6 この章で学んだこと

5章 RESTfulなWebサービスの統合テスト
    5.1 RESTfulな許可APIをテストする
    5.2 HTTP GET
    5.3 HTTP POST
    5.4 HTTP PUT
    5.5 HTTP DELETE
    5.6 この章で学んだこと

6章 ユニットテストで基礎を固める
    6.1 すべてが完璧な世界
    6.2 UIテストの課題
    6.3 ユニットテストを始めよう
    6.4 ユニットテストの仕組み
        6.4.1 正しく動くことを保証する
        6.4.2 壊れる可能性のある箇所はすべてテストする
        6.4.3 テストファースト
    6.5 上級テクニック
    6.6 この章で学んだこと

7章 JavaScriptを使ったブラウザ上のユニットテスト
    7.1 ブラウザの中の魔法
    7.2 JavaScriptとテストのピラミッド
    7.3 バグハント
    7.4 ステップ1:HTMLを調べる
    7.5 ステップ2:JavaScriptを解析する
    7.6 ステップ3:テストを書く
        7.6.1 モデル
        7.6.2 コントローラ
    7.7 静的型付けと動的型付け
    7.8 質問タイム
    7.9 この章で学んだこと

8章 ピラミッドを登る
    8.1 ピラミッドの具体例
    8.2 ユニットテストから始める
    8.3 統合テストへステップアップする
    8.4 UIテストへ到達する
    8.5 逆ピラミッド
    8.6 不安定なテストの扱い方
        8.6.1 テストを書き直す
        8.6.2 テストをピラミッドの下の層へ移動させる
        8.6.3 価値のないテストとみなし、テストを止める
    8.7 この章で学んだこと

第Ⅱ部 ピラミッドを探検する

9章 プログラミング初級講座
    9.1 プログラミングの構造
    9.2 コーディングスタイルの重要性
    9.3 適切な命名
    9.4 スペースの入れ方
    9.5 重複との戦い
    9.6 ルールに従ってやってみよう
    9.7 ステップ1:スペースの入れ方を修正する
    9.8 ステップ2:良い名前を選ぶ
    9.9 ステップ3:プロダクションコードの重複に対処する
    9.10 ステップ4:テストコードの重複を取り除く
    9.11 この章で学んだこと

10章 テストを整理する〜混沌の中から法則を見つけ出す〜
    10.1 混乱する世界
    10.2 分離されたテストの美しさ
    10.3 コンテキストを明確にする
    10.4 ハッカーに注意
    10.5 この章で学んだこと

11章 効果的なモックの活用
    11.1 音楽を聞こう
    11.2 モックの利用
    11.3 ステップ1:モックを準備する
    11.4 ステップ2:エクスペクテーションの設定
    11.5 結合による束縛
    11.6 モックの泥沼
    11.7 ポートとアダプタ
    11.8 質問タイム
    11.9 この章で学んだこと

12章 テストファースト
    12.1 どこから始めるか
    12.2 テスト駆動開発(TDD)とは
    12.3 ステップ1:失敗するテストを書く
    12.4 ステップ2:テストを成功させる
    12.5 ステップ3:リファクタリングする
    12.6 TDDの利点
    12.7 実践してみよう
        12.7.1 ステップ1:失敗するテストを書く
        12.7.2 ステップ2:テストを成功させる
        12.7.3 ステップ3:リファクタリングする
    12.8 サイクルを繰り返し回そう
    12.9 質問タイム
    12.10 この章で学んだこと
    12.11 おわりに

付録A CSSチートシート

付録B Google Chromeのデベロッパーツール

付録C サンプルコードを動かすための環境構築
    C.1 準備(リソースのダウンロード)
    C.2 JavaScriptのテスト
        C.2.1 テスト結果を見てみる
        C.2.2 テストを修正する
    C.3 Rubyのテスト
        C.3.1 必要なツールのインストール
        C.3.2 Railsのアプリケーション起動
        C.3.3 UIテストの実行
        C.3.4 統合テスト/ユニットテストの実行
        C.3.5 試してみよう

参考文献
索引