1. B-Testing.fm
  2. #43 【状態遷移テスト】ストッ..
#43 【状態遷移テスト】ストップウォッチで学ぶ「状態遷移図」の書き方と活用パターン
2026-07-27 11:11

#43 【状態遷移テスト】ストップウォッチで学ぶ「状態遷移図」の書き方と活用パターン

テスト設計技法のひとつである「状態遷移テスト」の基本となる「状態遷移図」の作成方法について解説します。ストップウォッチの動作を例に、状態・イベント・遷移といった構成要素や「開始疑似状態」の役割を紐解きます。さらに、テスト設計で状態遷移図を積極的に活用すべき2つの重要なパターンについても詳しく紹介します。


📌 今回のエピソードのポイント

  • 状態遷移図の構成要素: 状態、イベント、遷移、そして「開始疑似状態」など、システムの振る舞いをモデル化するための基本用語と役割を整理します。
  • ストップウォッチを例にした作成手順: 「待機中」「計測中」「一時停止中」といった状態が、ボタン押下というイベントによってどう変化するかを順を追って図解します。
  • 積極的に作成すべき2つのパターン: 「同じイベントでも前状態によって遷移先が変わる場合」と「同じ状態でもイベントによって遷移先が変わる場合」の活用ポイントを解説します。



📕 参考文献



🕒 チャプター

  • () オープニング
  • () 状態遷移テスト・状態遷移図とは何か
  • () 例題:ストップウォッチのテスト
  • () 状態遷移図の作成手順
  • () 積極的に作成すべきパターン①(前状態による違い)
  • () 積極的に作成すべきパターン②(イベントによる違い)
  • () まとめと次回予告
  • () エンディング


📢 あなたのご意見をお聞かせください

みなさんは普段のテスト設計で「状態遷移図」を活用していますか?「開始疑似状態」の表記など、知っていたことや新しい発見があれば、ぜひご意見やご感想をお寄せください!

感想

まだ感想はありません。最初の1件を書きましょう!

