VSTePにおけるテストケースの粒度について
- NoriyukiMizuno
- 2862
- 1
- 1
- 0
VSTePにおけるテストケースの粒度について。その前にまず、パラメータと値という考え方を理解する必要があります。直交配列表では因子と水準と呼びます。例えば、氏名はパラメータで、にしやすはるは値です。
2014-11-22 13:32:13一言で言うと、VSTePにおけるテストケースとは、値です。厳密に言うと、構造つき値群、とでも呼びましょうかね。また、パラメータレベルになると、テストフレームと呼びます。
2014-11-22 13:33:17例えば、にしやすはる(という文字)をカラー印刷する、なんてのはテストケースです。ユーザ名を入力して印刷系機能を行う、なんてのはテストフレームです。
2014-11-22 13:35:26なぜVSTePでは、テストフレームとテストケースという2つの粒度を用意しているのでしょう。それは、テストフレームを設計するまでの作業(テスト要求分析~テストアーキテクチャ設計)と、テストフレームからテストケースを列挙する作業(テスト詳細設計)を区別したいからです。
2014-11-22 13:36:42テスト要求分析~テストアーキテクチャ設計は、かなり頭を使う作業です。一方、テスト詳細設計は、手間がかかる作業です。できれば自動化したいですよね。頭を使う作業と手間がかかる作業を分離することで、テスト設計プロセスとしての自動化の容易性を高めているわけです。
2014-11-22 13:38:08またVSTePでは、パラメータのことを「ボトムテスト観点」と呼びます。VSTePではパラメータを導出するために、階層構造で検討するからです。これはClassification Tree Testing法とよく似ています。
2014-11-22 13:39:45先ほどのテストフレームの例を思い出しましょう:「ユーザ名を入力して印刷系機能を行う」でしたね。ちなみにテストケースは「にしやすはる(という文字)をカラー印刷する」です。
2014-11-22 13:43:04ここで、ユーザ名をにしやすはるにすることをインスタンス化(インスタンシエーション)、にしやすはるをユーザ名にすることをパラメータ化(パラメタライゼーション)と呼びます。本当は、インスタンス化はバリュー化の法がいいんでしょうね。
2014-11-22 13:43:51テストケースをテストフレームにパラメタライズするというリバーステスト設計はよく行われます。その際には普通、入力値などはパラメータ化しますが、機能はパラメータ化しません。しかしVSTePでは、機能もパラメータ化します。
2014-11-22 13:45:16VSTePの特徴は、機能を特別扱いしないことです。普通は機能をパラメタライズせず、テストフレームの粒度で既に機能は確定しています。しかしVSTePでは、テストフレームの時点で機能が確定していなくても構いません。パラメータとして印刷系機能、バリューとしてカラー印刷でもよいのです。
2014-11-22 14:04:02VSTePのようにテスト設計プロセスとして考える場合は、単純にテストフレームはパラメータの塊でテストケースは値の塊だと言ってもいいでしょう。しかし現実には、あるテストフレームの一部はパラメータで一部はバリューという状況になります。
2014-11-22 14:05:46ここを適当にやると、テストケースの粒度管理がうまくいかず、テストケースの自動生成に支障をきたします。テストフレームの粒度でインスタンス化する条件は、あるパラメータに含まれる2つ(以上)のインスタンスによって、テストフレームの狙いや意図が異なってくる場合です。
2014-11-22 14:07:47例えばカラー印刷と白黒印刷という2つの(機能)バリューがあったとします。パラメータは印刷系機能ですね。この時、例えば見つけたいバグといったテストフレームの意図が異なってくるのであれば、カラー印刷のテストフレームと白黒印刷のテストフレームに分ける必要が生じます。
2014-11-22 14:09:11テストフレームのモデリングって、ちゃんとやってみると、かなり難しいし頭を使うのですよ。単純に大中小の3階層に分ければいい、なんて考えている組織では、ちっとも上手くできないでしょうね。
2014-11-22 14:10:34そもそも、ボトムテスト観点の粒度をきちんと下げておけないと、パラメータを導出できません。無理にパラメタライズした気になっていると、実はより下位のテスト観点を漏らしているということにもなります。
2014-11-22 14:14:34まだ難しいところがあります。VSTePでは、テストケースには「テストケースの意図や狙いに必要な分だけ」値が記述されますが、「実行時に決まってればいい」値は記述されません。
2014-11-22 14:16:56「実行時に決まってればいい」値は実行環境依存であり、その値の如何によってテストケースの意図や狙いが変わるわけではありませんので、テストケースには記述されず、(自動/手動を問わず)テスト手順に記載されます。
2014-11-22 14:17:31そうすると、例えば最大のメモリ量、といったものは、どこに書かれるでしょう。テストフレーム(パラメータ)?テストケース(値)?テスト手順?
2014-11-22 14:19:35VSTePでは、メモリ量がテストフレーム、最大のテスト量がテストケース、512Mbytesがテスト手順の場合もあります。メモリ量をテストフレームにして、512Mをテストケースに書いてしまう場合もあるでしょう。その場合、最大というのは網羅基準の一要素という扱いになります。
2014-11-22 14:22:48もちろん、最大のメモリ量そのものにテストの意図や狙いが強く込められているのであれば、最大のメモリ量をテストフレーム(=ボトムテスト観点)として、512Mをテストケースに書いてもいいでしょうね。
2014-11-22 14:24:44テスト詳細設計を2段階にして、まず上位のテストケースとして最大のメモリ量という値を記述し、次に下位のテストケースとして512Mを記述することも構わないとは思います。私は個人的にあまり好きではありませんが。
2014-11-22 14:26:20