組合せテスト
組合せテスト(Combinatorial Interaction Testing)は,ソフトウェアなどの複雑なシステムにおける複数の設定パラメータの組み合わせが原因で発生する不具合を,効率的に検出するための数理的手法です.
一般に,ソフトウェアや組み込みシステムは,多様な設定・環境・入力条件のもとで動作しますが,それらの因子が単独ではなく相互作用することで,特定の組み合わせのときだけ現れる不具合(interaction faults)が存在します.
たとえば,ある組み込み機器が「通信モード:無線」「省電力モード:オン」「ファームウェアバージョン:旧」でのみフリーズするといったような現象は,個々の設定だけではなく,それらの組み合わせに起因するものです.このような問題を検出するためには,すべての因子の全組み合わせをテストするのが理想ですが,現実的には膨大なテストケースが必要になり,非効率です. そこで注目されるのが,組合せ論に基づく数理的手法を活用した組合せテストです.
Web閲覧環境における具体例(5因子)
以下は,Webサービスの表示・挙動を左右する5つの因子とその設定値です:
パラメータ | 値の種類(水準) |
---|---|
1. デバイス | PC,タブレット,スマートフォン |
2. ブラウザ | Chrome,Firefox,Safari |
3. ネットワーク接続方法 | 有線,無線 |
4. セキュリティ設定 | 標準,厳格 |
5. 広告ブロックの有無 | なし,あり |
これらの因子の全組合せは $3 \times 3 \times 2 \times 2 \times 2 = 72$ 通りになりますが,2つの因子のあらゆる値の組み合わせ(2-way interaction)をカバーするだけで,多くの不具合を検出できることが知られています.
Covering array を用いた効率的テスト
以下の表は,すべての2因子間の値の組み合わせ(全45通り)を網羅しながら,9回のテストで済ませた covering array の一例です:
テスト | デバイス | ブラウザ | 接続 | セキュリティ | 広告ブロック |
---|---|---|---|---|---|
1 | スマホ | Chrome | 有線 | 標準 | なし |
2 | PC | Firefox | 無線 | 標準 | なし |
3 | スマホ | Safari | 無線 | 厳格 | なし |
4 | タブレット | Safari | 無線 | 標準 | なし |
5 | PC | Chrome | 無線 | 標準 | あり |
6 | スマホ | Firefox | 有線 | 厳格 | あり |
7 | タブレット | Firefox | 有線 | 厳格 | あり |
8 | タブレット | Chrome | 無線 | 厳格 | あり |
9 | PC | Safari | 有線 | 厳格 | あり |
当研究室の取り組み
当研究室では,covering array などの組合せ配列の数理的性質の解析や高効率な配列生成アルゴリズムの開発に取り組んでいます. さらに,covering array よりも高い検出能力を持つ配列の定式化,構成法,生成アルゴリズムの開発,そして交互作用による不具合の原因を検出するための検出アルゴリズムなど,多岐にわたる研究を行っています.
組合せテストの応用範囲は,Webサービスの品質保証にとどまらず,組み込みシステム,ネットワーク,IoTシステム,医療・バイオ分野における実験計画法など,さまざまな分野へ広がっています.