シェルスクリプトでパラメタ総当りテスト

この記事では、コマンドライン引数でパラメタを指定するテストプログラムがあるときに、
パラメタの様々な組み合わせについて、テストプログラムを実行する、シェルスクリプトを作成します。

バージョン1

設定:

  • 2つのパラメタ(Param1 と Param2)を引数に取る、do_test という名前のテストプログラムがあるとします。
  • Param1 は、 A~D のいずれかの値を取ります。
  • Param2 は、 a~d のいずれかの値を取ります。
  • これらの組み合わせ 16 パターンについて、テストを実行するシェルスクリプトを作成します。
  • Param1 が D で、Param2 が c のときの処理にバグがあって、テストが失敗するものとします。

単純に for を2重にループさせ、テストプログラムを実行することにします。

シェルスクリプト (ver1.sh):

実行結果:

全パターンについて do_test を実行しており、Param1=D Param2=c のときのエラーが報告されています。

バージョン2

バグを修正して、修正確認をしたいとします。
最終的には全パターンテストするにしても、Param1=D and/or Param2=c のケースは優先的にテストしておきたいです。
シェルスクリプトの引数で、パラメタの範囲を限定できるようにします。

シェルスクリプト (ver2.sh):

実行結果:

バージョン3

ところで、このスクリプトでは、引数無しで実行すると、Param1=A のケースが先に重点的にテストされ、Param1=D のケースは最後にテストされます。
Param2 と無関係に、Param1=D の処理にバグが有るような場合、もっと偏りなくテストしたほうが、早くバグに当たりやすくなります。
実行順をランダムにするオプション –shuffle を追加します。

シェルスクリプト (ver3.sh):

実行結果:

ランダム順にすることで、エラーの発覚が早くなりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です