どしろうと製作所:WebLog

どしろうと製作所のBlogバージョンです。
「どしろうと製作所」のHPの記載内容とはあまり関係無いです。
気が向いたときのみ更新します。
テストケースの表現と粒度(マニアック編〜ISTQB(JSTQB)の情報から考える)
前回、「テストケースの表現と粒度」についての記事を紹介してみました。

これらのテストケースの粒度に関して、ISTQB(日本ではJSTQB)と呼ばれるソフトウェアテスト技術者資格認定のシラバスや用語集として紹介されている情報から、この粒度に関する用語や知見について軽くまとめてみます。

こちらの記事は超絶マニアックですので、チラ見して興味を持った人だけ読むことを推奨します。
テスト技法の知識を持っている前提で記述しています。書いてあることがわからない人も、業務で困ることはそれ程ないかもという内容です。


■ISTQB(JSTQB)におけるテストケースの粒度を表す用語

さて、ISTQB(JSTQB)の用語集からまずは情報を拾ってみましょう。
次の内容はJSTQBの用語集から引用してますが、原文の英語を確認しつつ意味を考慮して少し表現を変えている部分があります。

-------------
高位レベルテストケース(high level test case):
具体的な(実行レベルの)入力値や予測結果を使わないテストケース。論理演算子は使用するが、値のインスタンスは未定義である。

論理的テストケース(logical test case):
high level test caseを参照のこと。

抽象的テストケース(abstract test case):
high level test caseを参照のこと。
--------
低位レベルテストケース(low level test case):
入力データと期待結果が具体的(実装レベル)なテストケース。高位レベルテストケースの論理条件を満たす実際の値に置き換えられる。

具体的テストケース(concrete test case):
low level test caseを参照のこと。
-------------

…はい、イメージがわきづらいですね。

ただ、2種類が存在しているように見えます。これ以降は、高位レベル(ハイレベル)テストケース、低位レベル(ローレベル)テストケースという2つの用語を優先的に使ってみます。

少なくとも、次の関係はあることがわかります。
前回の記事で紹介した「抽象的(テストケース1)」「具体的(テストケース2)」なテストケースと対応しているようには何となく感じます。
もやっと分ける

ちなみに、用語集では同一の意味のように扱ってますが、上記のグループの用語が本当に同じ意味かどうかはちょっと怪しいです。
※本記事の後半「もう一つのISTQB(JSTQB)の説明⇒AL TAシラバスより」を参照ください。


■テストケースの粒度を具体的な例で考えてみる

具体的に考えてみようと思います。なお、こちらで記載している「例」と「4段階の分類」についてはISTQB(JSTQB)で載っているものではありませんのであしからず。

前回と同じく、「Javaly Park」の購入計算機能で考えてみます。
30億のフレンズが待ってる

表現できそうなテストケースの粒度、そこに存在している情報量について、前回の記事よりもさらに細かい4段階で考えてみました。

レベル1.処理だけを特定したテストケース
 ⇒購入計算処理を確認する
レベル2.入出力のパラメータ項目まで表現したテストケース
 ⇒購入種別と時間から計算結果を確認する
レベル3.同値クラスを用いて組合せ論理条件(ルール)まで表現したテストケース
 ⇒購入種別:おとな、入場時間:通常料金時間 で結果1000円
レベル4.実際の値まで具体化したテストケース
 ⇒購入種別:おとな、入場時間:10:00:00 で結果1000円

4パターンを図にまとめると次のようになります。下のレベルほど具体的になります。
※クリックで拡大。
4段階レベル

上記の例だとレベル3とレベル4が少しわかりづらいため補足します。
「入場時間」の部分を見ると分かりますが、レベル3では同値クラスとなる「通常料金時間」と設定されております。レベル3のテストケースでは、通常料金時間の範囲である「10:00:00-17:59:59」のどの時間でテストを行っても構いません。

対して、レベル4のテストケースは具体的な値が入ったものになります。
「通常料金時間」の範囲での具体的な値を決定します。この際に、通常料金時間の境界値(10:00:00、17:59:59)を狙うこともできますので、レベル3のテストケース1つに対して、レベル4のテストケースが複数定義されることもあります。

同値クラスによって論理条件、ルールが示されている(デシジョンテーブルで表現できる)ものがレベル3。そこからさらに具体的な値を明確にしているのがレベル4ですね。

なお、前回の記事で比較(階層構造で表現)した2つのテストケースは、「レベル2」と「レベル4」ということになります。


■低位レベル、高位レベルテストケースの粒度とは

冒頭で紹介したISTQB(JSTQB)の説明から考えると、低位レベルテストケースは上記の「レベル4」で確定かと思われます。それでは、高位レベルテストケースはどこまでと考えるべきでしょうか。

