10月公開の特集「テスト実装・実行の自動化」では、主に単体テストとGUIテストに焦点を当て、テストの実装や実行の自動化について解説しました。これらはテスト自動化の分野ではかなり成熟してきているものです。
今回からは、テスト実装・実行に比べてまだ発展途上である分野について、今後の展望も交えながら解説していきます。以下ではまず、「テスト設計の自動化」について紹介していきましょう。
6種類のテスト設計自動化ツール
ソフトウエアテストのプロセスは、(1)テスト計画/管理、(2)テスト分析、(3)テスト設計、(4)テスト実装、(5)テスト実行、(6)テスト結果の評価、の六つのアクティビティーに分けることができます。今回対象とするテスト設計は、テスト分析によって洗い出されたテスト条件を、漏れがなく、かつ無駄のないテストケースへと落とし込んでいく作業を意味します。
テスト設計を自動化するツールは、その用途ごとにさまざまな種類のものが提供されています。ASTER(ソフトウェアテスト技術振興協会)がまとめた「テストツールまる分かりガイド(入門編)」では、テスト設計自動化ツールを以下の6種類に分類しています。
- 状態遷移テストツール
- 組み合わせテスト支援ツール
- 原因結果グラフツール
- 動的解析ツール
- カバレッジ計測ツール
- その他のテスト設計支援ツール(モデルベースドテストツール含む)
これら6種類のツールは、以下の三つに分類することができます。
- 多様なテスト条件の組み合わせを減らし、無駄のないテストケースを作るツール
→組み合わせテスト支援ツール - モデル化した設計情報から漏れのないテストケースを作るツール
→状態遷移テストツール、原因結果グラフツール、モデルベースドテストツール - テスト実施結果を分析し、テストケースの漏れを発見するツール
→動的解析ツール、カバレッジ計測ツール
三つ目の分類のツール自体はテスト設計をするものではないため、本連載では一つ目と二つ目の分類のツールについて解説をしていきます。今回は一つ目の「組み合わせテスト支援ツール」を紹介します。
テストケースの組み合わせ爆発を抑制する「組み合わせテスト技法」
ツールを紹介する前に、まず簡単に組み合わせテスト技法について触れます。使い古された例ではありますが、テスト環境を題材にしてみましょう。表1のような環境をサポートするソフトウエアがあると仮定します。
環境の要素(因子) | 各要素のバリエーション(水準) |
---|---|
OS | Windows、Mac OS X、Ubuntu |
Webブラウザー | Internet Exploer(IE)、Firefox、Chrome、Opera |
Flash Player | 11.4、11.3、11.2、11.1、11.0 |
対応すべきOS、Webブラウザー、Flash Playerの種類ごとにテスト環境の組み合わせを考えると、その数は3×4×5=60通りとなります。Internet Explorer(IE)はWindows上でしか動かないなどの制約を考慮すると現実的な組み合わせは減りますが、その一方で表1ではOSとWebブラウザーのバージョンは省略しています。さらに、サービスパック適用の有無まで考えると、テスト環境の組み合わせ数は膨大になります。
こういった組み合わせ数の増大を、テストケースの質、すなわちバグを発見する能力を減らさずに抑えるためのテクニックが、組み合わせテスト技法です。代表的な技法として以下のものがあります。
- 直交表
- All-Pair法(ペアワイズ法)
- HAYST法
各技法の詳説はここでは割愛しますが、例えば2因子間の組み合わせ網羅のみを担保する技法であるAll-Pair法を適用すると、表1の各要素からなるテスト環境の組み合わせ数は、表2に示す20通りになります。なお組み合わせテスト技法では、表1の環境の要素に相当するものを「因子」、各要素のバリエーションに相当するものを「水準」と呼びます。
OS | Webブラウザー | Flash Player |
---|---|---|
Windows | Chrome | 11 |
Windows | Firefox | 11.3 |
Mac OS X | Chrome | 11.1 |
Ubuntu | Firefox | 11.1 |
Ubuntu | IE | 11 |
Ubuntu | Chrome | 11.4 |
Mac OS X | Opera | 11 |
Windows | Opera | 11.2 |
Ubuntu | Opera | 11.3 |
Mac OS X | Firefox | 11.2 |
Windows | Firefox | 11.4 |
Ubuntu | IE | 11.2 |
Mac OS X | Opera | 11.4 |
Mac OS X | Chrome | 11.3 |
Windows | Opera | 11.1 |
Mac OS X | IE | 11.4 |
Windows | Firefox | 11 |
Windows | IE | 11.1 |
Windows | IE | 11.3 |
Windows | Chrome | 11.2 |
60通りあったテスト環境の組み合わせ数を、3分の1まで減らすことができました。この効果はとても大きいといえるでしょう。