とあるプログラマーの技術ブログ
books

【読書記録】Complete Guide to Test Automation (1)

管理人
12:25 am

Complete Guide to Test Automationというテスト自動化に関する本(洋書)を読んでいるので、そのメモを少しずつ残す。今回は1章と2章。

この本の分量だが、ペーパーブックで560ページとのことなので、そこそこの量である。英語の本に読み慣れている人でも少し覚悟のいる分量かなと思う。全体は2部構成で、第1部は8章から成り立ち、テスト自動化のWhyWhatについて述べられている。9章以降の11章分が第2部となっており、Howについて書かれている。

1章 The Value of Test Automation (テスト自動化の価値)

なぜテストを自動化したいのか? あるいは自動化すべきなのか?

ウォーターフォールモデルからアジャイルへの移行が、その大きな動機の一つだと述べられている。長期間のプロジェクトで、先に全ての要求を仕様化し、製造が終わったら一度だけテストをするというやり方ならば、手動でテストを行っても安くすむ。

大規模SI案件を想像するとまさにそのとおり。テスト自動化のお金なんて顧客に払っていただけないので、最後にビッグバンでテストを実施(The人海戦術)してお終い、だよね。(それは顧客にとって不幸だと思うのだが、請負開発の負の面としか言えない)。

21世紀に入り世の中の状況は変わった。ビジネスやテクノロジーの複雑化や変化のスピードアップによって、事前の計画が困難となり、アジャイル開発が急速に普及することとなった。リリースサイクルが短くなればなるほど、都度手動でテストなんてしていられない!

というわけでビジネスの変化に迅速に追随し、ソフトウェアで価値を生み続けるためにテスト自動化が必須となるのだが、単にテストの手間を省く以上の効果があるのだと述べられている。

本書で直接その言葉は出てこないのだが、いわゆる技術的負債の解消である。

一般に、ソフトウェアが成長して大きくなるにつれて、新しい機能の追加にかかるコストは増えていく。その原因となるのが技術的負債だ。本書の著者は、コスト増の原因は複雑さの増加であり、複雑さには二種類があると述べている。

  • 元来の複雑さ(inherent complexity)
  • 偶発的な複雑さ(accidental complexity)

機能を増やしていく以上、より複雑(complex)になっていくのは避けられない、というのが前者(モジュールやコンポーネントの数が増えていく)。それに対して、コミュニケーション不足や業務理解不足、技術スキル不足などによって(設計が歪み)不必要に複雑化してしまうというのが後者である。

後者がソフトウェアの複雑さの増加度合いを非線形にするものであり、これを線形に保つためにはリファクタリングによってコードを常に保守しやすく保たねばならない。そのためには包括的な回帰テストが必須となる。

2章 From Manual to Automated Testing (手動テストから自動テストへ)

この章では、手動テストから自動テストへの移行について書かれている。まずはレコード&プレイバックのやり方(ツール)については余計なコストがかかって逆に手動テストより高コストになるリスクもあるよーと触れたあとで、テスト自動化の理想的な状態についてまとめられている。

  • フルカバレッジの自動回帰テストが数分の間で実行される
  • 開発者誰もが自分の開発マシンで全てのテストを実行できる
  • CIと統合されている

等々。

その後、手動テストの特徴と自動テストの特徴が対比して説明される。例えば以下。

  • 手動テストでは人間が直感で怪しい箇所をテストできる(探索テスト)。自動テストは決められたテストを素早く実行する。
  • 手動テストはある程度の曖昧さが許容されるが、自動テストは正確かつ詳細でなければならない。
  • ソフトウェアに対するあらゆる変更はテストケースへ影響するはずだが、手動テストの場合は(テストケース修正が漏れていても)テスターの判断でなんとかなることが多い。
  • 手動テストは手順が長く、1ケースで多くの機能を検証する傾向がある。自動テストは各ケースを短くし、ただ一つのことを検証するのがよい。
  • 手動テストはテストケース間に依存関係があることも多いが、自動テストは互いに独立させるべきである。

このあたりは書籍 xUTP(『xUnit Test Patterns』)でも触れられているものもあり、まさにそうだよなーと思って読んだ。

1・2章を読んだ限り、良さそうなテスト本に見えたので、この先の章も楽しみに読みたい。

余談

xUTPってめちゃ名著なのだが、日本語に未翻訳であり、しかも原書で1000ページ近くあるので、読んだことがある人が余りいないのが残念なんだよなぁ。テストのパターン集であり、コードサンプルも多いのが大ボリュームとなっている理由なので、Condensed版みたいのがあったらなーとも思う。

しかし頑張って読むだけの価値はある本なので、テスト好きの人にはぜひ読んでほしい一冊だ。(ぼくは半年くらいかけて少しずつ読んだ)

Books
%d人のブロガーが「いいね」をつけました。