『初めての自動テスト』
https://gyazo.com/8652423a5ccc41856870b2da18461ec8
初めての自動テスト――Webシステムのための自動テスト基礎
Jonathan Rasmusson 著、玉川紘子 訳
感想
章末まとめの箇条書きがよくまとまっていて良かった
ebook版は、図がカラーでよかった
不自然な日本語がなく、訳注が親切な翻訳本。とても読みやすかった
JavaScriptがES2015より前の書き方なのが残念。我慢して読んだ。
varのみ
アロー関数がないからthat = thisが登場
jQueryがわからないから、雰囲気で読むしかなかった。
得た知見・気づき
テストのピラミッドを意識する
"UIテストは「緩く」保つ" は意識しないと密に書きそうだなあと思った
Chrome Developer Toolsで$()や$$()を使えるのを初めて知った
see $()
いままで、「UIテスト」と「統合テスト」を混同していたことがわかった
UIテストはUIを実際に操作している(裏でヘッドレスブラウザを動かしているはず)
本書の場合、Capybaraを使ってる
用意されているDSLの例
visit
fill_in
click_button
HTTPリクエストメソッド(GETやPOST)を使った統合テストのコードを見ることで、UIを介していないことを把握した
本書の場合、RSpecを使ってる
RSpecにはgetやpostなどが用意されている
テスト駆動開発は設計のテクニック(再認識)
まだよくわかってないこと
自動テストを導入して時間を確保して取り組む「探索的テスト」についていまいちわかってない(本書の範疇ではない)
E2Eテストの厳密な定義がわからない(UIテストに含まれるものなのか、同義なのかとか)
11章の「ポートとアダプタ」の部分が少しもわからなかった。著者も理解するのに時間がかかる章だと言っているので、実践を繰り返して理解を深めようと思う。
hr.icon
目次
第Ⅰ部 ピラミッドの地図を作る
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 試してみよう
読んだ 2020-07
007.63