ソフトウェアの品質を学びまくる2.0

旧ブログからゆっくり移行中です。http://blog.livedoor.jp/prjmng/

TABOK粗読による自動化の座学 - カテゴリー5「自動テストのフレームワーク設計」(1)

 カテゴリー5は、自動化テストのフレームワークの設計です。

www.kzsuzuki.com

 以下の5つの手順が紹介されています。(1)では、最初の2つを。
  • フレームワークタイプの選択
  • フレームワークの部品の特定
  • フレームワークのディレクトリ構造の決定
  • 実装の標準ルールの策定
  • 自動テストの作成

5.1 フレームワークタイプの選択

 フレームワークのタイプは、カテゴリー4で学びました。

www.kzsuzuki.com

 どのタイプを選択するかは、以下のような要素に依ります。

  • 開発とメンテにかかる費用に見合ったスコープになっているか
  • 時間とリソースは十分か。そもそも担当できる専門家がいるか
  • 自動化に求められる品質特性は何か
 5.1には「Quality Attributes」(品質特性)という言葉が繰り返し出てくるのですが、詳しくはカテゴリー7でしょうか。正直、何を言いたいのか現時点ではさっぱりわかりません。
 なお「Short Ansewer」によると、わからなければ機能分解のフレームワークを選択するんだ!とあります。

5.2 フレームワークの部品の特定

 フレームワークは一般に、いくつかの「セグメント」から構成されます。
 軸となるのは、ドライバーセグメント - テストセグメント - 機能セグメントという階層です。
 ドライバーセグメントには、テストを順に呼び出していくための大元のドライバースクリプトが属しています。
 テストセグメントは、個々のテストスクリプトが属するセグメントで、ドライバーセグメントから呼び出されます。
 機能セグメントは、テストスクリプトが呼び出す機能モジュールが所属するセグメントです。機能モジュールは、4.2.3.2で説明されています。
 この他に、初期化や設定を行うためのパラメターセグメント。レポートを出力するためのレポートセグメント。エラー発生に対処するためのエラーハンドリングセグメントがあります。

ドライバースクリプト

 自動化テストの全体をコントロールするのがドライバースクリプトです。個々のスクリプトを呼び出して実行することがメインの仕事。必要に応じて初期化やパラメター設定、エラーハンドリング、レポートなどの機能を呼び出して、最後まで走り切るように祈ります。
 場合によっては、一群のテストを優先度順に流したり、特定の優先度のものだけ流したりしたい場合もあるでしょう。それを実現するために、個々のテストの優先度を定義した実行レベルファイルを用意しておき、ドライバースクリプトはそれを参照しながらテストを流していくことができます。

初期化スクリプト

 テストを流し終わった後、変更されたパラメターを放置したままだと、無駄にテストが失敗しかねません。初期化スクリプトは、一連のテストを通じて使われるパラメター・環境をリセットするもの。自動テストツールの初期化と、テスト対象のアプリケーションの初期化の2つに分けられます。

設定スクリプト

 自動テストをパラレルで走らせるケースでは、使用するクライアントマシンやサーバ側の環境、テスト実行に使うログインユーザなどの設定値が異なることもあります。初期化スクリプトでは全体的な値のリセットをしますが、設定スクリプトでは、このような実行単位での設定を行います。
 なお、データ駆動で呼び出すパラメターのセットとは別です。これは「テストデータファイル」として、テストスクリプトから呼び出されます。

テストスクリプト

 実行されるテストそのものですね。機能分解のフレームワークを採用している場合は、ここからさらに、再利用可能な機能を呼び出します。
 モデルベースドのフレームワークでは、テストスクリプトの代わりに、モデルをテストケースに翻訳したドライバーがこれを代替することもあります。

 (2)では、残り3つの手順を紹介します。