今回のテーマは、状態遷移テストにおける「ラウンドトリップカバレッジ」です。ISTQBシラバスの定義をベースに、ストップウォッチの具体例を用いながらテストケースの導出方法や網羅条件をわかりやすく解説します。さらに、状態間を行き来する不具合の検知やチーム内での認識合わせといったメリットに加え、認知度の低さや生成AI(GeminiやChatGPT)に丸投げした際の精度・ケース欠損の注意点についても深掘りします。
📌 今回のエピソードのポイント
- 定義と具体例でのケース導出: ISTQBシラバスに基づく定義と、ストップウォッチの遷移図を用いた7つのテストケース導出プロセスを解説。
- 導入メリットと認識合わせの容易さ: 状態間を行き来する複雑な不具合の検出に強く、図をなぞりながらチームで網羅性を共有できる利点を紹介。
- 認知度の低さと生成AIの限界: 資料が少なくAIに任せるとテストケースが欠損する実態を踏まえ、人間が自ら設計する重要性を考察。
📕 参考文献
- コードを書くことだけが技術力じゃないーー10X風間氏が語る、"品質を設計する"エンジニアの仕事 - アンドエンジニア
- 状態遷移テスト(state transition testing) - ISTQB Glossary
- ISTQBテスト技術者資格制度 Advanced Level シラバス 日本語版 テストアナリスト Version 3.1.1.J03
🕒 チャプター
- () オープニング
- () 状態遷移テストとカバレッジのおさらい
- () ラウンドトリップカバレッジとは
- () ストップウォッチ例で見るテストケース導出
- () ラウンドトリップカバレッジの対象外となるケース
- () ラウンドトリップカバレッジのメリット
- () 認知度の低さと生成AI活用の注意点
- () まとめ・現場での活用に向けて
- () エンディング
📢 あなたのご意見をお聞かせください
皆さんは状態遷移テストでラウンドトリップカバレッジを活用したことがありますか?また、テスト設計で生成AIを使った際の精度や工夫などもぜひお寄せください!
-
X(旧Twitter):ハッシュタグ #b_testing でのポストをお待ちしています。
-
お便りフォーム:こちらからお気軽にどうぞ。
-
フォローのお願い:最新回を逃さないよう、Podcastアプリでのフォローをぜひお願いします!
感想
まだ感想はありません。最初の1件を書きましょう!
サマリー
今回のエピソードでは、状態遷移テストにおける「ラウンドトリップカバレッジ」について、ISTQBシラバスの定義に基づき、ストップウォッチの具体例を用いてテストケースの導出方法を解説します。状態間を行き来する不具合の検出やチーム内での認識合わせの容易さといったメリットがある一方、認知度の低さからAIに丸投げした場合の精度やケース欠損の注意点についても触れ、人間が自ら設計することの重要性を考察しています。
オープニングと前回の振り返り
皆さん、こんにちは。B-Testingのブロッコリーです。 このB-Testing.fmは、QAエンジニアである私、ブロッコリーが、テストや品質に対する私なりの考えを、約10分間で語っていくポッドキャスト番組です。
もう1ヶ月ぐらい前になると思うんですけれども、実は&エンジニアさんというところで、私の記事が出ています。といっても、結構中身はこのポッドキャストで話していることが多めかなと思っています。
タイトルとしては、コードを書くことだけが技術力じゃないと、Kazama氏が語る品質を設計するエンジニアの仕事ということで、テスト設計とか品質に対する話が多いかなと思います。
このポッドキャストの中で、まだ話していないものとしては、QAエンジニアのキャリアのロードマップってどういうものかっていうのも、自分なりの考え方、持論でちょっと語っているので、もし興味のある方はそちらも見てもらえると嬉しいです。
インクもポッドキャストの概要欄に貼っておきます。
状態遷移テストとカバレッジのおさらい
今日は、状態遷移テストの続きですね。ラウンドトリップカバレッジについて説明していきたいと思います。
ということで、今回もbtesting.fmスタートです。
ということで、今回は状態遷移テストのラウンドトリップカバレッジについて説明していきたいと思います。
まずおさらいとして、そもそも状態遷移テストとは何かという話ですね。
ブラックボックステスト技法の一つで、状態遷移モデルの要素を実行するようにテストケースを設計するというものです。
状態遷移モデルっていうのが、状態遷移図であったりとか状態表であったりとか、そういうものを使って実行するテストケースの設計です。
そんな状態遷移テストのカバレッジ、これもちょっとおさらいですけれども、JSTQBのアドバンスレベルのテストアナリシスには、以下のカバレッジが提示されています。
遷移カバレッジ、Nスイッチカバレッジ。NスイッチカバレッジのNの部分には0、1、2と数字が入ってくるわけですけれども、そういうNスイッチカバレッジがある。
この遷移カバレッジ、Nスイッチカバレッジは以前のこのPodcastのエピソードでも話しているので、気になる方はそちらを確認してください。
今日話すのはこのラウンドトリップカバレッジになります。
それ以外にもプラスアルファとして無効な遷移を含めるかどうかみたいな話もあります。
ラウンドトリップカバレッジの定義と具体例
このラウンドトリップカバレッジっていうのが何かっていう話なんですけれども、遷移のシーケンスかループを形成するときに適用するものですよと。
100%のラウンドトリップカバレッジを達成するには、任意の状態からその同じ状態に戻る全てのループを、ループが開始および終了する全ての状態に対してテストをしますと。
このループには開始状態と終了状態を除く全ての特定の状態が複数回含まれてはならないというふうにシラバスには書かれています。
といってもやっぱり文字だけだとちょっと分かりづらいので、具体例を使って説明していきます。
実際に使う例は今まで使っているストップウォッチの例ですね。
待機中でスタートストップボタンを押すと計測中に、計測中でスタートストップボタンを押すと一時停止中にいって、一時停止中でスタートストップを押すとまた計測中になって、一時停止中でリセットを押すと待機中になる。
待機中の時にリセットを押しても待機中のままだし、計測中でリセットを押しても計測中のままという、こういう状態遷移図、ストップウォッチの状態遷移図を使ってラウンドトリップカバレッジがどういうものになるかというのをちょっと考えています。
それぞれの状態に起点として注目するんですが、まず待機中の状態に注目しますと。
待機中から始まって終わりが待機中になるようなものを考えていきます。
そうするとまず一つ考えられるのが、待機中でリセットボタンを多加して待機中に戻るというものがあります。
他に待機中に戻るものってどういうものがあるかというと、待機中でスタートストップを押すと計測中になって、計測中でスタートストップを押すと一時停止中になって、一時停止中でリセットを押すと待機中に戻る。
これも待機中から始まって待機中に戻っていく例になります。
待機中がスタートはこの二つかなと。
続いて同じように今度は計測中から考えていきます。
計測中状態に戻ってくる遷移ってどういうものがあるかというと、まず一つが計測中でリセットボタンを押して計測中に戻るパターン。
二つ目が計測中でスタートストップで一時停止中になって、一時停止中でスタートストップを押して計測中に戻るパターン。
そして最後三つ目が計測中でスタートストップを押して一時停止中になって、一時停止中でリセットを押して待機中になって、待機中でスタートストップを押して計測中に戻るパターン。
計測中から始まるものはこの三つがあるかなと思います。
最後が一時停止中ですね。
一時停止中に戻ってくる遷移っていう のは まず一つが一時停止中でスタート
ストップで計測中になって 計測 中でスタートストップで一時停止中
になるパターン そしてもう一つ あるのが 一時停止中でリセット
を押して待機中になって 待機中 でスタートストップを押して計測中
になって 計測中でスタートストップ を押して一時停止中になるっていう
こういう2パターンあるかなと思います ということで 合計7個のテストケース
をやることによって このストップウォッチ の状態遷移図に対するラウンド
トリップカバレッジを満たすという ふうになりますと ちなみに別の
ラウンドトリップカバレッジの対象外となるケース
ものとしてこういうのはあるん じゃないのっていうふうに考え
られるかなと思います 待機中で スタートストップを押して計測中
で 計測中でスタートストップを押して 一時停止中で 一時停止中でスタート
ストップを押してもう一回計測 中に戻って 計測中でスタートストップ
を押して 一時停止中に行って 一時 停止中でリセットを押して 待機中
に行くっていう この待機中から 待機中に行く こういうラウンド
トリップを考えてもいいんじゃない のって思うかもしれません ただし
最初のほうで紹介したラウンド トリップカバレッジの話 シラバス
に書かれている中の 特定の状態 が複数回含まれてはならないっていう
表現ですね 今回の場合だと 一番 最初の待機中と一番最後の待機中
はそこに戻ってくるっていう意味 ではいいんですけれども それ以外
例えば 待機中から始まっている のに 計測中とか一時停止中っていう
状態は二回以上含まれてはならない って書いてるんですね 今示した
例でいうと 待機中 計測中 一時停止中 で もう一回計測中に戻って さらに
もう一回一時停止中にも行って 待機中に行くっていうふうに 計測
中と一時停止中が二回通っている ので これはラウンドトリップカバレッジ
のテストケースには含まれない よ 入らないよっていうふうに考える
ことができます このようにして ラウンドトリップカバレッジの
テストケースを作ることができます このラウンドトリップカバレッジ
ラウンドトリップカバレッジのメリット
の良さって何かっていうところ なんですけれども そもそもこれ
状態遷移テストっていうのは 確認したいこととしてあるのが 状態
と状態を行ったり来たりする そこの 部分での不具合っていうのが考え
られるかなと思います それを検知 しやすいのが このラウンドトリップ
カバレッジのテストケースかな っていう話です あとは 基本的に
状態遷移図を見ながらラウンド トリップカバレッジを考えることが
できるので 自分自身でもそうですし 他の人とレビューをしていたり
しても これで網羅しているかどうか の認識合わせを行いやすいんです
よね これで確かに最初 初期の 状態と終了の状態 ここで戻って
きてるねっていうのが見やすかった りします 今 これ ビデオポッドキャスト
見てる方は先ほどの例を見て分かる ように 実際に矢印の部分をなぞ
っていくっていうふうにやること で これで認識合わせを行いやすい
っていう良さがあります 一方で 欠点もあるかなと思います ラウンド
認知度の低さと生成AI活用の注意点
トリップカバレッジの欠点として まず そもそも このラウンドトリップ
カバレッジ自体の認知度が非常 に低いなと思っています 少なく
とも 日本語の文献で こういう ラウンドトリップカバレッジって
こういうふうに作っていくんだよ っていうふうに書かれている資料
は 私が作ったもの以外で見た ことがないです っていうふうに
非常に認知度が低いです 認知度 が低いということは AIの学習リソース
となるものもすごい少ないんですよ ね なので これをそのままAI任せ
で丸投げしたときの精度も低い と思っています 今回のストップウォッチ
の例の場合は テストケースが先 ほど言ったとおり 合計7つあります
7つ作成されるべきなんですけれども これをGeneに聞いてみると 6つ作成
されました さっきの7つのうち 6つ 全く同じのが出て 単純に1つ
欠損でした チャットGPT投げた ところ5つ出力されて その5つは
先ほどと全く一緒のものが出て きたんですが 2つ欠損しているっていう
ふうになりました なので やっぱり AIにただただ任せる
は 今回 ラウンドトリップカバレッジ においては 現時点では難しいかな
と思っていて そもそも じゃあ ラウンドトリップカバレッジって
どういうふうにやるのかっていう のは 自分自身で考えることが重要
なんだろうなと思っています ということで 今回はラウンドトリップ
まとめと現場での活用に向けて
カバレッジという 日本でもそうだ し 世界的にもあんまり知られて
ない 状態遷移テストのカバレッジ の手法を紹介しました ただ 個人
的にはすごい このラウンドトリップ カバレッジは 状態遷移テスト
で確認したいようなループとか 状態の位置を確認できる すごい
有効な手段だと思うので ぜひ 今回 で興味を持った方は 普段の業務
でも活用してもらえるとうれしい です
ではエンディングです btesting.fm では リスナーさんからのお便り
を募集しています エピソードの 感想や 私に聞いてみたい質問
やテストのお悩みなど どんなこと でも構いません 投稿フォームは
番組概要欄にあります 他 エピソード の感想は ハッシュタグ btesting
banscotestingで xのポストをお願いいたします 今日の話で言うと ラウンドトリップ
カバレッジっていう おそらく名前 だけは聞いたことがあるとか そういう
方がほとんど もしくは名前すら 聞いたことないっていう方がほとんど
だと思う手法について 具体的な 例を用いて説明してきました なる
ほど こういうふうにやるのねって 思って 実際 業務で使ってみました
とか そういうような感想とか あったら ポスト もしくは投稿
フォームから投げてもらえると すごい嬉しいです
もしもこれからも聞きたいという 方は お手持ちのPodcastアプリで番組
のフォローをお願いします 最新 回が上がったときにすぐに気づけ
ます 今回 状態遷移テストっていう のを何回か話していきましたけれども
これからもテスト設計技法について も話しますし もしくはテストとか
品質に関することは ちょっとざ っくばらにいろいろと話していき
たいなと思うので 気になる方は ぜひフォローをよろしくお願いします
ということで 今回はここまでです それでは また次回
バイバイ
12:42
コメント
スクロール