状態遷移テストのカバレッジ

こちらでラウンドトリップカバレッジについてみたのですが、ちょっと他のカバレッジも気になったので調べてみました。参照したのは同じ論文です。


この論文では以下のように、AT、RTP、ATPというカバレッジ基準が紹介されています。それぞれ理解したことを書きます。が、多分ちゃんと理解できていないです。

Various coverage criteria such as All Transition (AT), Round Trip Path (RTP) and All Transition Pair (ATP) are considered


前提

リンク先に書かれている状態遷移図と、そこから生成したState Chart Intermediate Graph (SCIG) of Stack Operationというのを参照します。なので詳細知りたい方は論文の図を見に行ってください。


All Transition(AT)

これは名前の通り、全遷移のテストです。全パスではないことにご注意。JSTQB用語で言うと0スイッチカバレッジですかね。このアルゴリズムで生成されたテストケースは以下だと書かれています。

AT: {Test Case (TC1) = (t1, t2, t3), TC2 = (t1, t2, t7), TC3 = (t1, t2, t4, t8), TC4 = (t1, t2, t4, t5), and TC5 = (t1, t6)}.

JSTQBの考え方だと必ず初期状態から始めなければならない、という制約はないですが、ここでは必ずt1の遷移から始まっています。まぁ実際にテストする場合はそうなりますよね。また、JSTQBでは0スイッチのテストケースを作ると全遷移の数=テストケース数になりますが、こちらではそうなっていないですね。最小のテストケース数を考えるとたくさんの遷移を通るパスを作りたくなりますが、ここではおそらく

・すべての遷移に最短でたどり着く

・同じ状態に戻ったら停止

というルールが課されているように思います。


Round Trip Path (RTP)

こちらは前回の記事で紹介したものです。詳細は前回記事を見ていただきたいですが、テストケースはこちらです。

RTP: {TC7 = (t1, t2, t3, t7), TC8 = (t1, t2, t3, t4, t8, t7), TC9 = (t1, t2, t4, t5), TC10 = (t1, t2, t7, t6)}.

前回読んだときはよくわかってなかったのですが、なぜかEmpty stateからのRound tripだけを考えているように見えるんですよね。で、なんでこうなるかを改めて考えたところ、おそらく

・同じ遷移は複数回通らない

という制約がかかっているように思います。そうなると、同じところに帰るルートを含むパスと、あとはsimple pathと書かれている、素直にFinalに行くパスが選ばれてこの4ケースになっているものと思われます。


All Transition Pair (ATP)

これは、Transition pair=JSTQB用語でのスイッチ、だと思われます。つまりNスイッチテストの総称だと思われます。この中でLN2-4というのがありますが、これがまさにNスイッチのNですね。で、スムーズに理解できるかなと思ったら問題が発生しました。

ATP with LN3: {TC14 = (t1, t2, t3, t7), TC15 = (t1, t2, t7, t6), TC16 = (t1, t2, t4, t5), TC17 = (t1, t2, t4, t8)}

これ、何が不思議かというとInitial stateから始まる3スイッチテストをやってるように見えるんですが、

t1, t2, t3, t4

のTCがないんです。t1, t2, t3, t7はあるのに、です。謎すぎませんか。自遷移を外しているわけでもないし、3遷移目までが同じものを外しているわけでもなさそうです。アルゴリズムもそんなに複雑じゃないんですけどね…。


というわけで完全に理解というわけにはいきませんでしたが、大方理解しました。もうちょっと勉強します。

この記事が気に入ったらサポートをしてみませんか?