書籍の感想です。
読んだ本
『初めての自動テストーーWebシステムのための自動テスト基礎』
著者:Jonathan Rasmusson
訳者:玉川紘子
発行所:オライリー・ジャパン
読んだきっかけ
テストやその自動化について学習しようと思っていたところ、和田(t_wada)さんが入門書としてお勧めしていた。1
全体の感想
タイトルにもあるように、HTMLで作成されたUIを伴うようなWebシステムを対象にした自動テストについて解説されている。
初心者にもわかりやすい表現やコミカルなイラストで構成になっていて、初めて自動テストについて学習するときや布教にも使いやすいと思う。
考え方に重点を置いた内容になっているので、テストフレームワークなどツールの学習は別途行うことになる。
テスト自動化のメリット
ソフトウェア開発をスケールさせていくことを考えると必須になると思う。
「テストに時間をかければ質が上がるか」というと、質とスピードはトレードオフではないのでスピードも上げることも一緒に考える必要がある。2
『LeanとDevOpsの科学』では「ソフトウェアデリバリのパフォーマンス」との関連が示されている。3
テストピラミッドと3層のテスト
何度も強調されているのが「UIテストは万能ではない」という点。
実際にUIテストを書いてみたのでこの点はわかる。一連の動作を自動化できたときはちょっとした感動があったのだが、そこにたどり着くまでとても大変であったし、テストは非常に脆く見えた。
それぞれのテストの特徴をふまえてバランスを考える必要がある。
自動テスト導入の進め方
重要とされているのは、なるべく下の層でテストできないか考えること。
これは前述の「UIテストは万能ではない」が示すように高コストで遅く、かつ壊れやすいという点からきている。
とはいえこれも状況次第で、テストのことが考えられていないレガシーなシステムだとユニットテストを入れるのが難しいので、外側(UI)から攻略していくことになる。
なのでいったん逆ピラミッド(アイスクリームコーン)の状態になったあと、ピラミッドの形にしていく流れが考えられる。
プログラミングの基礎
初心者やテスターを対象にしているので、プログラミングの基礎にも触れている。
特にコーディングスタイルを重要視していて「保守しやすいコードの書き方」を解説している。
これは長期的にもテストを「資産」とするための方法と言える。
モックの活用方法
初めてテスト自動化に挑戦していた頃、モックを使いすぎてテストに自信を持てなくなってきた事がある。「モックの泥沼」にはまった状態だった。
そういう時はプロダクトコードの設計を見直したり、上の層で本物を使ってテストすることを考える。
「古典派かモック派か」だと自分は古典派かな。
テスト駆動開発(TDD)
この章まで来るとテスターには向かない内容だが、設計に悩む初心者は試してほしい。
自然と良い設計になっていくのを感じるし、テストコードも付いてくるので良い手法だと思う。
まとめ
テスト自動化は人の効率を上げる
数多くのチェックを淡々と正確に行うのは機械が得意とするところ。自動化できるテストは機械に任せることにより、人にしかできないことに力を集中することができる。
常に見直す
自動化されたテストが長期的にもメリットを発揮し続けるには、常にテストのバランスやコードの状態に気を配る必要がある。
協調が大事
良い自動テストを作るには開発に関わる人たちの協力が必要。協力が促進されるような組織体制や仕組みから考えていくことが重要。