テスト自動実行ツールの分類

テスト自動実行ツールをどう分類するか、というのが議論になりました。分類のしかたを考えるときに、まずはどんな特性を持つかをかんがえますよね。

・テストタイプ

・テストレベル

・ドメイン

・インターフェース

などなど。それぞれ考えてみます。

テストタイプ

(僕はあまり詳しくないのですが、)負荷テストとか、セキュリティテストとかでしょうか。一見テスト自動実行ツールの特性を表していそうです。セキュリティならファジングとかでしょうか。ファジングであれば、ランダムで大量のデータを生成してくれて、それをテスト対象に入力してくれる、というところが特徴だと思います。さて、ではそれは果たしてテスト自動「実行」ツールの特性なのでしょうか。

ここで、おなじみ、gTAAを参照します。テスト自動実行ツールと言ったとき、該当するのはtest execution layerとtest adaptation layerだと思われます。先ほど説明したファジングはここに該当するかというと、実はtest dataを生成していることになるので、test generation layerまで含んでいることになります。つまり、ファジングツールはtest generation layerまで含んでいるからこそ価値が出ていることになります。

他のテストタイプに特化したツールがどうかまで考えられていないですが、感覚的には、テストタイプはテスト自動実行ツールの特性ではなさそうです。

テストレベル

テストレベルはどうでしょう。例えば単体テストやシステムテスト、などですね。先に結論から言ってしまいますが、テストレベルはテスト自動実行ツールの特性によって向き不向きが決まるが、自動実行ツールの純粋な特性ではない、と考えています。ただ、テスト自動実行ツールは何かを狙って作られるものであるので、テスト自動実行ツールの分類をするときにテストレベルで分けるとすっきりする可能性はあります。

では、どんな特性によってこれが決まっていると考えているかというと、触れる・視られるポイント、です。ユニットテストであればコードが触れます。システムテストであれば、外向きのインターフェースが触れます。

よって、触れるポイント、視られるポイントが純粋な特性で、テストレベルは派生した特性、だと考えています。(重要ではないと言っているわけではないです)

ドメイン

ドメインはどうでしょう。これは、先ほどほとんど結論を言ってしまったのでさっと終わりますが、これも派生した特性、だと考えています。テストタイプ同様に、作る際にはドメイン(もしくはそれに類するもの。例えばテスト対象そのもの)を狙って作られると思いますので、ある意味では特性を表していると思います。

ただ、例えばスマホとGUI付き医療機器で同じツールが使える可能性があるため、純粋な特性ではないと考えています。


というわけで、僕が今持っている仮説はインターフェースがテスト自動実行ツールの純粋な特性である、です。なじみのある車系のツールでも、Ethernet通信やCAN通信をインターフェースとして持つのですが、航空機などのドメインでも同じようなインターフェースを持つため、同じツールが適用できるようです。ツールベンダも複数のドメインに対して売っていますし、複数のテストレベルで使える(例えばシステムテストとシステムオブシステムズテスト)ように説明が書いてあります。

よって、技術的に分類する場合はインターフェースで、営業的に分類する場合はドメインやテストタイプも加わる、というのが現実ですかね。


おわり。

この記事が気に入ったらサポートをしてみませんか?