ISTQB(JSTQB)の説明をもう一度出してみましょう。
-------------
高位レベルテストケース(high level test case):
具体的な(実行レベルの)入力値や予測結果を使わないテストケース。論理演算子は使用するが、値のインスタンスは未定義である。
-------------

論理演算子はプログラム上の意味ではAND(&&)やOR(||)といったものになりますが、今回の例との対応を考えると「論理条件(ロジック、ルール)」という捉え方をしても良さそうです。そうすると「レベル3」が高位レベルテストケースに対応してることになります。

ただ、もう1つISTQB(JSTQB)に気になる記述がありますので、そちらも見てみましょう。


■もう一つのISTQB(JSTQB)の説明⇒AL TAシラバスより

ISTQB(JSTQB) Advanced Level Test Analystのシラバス」では、「具体的テストケースと論理的テストケース」について説明が記載されております。

軽く引用してみます。
※ISTQB側の文書から翻訳しています。なので、JSTQBシラバスとは少し表現が異なりますのであしからず。
-------------
1.5.1 Concrete and Logical Test Cases(具体的テストケースと論理的テストケース)

テストアナリストの役割の1つは、状況にあわせて最適なテストケースを決定することである。
具体的テストケース(Concrete test cases)は、求められるデータをすべて含んでおり、テストケースを実行するテスト担当者が必要な情報や手順すべてが記述される。具体的テストケースは要件が明確に記述されている場合、テスト担当者の経験が少ない場合や、監査などテストに対する外部の検証が必要な場合に役に立つ。
具体的テストケースは優れた再現性(例:複数のテスト担当者が同じ結果を出すことができる)を提供するが、メンテナンスに多大な工数が必要である。また、テスト実行時においてテスト担当者の想像力を奪ってしまう傾向がある。

論理的テストケース(Logical test cases)はテストすべきものに対する指針を提供するが,テストアナリストは使用するデータやテスト実行時の手順を変更することが可能である。論理的テストケースでは実行の度に使用するデータが変わることで、具体的テストケースよりもよいカバレッジが得られることもある。だが、このことは再現性が失われるという意味でもある。論理的テストケースは要件があまり明確ではない場合、テストを実施するテストアナリストがテストとプロダクトの双方に知見がある場合、きちんとしたドキュメントが求められない(監査の必要がないような)場合に使用されることが多い。

要件がまだ明確ではない要件定義プロセスの初期段階で、論理的テストケースが定義されることもある。要件がより明確になり、安定した段階で、具体的テストケースをつくるために定義された論理的テストケースが使われる場合もある。この場合には、論理的テストケースから具体的テストケースという順で作成が行われ、テスト実行には具体的テストケースのみが使用される。
-------------

冒頭の用語集では「具体的テストケース=低位レベルテストケース」、「論理的テストケース=高位レベルテストケース」だったはずです。具体的テストケースの理解は問題なさそうです。

ですが、こちらの説明からは論理的テストケースはレベル3より抽象的なテストケースを指しているようにも見えます。
紹介した例と対応づけると「レベル2」さらには「レベル1」まで論理的テストケースと呼んでもよいように思われます。

そうすると、用語集の「高位レベルテストケース」と同じ意味のはずの「論理的テストケース」が指しているものが異なることになってしまいますね…(重箱の隅のようなものですが)

本記事では、ここからは「高位レベルテストケース」と「論理的テストケース」の抽象度の範囲が異なるという捉え方をしてまとめてみます。


■テストケースの抽象度をざっくりまとめてみる

以上の情報から、テストケースの抽象度をレベル1〜レベル4の分け方で、ISTQB(JSTQB)の用語とマッピングしてみます。
※クリックで拡大。
言葉とマッピング

レベル4=具体的テストケース=低位レベルテストケース
レベル3=高位レベルテストケース
レベル1〜3=論理的テストケース

このように考えると、テストケースの抽象度を示す言葉について理解が統一できそうです。
レベル1よりも抽象度の高いものはさすがにテストケースと呼ぶ人はいないと思います。そのため、自分はこの範囲を「テストケース」と呼ぶことにしておこうと思います。





…あ、そうすると2017年7月段階でのテストカタマリーの記事で使用している「ハイレベルテストケース」は正しくは「論理的テストケース」となります。用語として間違ってますね…orz
そのうちコッソリと「論理的テストケース」に置き換えられるはずです!
| 技術 | 13:00 | comments(0) | - |









      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< July 2017 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ CATEGORIES
+ ARCHIVES
+ LINKS
+ PROFILE
+ OTHERS
このページの先頭へ