テストポイントの管理

<< 目次を表示 >>

ページ位置:  プログラムの動作解析 >

テストポイントの管理

テストポイントは、オブジェクトの振る舞いについての制約・条件を定義し、モデルやアプリケーションの実行時に検証することのできる仕組みです。この仕組みを利用することで、例えばソースコードを変更した場合に制約・条件が満たされているかどうかを確認できます。また、特定のメソッドが値の変更などの影響を与えていないかどうかの検証にも役立ちます。さらに、このテストポイントの機能は、ソースコード自体の編集を必要としない点もメリットです。つまり、ソースコードの再コンパイルは必要ありません。

 

また、テストドメインを定義し、そのテストドメインを複数のアプリケーションに適用できます。テストドメインは、さまざまな制約を定義しユースケースやテストセット・テストスイートの要素にまとめることができます。テストドメインとソースコードは直接結びついていませんので、利用するかどうかは実行時に指定できます。また、この仕組みを利用するために、特別な準備やライブラリの利用なども不要です。テスト結果は実行中に、リアルタイムに表示されます。テスト結果を保存し、後から見直すこともできます。(テストの詳細ダイアログを利用します。)

 

 

項目

参照

テストポイントの定義

テストポイントの定義は、テストポイントサブウィンドウで行います。テストポイントサブウィンドウは、モデルブラウザやダイアグラム内で選択した要素に対する内容が表示されます。要素を選択されたときに、一覧内に鉛筆のアイコンが表示される場合、テストポイントが設定されていることを示します。

 

テストカット要素・テストセット要素・テストスイート要素を選択した場合には、テストポイントサブウィンドウではその要素を構成するすべてのクラスの内容を表示します。表示された構成を探索できます。

テストポイントはクラスのメンバ変数の変数名を利用して表現した式で構成します。Ctrl+スペースキーで、インテリセンス機能を利用できます。入力した式がTrueになる場合には、テストが成功したことを示します。Falseになる場合には、テストが失敗したことを示します。

 

 

クラス要素をダブルクリックすることで、クラスの不変条件を定義・編集できます。

メソッドをダブルクリックすることで、メソッドの事前条件や事後条件を定義・編集できます。

テストポイントをダブルクリックすると、結びつけられているソースファイルを表示します。

ソースファイル内の行に対して条件を指定する場合には、ソースファイル内で指定すると効率的です。

下の画像は、テストドメイン内で定義されている事前条件の例です。

 

トレース情報

 

 

テストポイントにはトレース文を持たせることができます。トレース文では、実行時に参照可能な変数やオブジェクトの値を参照して動的なメッセージを作成できます。このトレース文の内容はテストの評価時に出力されます。出力は、常に出力することもできますし、テストが失敗した場合のみ出力できます。出力先は、システム出力サブウィンドウのテストポイントタブになります。外部ファイルに出力できます。これらの設定は、動作解析の設定で行うことができます。

テストドメイン図

 

テストドメイン図はこのテストポイント機能のために定義された独自の図です。

テストドメイン図では、テストの論理的な集合をテストセットテストスイートとしてまとめることができます。テストの実行時には、このテストセットやテストスイートを対象にテストを実施できます。

(参考:テストポイントの結合)

テストドメインとクラスモデル

ユースケースの内容について、1つのクラスのすべてのメソッドで実現する場合もまれにありますが、通常は複数のクラスが協調して実現します。このような状況で、この複数のクラスが持つメソッドのサブセットをカットと呼び、こうしたカットを作成するための要素が、テストカット要素です。

テストポイントサブウィンドウは、テストドメインやクラスのどちらに対しても対応できます。下の画像は、テストカット要素が選択されている状態です。チェックボックスが表示されていることに着目してください。このチェックボックスは、テストカット要素を選択している場合のみ表示されます。このチェックボックスの状況で、テストセットに関係するメソッドが明示されます。

テストポイントの評価

アプリケーションを動作解析する場合には、有効になっているテストドメイン内のテストポイントは以下のように評価されます。

 

  • クラスの不変条件として定義された内容は、対象のクラスのメソッドが呼ばれ、処理が完了したたびに評価を行います。不変条件として定義された内容により、オブジェクトの状態が既知であり許容されているものであることを確認します。
  • 事前条件は、メソッドが呼ばれる前に評価されます。
  • 事後条件は、メソッドが呼ばれた後に評価されます。(クラスの不変条件と同じタイミングで評価されます。)
  • ソースコードの行に対して設定した場合には、その行に到達するたびに評価されます。

 

テストポイントは、クラスの属性(メンバー変数)を利用して定義します。定義した式が満たされる場合(Trueの場合)には、そのテストに合格したと見なします。満たされない場合には、テストに失敗したと見なします。

 

 

参照: