『初めての自動テスト』
https://gyazo.com/8652423a5ccc41856870b2da18461ec8
初めての自動テスト――Webシステムのための自動テスト基礎
感想
章末まとめの箇条書きがよくまとまっていて良かった
ebook版は、図がカラーでよかった
不自然な日本語がなく、訳注が親切な翻訳本。とても読みやすかった
JavaScriptがES2015より前の書き方なのが残念。我慢して読んだ。
varのみ
アロー関数がないからthat = thisが登場
jQueryがわからないから、雰囲気で読むしかなかった。
得た知見・気づき
いままで、「UIテスト」と「統合テスト」を混同していたことがわかった
用意されているDSLの例
visit
fill_in
click_button
HTTPリクエストメソッド(GETやPOST)を使った統合テストのコードを見ることで、UIを介していないことを把握した
本書の場合、RSpecを使ってる
RSpecにはgetやpostなどが用意されている
まだよくわかってないこと
自動テストを導入して時間を確保して取り組む「探索的テスト」についていまいちわかってない(本書の範疇ではない) E2Eテストの厳密な定義がわからない(UIテストに含まれるものなのか、同義なのかとか)
11章の「ポートとアダプタ」の部分が少しもわからなかった。著者も理解するのに時間がかかる章だと言っているので、実践を繰り返して理解を深めようと思う。
hr.icon
第Ⅰ部 ピラミッドの地図を作る
1.1 美しかった自動テスト
1.2 車輪が転がるように
1.3 3つの厳しい教訓
1.4 テストのピラミッドに入り込む
1.4.1 章の順序
1.4.2 3つの層
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.1 音楽を聞こう
11.2 モックの利用
11.3 ステップ1:モックを準備する
11.4 ステップ2:エクスペクテーションの設定
11.5 結合による束縛
11.6 モックの泥沼
11.7 ポートとアダプタ
11.8 質問タイム
11.9 この章で学んだこと
12章 テストファースト
12.1 どこから始めるか
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 試してみよう