状態遷移テストのラウンドトリップカバレッジとは

JSTQB AL TAの中の状態遷移テストの中に、ラウンドトリップカバレッジというカバレッジ基準が書かれています。

「ラウンドトリップカバレッジ」は、遷移のシーケンスがループを形成するときに適用する。100%のラウンドトリップカバレッジを達成するには、任意の状態から同じ状態に戻るすべてのループをテストする。この場合、ループに含まれるすべての状態をテストする必要がある。

これがラウンドトリップカバレッジに関する言及のすべてです。

で、調べました。見つけました。

https://www.sciencedirect.com/science/article/pii/S1319157818311078

4.1.2. Round Trip Path (RTP)

ここに書かれていました。JSTQBの文章だけを読むと、ループ(自遷移/自状態から自状態への遷移)とも読めるのですが、ここでは明らかにある状態から同じ状態に戻る「パス」をテストする、と言っています。JSTQBもループではなくパスと書けば誤解がないのにな、とは思います。

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

これがRTPで生成されたテストケース(パス)とのことです。TC*やt*が何を示すかは原典見ていただくとして、一つ言えるのがパスとしてはInitial stateからちゃんと書く前提だということですね。で、同じ状態に戻るパスを含むパスがすべてカバーされれば終了、という考え方のようです。

状態遷移テストを考えるときに、特定の状態から自分に返ってくるパスを網羅する、みたいなことはやると思いますが、テストとして成立させるためには初期状態から考えないといけないってことですね。


https://torkar.github.io/pdfs/nina-issre.pdf

こちらでは、

Binder denotes the set of paths covered by the tree as RTPs as they capture all transition sequences that begin and end with the same state (with no repetitions of states other than the sequence start and end state) and simple paths from the initial to the final state of the statechart

と書かれています。状態の繰り返しなしで、というところがより分かりやすいですね。これだと自遷移があっても一意にパスが特定できそうです。


で、どの文献を見てもBinder先生のTesting object-oriented systems: models, patterns, and toolsを参照しているので、日本語訳も出ていないようですし原典をポチってみました。届いたらここをちゃんと読んでみます。


いいなと思ったら応援しよう!