状態遷移テストにおける「Nスイッチカバレッジ」について、具体的な図解やお題を交えながらわかりやすく解説します。0スイッチカバレッジ(遷移カバレッジ)と1スイッチカバレッジ・2スイッチカバレッジの違いや、それぞれのテストケースの考え方、実務でどのような不具合発見に役立つのかについて探っていきます。
📌 今回のエピソードのポイント
- Nスイッチカバレッジの定義: スイッチの数(遷移の切り替えポイント)をもとにテストの網羅率を計測する仕組みについて解説します。
- 0・1・2スイッチの違いとテストケース数: 状態遷移の切り替えポイントを考慮することで、テストケース数やカバーできる範囲がどのように変化するのかを整理します。
- 不具合検出と実務での活用: 0スイッチでは見落としがちな状態遷移に伴う欠陥を見つけるために、どのような場面で高いスイッチ数を検討すべきかを伝えます。
📕 参考文献
- 状態遷移テスト(state transition testing) - ISTQB Glossary
- ISTQBテスト技術者資格制度 Advanced Level シラバス 日本語版 テストアナリスト Version 3.1.1.J03
🕒 チャプター
- () オープニング
- () 状態遷移テストとカバレッジのおさらい
- () Nスイッチカバレッジとは
- () 0スイッチカバレッジ
- () 1スイッチカバレッジ
- () 2スイッチカバレッジ
- () Nスイッチカバレッジのまとめ
- () エンディング
📢 あなたのご意見をお聞かせください
業務で1スイッチカバレッジや2スイッチカバレッジを活用した経験はありますか?「実は業務で使っている」「今回はじめて概念を知った」など、みなさんのご意見やご感想をぜひお寄せください!
-
X(旧Twitter):ハッシュタグ #b_testing でのポストをお待ちしています。
-
お便りフォーム:こちらからお気軽にどうぞ。
-
フォローのお願い:最新回を逃さないよう、Podcastアプリでのフォローをぜひお願いします!
感想
まだ感想はありません。最初の1件を書きましょう!
サマリー
このエピソードでは、状態遷移テストにおけるNスイッチカバレッジについて解説します。0スイッチカバレッジ(遷移カバレッジ)は全ての遷移を網羅し、1スイッチカバレッジと2スイッチカバレッジはそれぞれ1つまたは2つの遷移の切り替えポイントを考慮することで、より詳細なテストケースを作成し、見落としがちな不具合を発見する可能性を高めます。特に、状態遷移に起因する不具合を厳密に確認する必要がある場合に有効です。
オープニングと番組概要
みなさん、こんにちは。B-Testingのブロッコリーです。 このB-Testing.fmは、QAエンジニアである私、ブロッコリーが、テストや品質に対する私なりの考えを、約10分間で語っていくポッドキャスト番組です。
最近ですね、エピソードの収録がちょっと長くなってしまったなぁと思っていて、なので後半の質問回答のショーコーナーを独立させようっていうふうに考えていました。
それだけでエピソードを一つ作ろうかなとか、そういうふうに思っていたんですけれども、そう思っていたらですね、前回の声音カバレッジ、状態声音テストの声音カバレッジのエピソードが久々に10分を切ったなぁと思っています。
とはいえ、それが短いかというとそうではないとは思っていて、やっぱり10分以内ぐらいの長さの方が聞いている人にとってもお手軽だと思うので、引き続きそれぐらいの短いエピソードになるように心がけたいなと思っています。
今日はですね、状態声音テストの続きでNS1カバレッジについて説明をしていきたいと思います。
ということで、今回もbtesting.fmスタートです。
今回は状態声音テストのNS1カバレッジについて話していきます。
状態遷移テストとカバレッジのおさらい
まずおさらいですね。状態声音テストっていうのは何かっていう話で言うと、Blackboxテスト技法の一つで、状態声音モデルの要素を実行するようにテストケースを設計するっていうものになります。
状態声音モデルっていうのが状態声音図であったりとか状態表であったりするわけですが、今回はその中の状態声音図を用いてカバレッジを満たすようなものを考えていきます。
そんな状態声音テストのカバレッジについてもおさらいになります。
JSTQBのアドバンスレベルのテストアナリストには以下のカバレッジが提示されていますと、まず繊維カバレッジ、これは以前にこのbtesting.fmでも話をしたところです。
それだけではなくてNS1カバレッジ、今回のメインの話ですね。NS1カバレッジっていうものもあります。
あとはラウンドトリップカバレッジっていうのもあります。これは今後の回で話す予定です。
それにプラスアルファとして無効な繊維を含めるものっていうのがありますと。
このNS1カバレッジっていうのが具体的にはゼロスイッチカバレッジ、1スイッチカバレッジ、2スイッチカバレッジとNのところにどんどん数字が入るものになっていきます。
Nスイッチカバレッジの定義
このNS1カバレッジっていうのが何かっていうと、これもJSTQBのアドバンスレベルのテストアナリストのシロバスから持ってきました。
Nスイッチカバレッジとは長さNプラス1でカバーされたスイッチの数を意味して、その長さのスイッチの総数のパーセンテージで表す。
例えば100%の1スイッチカバレッジを達成するには、2つの連続する繊維のすべての有効なシーケンスを1回以上テストする必要がある。
このテストでは100%のゼロスイッチカバレッジへ見落としがちな故障の種類のいくつかを見つけ出すことができるっていうふうに書かれています。
1スイッチカバレッジを達成するには、2つの連続する繊維のすべてが有効なシーケンスを1回以上テストするっていうのはどういうことかっていうのは、
シロバスの文章だけ読んでもわかりづらいので、1つ具体的な例を作って持ってきました。
0スイッチカバレッジ(遷移カバレッジ)
今回の説明用のお題はこういうものになっています。
まず状態Aと状態Bから状態Cにそれぞれ繊維ができて、状態C、状態Dおよび状態Eに繊維できる。このようなお題を持ってきました。
このお題についてNスイッチカバレッジをそれぞれ考えてみたいと思います。
まずゼロスイッチカバレッジですね。ゼロスイッチカバレッジは状態と状態の矢印の部分、繊維ですね。
そこをそれぞれテストすることですべての繊維を通過できますよと。
以前に話した繊維カバレッジと一緒になります。
なのでゼロスイッチカバレッジの場合は状態Aから状態Cに繊維する、状態Bから状態Cに繊維する、状態Cから状態Dに繊維する、状態Cから状態Eに繊維するというこの4つを満たすようにテストケースを作ればいいということになります。
そうすると例えば状態Aから状態Cに行って状態Dに行くテストケースと状態Bから状態Cに行って状態Eに行くテストケース、この2ケースを実施することでゼロスイッチカバレッジを満たすことができます。
すべての矢印それぞれ通ってますよねと。これがゼロスイッチカバレッジの考え方でした。
1スイッチカバレッジ
では次に1スイッチカバレッジについて考えてみます。
今回ここでのポイントはこのスイッチっていう言葉にも関係するんですけれども、状態Aを例えばまず起点として状態Cにまず行きますよねと。
その後切り替えるポイントとして考えます。イメージとしては電車の線路のポイントをイメージしてもらえればと思います。
線路ってポイント部分で切り替えることによって、例えばまっすぐに行こうと思ってたのを切り替えることによって左に行くみたいに線路の切り替えができます。
これをスイッチと呼んでいます。今回の場合は状態Aを起点として状態Cの部分が切り替えのポイントです。
そうすると状態Aから状態Cに行った後に状態Cから状態Dに行くっていうのもあれば、それ以外にも状態Aから状態Cに行って状態Dに行くだけではなくて切り替えることによって状態Eに行けますよね。
つまり状態A、C、Dっていうものもあれば状態A、C、Eもありますよと。このスイッチが1回通る部分っていう意味で1スイッチカバレッジとなります。
今これは状態Aを起点としましたがそれだけではないですよと。今度はもう一つ状態Bを起点とするっていうことも考えられます。
状態Bを起点とすると状態Cを切り替えポイントとすることで状態B、状態C、状態Dに行くっていうのもあればスイッチを押して状態B、状態C、状態Eに遷移するっていうのもありますと。
これで全ての起点についてこういうふうにやっていくことで1スイッチカバレッジを満たすことができます。
なので今回のこの1スイッチカバレッジを満たすためにはどういうテストが必要かというと、状態A、C、Dに行くものと状態A、C、Eに行くもの、そして状態B、C、Dに行くもの、状態B、C、Eに行くものの以上の4つを実施することで1スイッチカバレッジを満たすことができます。
なので当然ながら0スイッチカバレッジのときよりもテストケースの数は増えます。
ただその状態を1つ通過して状態A、状態Cから状態Dに行く場合と状態Eに行く場合っていうふうにスイッチをしたところのテストもするので、0スイッチカバレッジでは確認できないものっていうのも確認ができます。
それによって不具合を見つける可能性が上がります。
2スイッチカバレッジ
今のが1スイッチカバレッジだったわけですけれども、同様に考えると2スイッチカバレッジも考えることができます。
先ほど1スイッチカバレッジの場合は状態Cっていう場所がスイッチ1つだけありましたけれども、
例えば2スイッチカバレッジ、今状態A、B、C、D、Eだけではなくて状態Dと状態Eからそれぞれ状態F、G、H、Iをさらに追加して考えますと、
2スイッチカバレッジの場合切り替えのポイントが2箇所になります。
なのでそうすると、例えば状態Aから状態C行って状態D行って状態Fに行くっていうのもあれば、状態Dのところを切り替えて状態A、C、D、Gっていくものもできます。
今度は状態Dのところのスイッチは全部切り替え確認が終わったので、今度は状態Cの切り替えをすることによって状態Aから状態C、
そして状態Eに行って状態Hに行く。A、C、E、Hっていうものもあれば、A、C、E、Iっていうものもありますよと、こういうふうにできます。
今状態Aを起点にしましたが、それだけではなくて、じゃあ次に状態Bも同じように起点として考えると、
B、C、D、FとDのところで切り替えたB、C、D、G、そして状態Cで切り替えて状態B、C、E、Hと、さらに状態Eで切り替えて状態B、C、E、Iを書く。
こういうふうにテストケースを考えることができます。ということで今回は全部で1、2、3、4、5、6、7、8個のテストケースをすることで、
この状態遷移図における二スイッチカバレッジを満たすことができます。
Nスイッチカバレッジのまとめと実務での活用
ということで今回はNスイッチカバレッジについて説明をしてきました。
特に皆さんゼロスイッチカバレッジは以前に話した遷移カバレッジと一緒なのでやったことがある方も、状態遷移テストをやるときにはだいたい遷移カバレッジ、ゼロスイッチカバレッジをやっている方がほとんどかなと思っているんですけれども、
こういうふうに一スイッチカバレッジ、二スイッチカバレッジまでやるっていうのはほんとなかなかないんですけれども、そういうふうな考え方やり方っていうのもありますし、
特に状態遷移による不具合っていうのを厳密にちょっと見る必要があるようなプロダクトの場合ですと、このNスイッチカバレッジが有効に働くかなと思っています。
ではエンディングです。
エンディングとリスナーへの呼びかけ
btesting.fmではリスナーさんからのお便りを募集しています。
エピソードの感想や私に聞いてみたい質問やテストのお悩みなど、どんなことでも構いません。
投稿フォームは番組概要欄にあります。
またエピソードの感想は、ハッシュタグBテスティングでXのポストをお願いいたします。
今回の話で言えばですね、Nスイッチカバレッジの特に1スイッチカバレッジ、2スイッチカバレッジの話をしてみました。
今までそういうふうに1スイッチカバレッジとかやったことがないよとか、
実は業務上で使っています、2スイッチカバレッジを使っていますとかいう方がもしいたらぜひ聞いてみたいなと思うので、
そういう方もぜひ感想のポストとか、もしくは投稿フォームでもいいので反応をもらえると嬉しいです。
もしもこれからも聞きたいという方はお手持ちのPodcastアプリで番組のフォローもお願いします。
最新回が上がった時にすぐに気づくことができます。
状態遷移テストはもう1回かな、少なくともラウンドトリップカバレッジについては状態遷移テストの説明として話す予定ですので、
その回もすぐに聞きたいという方はぜひ最新回が上がった時にすぐに気づけるようにフォローもお願いしたいなと思います。
ということで今回はここまでです。それではまた次回。バイバイ。
12:08
コメント
スクロール