
システムテスト自動化標準化ガイド
Mark Fewster/Dorothy Graham著 テスト自動化研究会訳 翔泳社
システムテストを自動化する際のノウハウについて書かれた著作である。システムテストとは、本書の定義によれば仕様上の欠陥を見つけるテストとしている。つまりソースコードの設計を検証するユニットテストやS/W設計を検証する結合テストとは違うということだ。穿った見方をすれば、「ユニットテストの自動化は既に常識化しているのでここでは問題にせず、次の段階としてシステムテストの自動化に取り組もう」と言った所か。ただ、現実の開発場面でユニットテストがS/W開発現場にどの程度浸透しているかについては、私自身はかなり懐疑的な見方をしている。テストファーストやアジャイルプラクティスが叫ばれて既に20年近くになるが、多くの企業では未だに手作業でのユニットテストが主流を占めているのではないだろうか(あるいはユニットテストを省略してビックバンテストで品質を担保しようと苦しんでいる?)。本書は単にシステムテストの自動化という観点ではなくS/Wテスト全般の自動化について記載された著作として読んだ方が我々にとっては有益だと思える。そういった観点からは本書は実に様々な示唆を与えてくれよう。
本書はまず自動テストの利点と欠点について触れ、自動テストが必ずしも万能ではないと説く。筆者によれば、自動テストの目的は経済性と発展性を高めることだけであり、その経済性についても繰り返し適用しないテストならば逆効果だとしている。筆者によれば、自動テストの問題点として初期投資(これはツールに対する投資ではない)と保守があり、特に初期投資については、自動テストでは最初の導入段階で手動テストの数倍の工数がかかるという。これは実際に自動テストに取り組んだ組織なら十分に理解できることだろう。だから筆者は説く。全てを自動テストの対象とすべきではないと。そして自動テストの恩恵である再利用性と発展性を享受できるアイテムを自動テストの対象とすべきであると。
第2章では例題としてワープロソフトの自動テストについて触れ、自動テストの基本的な考え方について説明している。
第3章ではテストスクリプトの書き方について触れ、一番シンプルなリニアスクリプティングから、プログラミングの要素を含んだデータ駆動スクリプティング、さらにはそれを発展させたキーワード駆動スクリプティングについて紹介している。これらの技法を駆使することで、保守が容易で発展性の高いテストスクリプトが作成できるとしている。
第4章ではテスト結果の自動確認(比較)について触れ、テキストファイル、画像ファイル等におけるテスト結果自動検証の方法について触れている。
第5~8章はテストウェアアーキテクチャー、前処理と後処理、テストウェアの保守性、テストのメトリクスといった話題について触れている。
第9章はその他雑多な話題、第10章はテストツール選択方法、第11章は組織へツールを導入する際のノウハウについて触れている。
第12~15章は具体的な自動テストの事例紹介で、ここは日本語版オリジナルの箇所。Webシステム、証券システム、状態遷移テストの自動化等について実例を交えて紹介している。正直なところ、個々の部分は半分も理解できなかったが、Selenium、SilkTest、Jenkins、Travis CI、YAML形式、Groovy、Boost.Graphといったキーワードは押さえておきたい。
本書は、テストの自動化を進める上での戦略構築に際して有益な指針を示してくれるだろう。
お奨め度★★★★
コメント