00:07
皆さん、こんにちは。B-Testingのブロッコリーです。 このB-Testing.fmは、QAエンジニアである私、ブロッコリーが、テストや品質に対する私内の考えを、約10分間で語っていくポッドキャ
スト番組です。
最近ですね、このB-Testing.fmの中ではですね、テスト設計技法の話をしてきて、その後、テストの7原則の話をしてはみたんですけれども、皆さんは聞きたいのはテスト設計の話なのか、それともテストとか
品質とか、ざっくり、そういう全体的な話なのか、それともはたまたQAとAIに関する話なのか、
AIに関する話は多分、皆さん聞きたがっているんだろうな、とは思ってはいるんですけれども、そういうふうに皆さんが聞きたいなと思っているもの、もしあれば、投稿してもらえると嬉しいんですけれども、
とはいえ、やっぱりAIを使うにしても、基礎としてテスト設計の技術とか、テストの技術って大事だと思っているので、それは引き続きお伝えしていきたいなと思っています。
今日は、そんなテスト設計技法の一つの状態遷移テストの紹介として、状態遷移図について話していきたいと思います。ということで、今回もbtesting.fmスタートです。
今日は、状態遷移図の作成について話していきたいなと思っています。
そもそも、まず状態遷移テストとは何かっていう話なんですけれども、このPodcastの中ではおなじみとなったASTQB及びJSTQBの用語集からまず引っ張ってきました。
状態遷移テストとは何かに対しては、ブラックボックステスト技法の一つですよと、状態遷移モデルの要素を実行するようにテストケースを設計しますと。
これは何を言ってるかというと、まずブラックボックステスト技法ですっていうことは、コードの中身を読んでそれを基にテストするわけではなくて、
使用書ベースであったりとか、そういうものを基にしたテストの技法の一つですよと。
この後出てきますが、状態遷移モデル、特に状態遷移図を実行するようにテストケースを設計するというものになってきます。
そんな状態遷移図っていうのは何かっていう話ですが、状態遷移図というのはシステムの取り入れる状態と有効な遷移を示すことで、システムの振る舞いをモデル化するものですと。
遷移はイベントによって開始され、さらにガード条件によって限定されることがあると。
03:06
遷移は瞬時に起こることを想定しており、遷移によってソフトウェアがアクションを起こす場合があると書かれています。
特に重要だと個人的に思っているのは、システムの振る舞いのモデル化というところになります。
そんな用語を並べて言ってもわかりづらいと思うので、例題を用いて説明していきます。
ストップウォッチのスタート、ストップのボタンとリセットのボタンについてどんなテストをしますかというお話になります。
このうち、まず計測部分ですね。1、2、3と増えていく計測部分は正確である前提でテスト対象外とします。
また、ストップウォッチによくあるラップ機能というのは今回搭載していなくて、あくまでもスタートストップとリセットという2つのボタンについてのテストになります。
これをやるときにまず何をするかというと、まず最初状態センサーの作成として、一番最初どこから始まるかというと0分0秒の時ですよね。
この時の0分0秒の状態を待機中状態と今回の場合呼ぶとします。
この時の四角で書いて待機中って表現したりとか、楕円で書いたりもするかもしれないですが、この表現したものこれを状態と呼びます。
ちなみにそこに黒い丸で矢印を引っ張って表現することもあるんですが、これは開始疑似状態と呼んでここから始まるよっていうのを指し示しているものになります。
つまり今回のこのストップウォッチの場合は待機中状態から始まるよという意味で待機中の状態のところに向かって黒丸と矢印が引かれているとなります。
待機中からまずどうなるかというとスタートストップのボタンを押すと計測が始まりますよね。
1、2、3と計測が始まります。
なのでこういうふうに矢印を引っ張ってスタートストップを多化って書いてその後計測中という状態を書きます。
この時のスタートストップのボタンを多化するみたいなこれをイベントと呼びます。
またこの矢印の部分のことを繊維と呼びます。
イベントによってとある状態から別の状態に遷移するのでこれを状態遷移図と呼びます。
こういうふうに表現していくと何がいいかというとですね。
今回のストップウォッチの例題のようにスタートストップのボタンを押すとかリセットのボタンを押すっていうところのテストをするって言った時に適当にガチャガチャ押しますかと。
06:00
適当にガチャガチャを押してじゃあこれどこまであったらテストとしてオッケーなのっていうふうに分かりづらくなったりします。
なのでまずこういうふうな状態およびイベントを用いた状態遷移図を書くことによってじゃあこの部分をテストしようっていうのがある程度見えてくるようになります。
ということで通気を考えてみましょう。
計測中1,2,3とカウントアップされている時にもう1回スタートストップボタンを押すとどうなるかっていうと例えば4秒とかで止まるわけですよね。
これを一時停止中状態と呼びましょうと。
今回の場合はそうやって呼びます。
他にもどうなるかっていうと一時停止中4秒で止まっている時にもう1回スタートストップボタンを押したらまた5,6,7とカウントアップが再開されていきますよね。
なので一時停止中状態からスタートストップボタンを動かしてもまた計測中に移るよと。
先ほどの4秒とかで止まっている時にじゃあ今度はリセットボタンを押すとどうなるかっていうと0分0秒に戻りますよね。
なので一時停止中からリセットボタンを押すかっていうイベントを書いてその遷移先は待機中の方に戻る。
こんな状態遷移図が作成ができます。
こういうふうな状態遷移図っていうのは積極的に作成するパターンというか勘どころっていうのが何かっていうと
まず一つは同じスタートストップを多かっていうイベントであっても前状態が例えば待機中なのか計測中なのかとかによってその矢印の先が異なる
矢印の先の状態が異なる場合に作成するといいかなと思っています。
つまり待機中0分0秒でスタートストップボタンを多かする。
計測中の時にスタートストップボタンを多かする。
特定のボタンを押すというのは変わらないわけですよね。
けれどもそれによって行われている役割機能っていうのは変わってくるわけですよね。
待機中0分0秒の時はスタートストップボタンを多かすることでカウントを始めるという合図になります。
一方で1、2、3と計測している時に全く同じスタートストップボタンを多かっていうイベントを行うと
今度は1時停止4秒とかで止まるっていう状態になります。
全く同じボタンを押しているはずなのに遷移先が異なっている。
こういう時に状態遷移図を積極的に作成できるといいかなと思っています。
一方もう一つあるのが同じ状態1時停止4秒で止まっているみたいな
同じ状態でもイベントによって遷移先の状態が異なる
スタートストップボタンを多かする場合とリセットボタンを多かする場合で
どういうふうな状態が変わるかっていうのが
異なる場合にも作成するといいかなと思っています。
ということで今回は状態遷移テストの最初の部分ですね
09:00
状態遷移図の作成というものについて話してみました。
次回以降もこの状態遷移テスト
状態遷移図は実際よく知られていることかもしれませんが
次回以降はもう少し状態遷移テストならではの話
状態遷移テストだからこそ結構使ったりするようなものについて
説明していきたいなと思います。詳しくはまた次回以降のエピソードで話していきます。
それではエンディングです。
btesting.fmではリスナーさんからのお便りを募集しています。
エピソードの感想や私に聞いてみたい質問やテストのお悩みなど
どんなことでも構いません。投稿フォームは番組概要欄にあります。
またエピソードの感想は
ハッシュタグBtestingでXのポストをお願いいたします。
今日のエピソードで言えば状態遷移テストの最初のものとして
状態遷移図の作成について話してきました。
どんな感想でも構いません。
例えば開始議事状態っていうのがあるんだとか
知らなかったとかあるかもしれませんし
ここまではよく知ってるよ。こういうところからブロッコリーさん説明始めるのみたいな
そんな感想でも何でも構いません。
ハッシュタグBtestingでXのポストをお願いします。
もしもこれからも聞きたいという方は
お手持ちのPodcastアプリで番組のフォローもお願いします。
最新回が上がったときにすぐに気づけます。
今日から状態遷移テストについて話していきましたけれども
次回以降状態遷移テストっていうのは
別に状態遷移図だけじゃないよって先ほど紹介しましたが
それは次回以降話していきたいなと思いますので
それをすぐ気づくためにもぜひフォローよろしくお願いします。
ということで今回はここまでです。
それではまた次回。バイバイ。
11:11

コメント

スクロール