4つの課題への取り組み
ギア本では、課題の発生によってアンコントローラブルになる事象に対し、可能な限りコントロールを行って、システムテスト自動化を成功に導くためのノウハウを提供しています。ノウハウは原著者がプロジェクトの中で実践し、効果を発揮したものですが、状況が変われば対処も変わります。あらゆる現場にフィットするわけではないでしょう。しかし、各自の現場に最適なテスト自動化の方法を模索する中で、ギア本が提供するノウハウが役に立ち、テストウェアアーキテクチャが出来上がっていくことになります。
ここからは、ギア本で説明されているテストウェアアーキテクチャの興味深い概念やノウハウを紹介します。
テストウェアセット
テストウェアアーキテクチャを構成する基本的な要素として、ギア本では「テストウェアセット」という概念を導入しています。このテストウェアセットには、「テストセット」「スクリプトセット」「データセット」「ユーティリティセット」という種類があります。それぞれ、テストウェアを種類で分割した論理的な集合となっています。
中でも基本となるのがテストセットです。テストセットは1つ以上のテストケースを含みます。テストセットに含まれるテストケースがスクリプトやデータを必要とする場合、それらもテストセットに含まれます。ただし、それらのスクリプトやデータがそのテストケース固有のものかどうかには注意が必要です。
例えば、「ファイルをオープンする」というスクリプトをテストケースで使っているとして、このスクリプトが行っていること(ファイルのオープン)は、そのテストケース固有といえるでしょうか? おそらく、他のテストケースでも行っているでしょう。そのようなスクリプトは、再利用性のためにテストセットから取り出し、共有可能なスクリプトセットを構成しなければなりません。これはテストデータについても同様です。
テストセット以外のテストウェアセット(スクリプトセット、データセット、ユーティリティセット)は再利用を目的に作られた、特定のテストセットに依存しない形で共有のテストウェアの集合です(図3)。
テストスイート
では、実際にテストを実行するときには、テストウェアセットをどうやって管理するのでしょうか?
ここで登場する概念が「テストスイート」です(図4))。テストスイートは、実行するテストの目的に合わせて、必要なテストセットおよび、依存関係のあるスクリプトセット、データセット、ユーティリティセットを集めて、テスト実行可能な論理的な集合を構成します。例えば、回帰テスト用のテストスイートや、新機能確認用テストスイート、バグフィックス対応テストスイートなどを構成します。
テストウェアライブラリ
「テストウェアライブラリ」は、テストウェアセットやテストスイート全体を管理する単位です。テストウェアライブラリは、テストウェア全体を管理する最上位の概念であり、テストウェアアーキテクチャに対し、ただ1つだけ存在します。逆に見れば、テストウェアライブラリの中には、複数のバージョンのテストウェアセットが含まれているといえます。
重要なのは、テストウェアライブラリから必要なテストウェアセットを取得する作業は、できるだけ簡単で短時間で行えて、かつ、ミスの入る余地がないようにしなければならないということです。これが守られていれば、テストをしたいときに、例えばボタンをクリックするだけで、必要なテストがすべて自動で実行されるはずです。そうでない場合には、そこに解決すべき問題があります。特に、自動化の取り組みがうまくいけばいくほど、テストウェアライブラリの中に含まれる情報は膨大になっていくので、簡単にかつ正しくアクセスする方法が構築されていないと致命的な混乱が起きるでしょう。
ギア本には、テストウェアライブラリの実装サンプルが記載されています。ただし、その内容がそのまま適用できるとは限りません。先人の知恵の1つとして参考にしてみるとよいと思います。
おわりに
ギア本には、テストウェアアーキテクチャに関して、実装例を含めて様々な知見が紹介されています。一度読んだだけでは理解しづらい部分があるかもしれませんが、机上の空論ではなく、実際に運用していった上でのノウハウが詰まっています。一通り目を通されることをお勧めします。
また、説明されている内容が、そのまま皆さんの現場に当てはまるとは限りません。各自の組織に合わせて取捨選択することで、ギア本がより良いテストウェアアーキテクチャを実装するための参考書になると信じています。