Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
意外と知らない状態遷移テストの世界
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nihonbuson
PRO
December 20, 2025
Technology
4k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
意外と知らない状態遷移テストの世界
WACATE 2025 冬
での投影資料です。
nihonbuson
PRO
December 20, 2025
More Decks by nihonbuson
See All by nihonbuson
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
68
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
4
2.1k
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
7
3.3k
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
840
体験しながら作るクラシフィケーション ツリーテスト
nihonbuson
PRO
1
590
「品質のつくりこみ」と「リリース後に行うとよいテスト活動」を体験する
nihonbuson
PRO
1
400
ホリスティックテスティングの右側も大切にする 〜2つの[はか]る〜 / Holistic Testing: Right Side Matters
nihonbuson
PRO
0
2k
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
18
4k
テストコードにはテストの意図を込めよう(2025年版) #retechtalk / Put the intent of the test 2025
nihonbuson
PRO
20
3.9k
Other Decks in Technology
See All in Technology
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
21
12k
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.5k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
210
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.8k
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
400
絵ではじめるKubernetesセキュリティ
aoi1
3
560
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.3k
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
720
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
210
2026_devsumi_ozono.pdf
o3
3
500
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
740
Minecraft JavaのMODをSwiftで作る
1mash0
0
160
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Producing Creativity
orderedlist
PRO
348
41k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
The SEO Collaboration Effect
kristinabergwall1
1
560
GraphQLとの向き合い方2022年版
quramy
50
15k
Making the Leap to Tech Lead
cromwellryan
135
10k
Chasing Engaging Ingredients in Design
codingconduct
0
310
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Mobile First: as difficult as doing things right
swwweet
225
10k
The browser strikes back
jonoalderson
0
1.7k
Transcript
意外と知らない 状態遷移テストの世界 ブロッコリー (@nihonbuson)
自己紹介 • 風間裕也(ブロッコリー) • 株式会社10X 品質管理チーム • 副業…B-Testing(個人事業主)として ◦ 株式会社MonotaRO(テストコンサルタント)
他数社でお手伝い • 社外活動 ◦ WACATE実行委員長 ◦ JaSST Review実行委員長 ◦ Developers Summitコンテンツ委員 ◦ SReEE(ソフトウェアレビューを エンジニアリングっぽく捉える会)リーダー • 猫派 SNS上の アイコン
状態遷移テストとは何か
状態遷移テストとは何か ブラックボックステスト技法のひとつ。状態遷移モデルの 要素を実行するようにテストケースを設計する。 状態遷移テスト(state transition testing) - ISTQB Glossary
例題を用いて説明 ストップウォッチの 「スタート/ストップ」ボタンと 「リセット」ボタンについて どんなテストをしますか? ※計測部分は正確であり、 テスト対象外とする ※ラップ機能は搭載していないとする スタート /ストップ
リセット https://goo.gl/iAvVm8
状態遷移図の作成
状態遷移図とは何か 状態遷移図は、システムの取り得る状態と有効な遷移を 示すことで、システムの振る舞いをモデル化する。 遷移は、イベントによって開始され、さらにガード条件に よって限定されることがある。 遷移は瞬時に起きることを想定しており、遷移によってソ フトウェアがアクションを起こす場合がある。 ISTQBテスト技術者資格制度 Foundation Level
シラバス 日本語版 Version 2023V4.0.J02 4.2.4 状態遷移テスト
状態遷移図の作成 待機中
状態遷移図の作成 待機中 状態
状態遷移図の作成 待機中 開始擬似 状態
状態遷移図の作成 待機中 計測中 スタート/ ストップ 押下
状態遷移図の作成 待機中 計測中 スタート/ ストップ 押下 イベント
状態遷移図の作成 待機中 計測中 遷移 スタート/ ストップ 押下
状態遷移図の作成 待機中 計測中 一時停止中 スタート/ ストップ 押下 スタート/ ストップ 押下
状態遷移図の作成 待機中 計測中 一時停止中 スタート/ ストップ 押下 スタート/ ストップ 押下
スタート/ ストップ 押下
状態遷移図の作成 待機中 計測中 一時停止中 リセット 押下 スタート/ ストップ 押下 スタート/
ストップ 押下 スタート/ ストップ 押下
状態遷移図を積極的に作成すべきパターン① 待機中 計測中 スタート/ ストップ 押下 一時停止中 同じイベントでも前状態によって 遷移先の状態が異なる場合に作成すると良い スタート/
ストップ 押下 スタート/ ストップ 押下 リセット 押下
状態遷移図を積極的に作成すべきパターン② 待機中 計測中 一時停止中 同じ状態でもイベントによって 遷移先の状態が異なる場合に作成すると良い スタート/ ストップ 押下 スタート/
ストップ 押下 スタート/ ストップ 押下 リセット 押下
状態表の作成
状態表は、状態遷移図に相当するモデルである。 行は状態を表し、 列はイベント(存在する場合はガード条件)を表す。 テーブルの項目(セル)は遷移を表し、 ターゲット状態、ガード条件、 および定義されている場合は結果のアクションを含む。 状態遷移図とは対照的に、状態表は無効な遷移を明示的に 示し、空のセルで表す。 ISTQBテスト技術者資格制度 Foundation
Level シラバス 日本語版 Version 2023V4.0.J02 4.2.4 状態遷移テスト 状態表
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 一時停止中
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 計測中 一時停止中
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 計測中 一時停止中 一時停止中
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 計測中 一時停止中 一時停止中 計測中
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 計測中 一時停止中 一時停止中 計測中 待機中
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 計測中 一時停止中 一時停止中 計測中 待機中
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 リセット 押下 リセット 押下 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 計測中 一時停止中 一時停止中 計測中 待機中
状態表の作成 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下
スタート/ ストップ 押下 リセット 押下 リセット 押下 リセット 押下 自己遷移は ハイフンで表現する ※通例の表現 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 ー 計測中 一時停止中 ー 一時停止中 計測中 待機中
もしもリセットボタンが非活性になる場合… 動作 スタート/ストップ押下 リセット押下 前状態 待機中 計測中 N/A 計測中 一時停止中
N/A 一時停止中 計測中 待機中 待機中 計測中 スタート/ ストップ 押下 一時停止中 スタート/ ストップ 押下 スタート/ ストップ 押下 リセット 押下 起こり得ない遷移は N/A(Not Applicable)で 表現する ※通例の表現
テストケース例 # 前状態 操作 期待結果 1 0:00で停止している スタート/ストップ ボタン押下 カウントアップが始まる
2 0:00で停止している リセットボタン押下 0:00で停止したままになる 3 カウントアップしている スタート/ストップ ボタン押下 押した瞬間の時間で カウントが止まる 4 カウントアップしている リセットボタン押下 何も変わらず カウントアップし続ける 5 0:05で停止している スタート/ストップ ボタン押下 0:05からカウントアップが 再開する 6 0:05で停止している リセットボタン押下 0:00に変化し、停止している
テストケース例 # 前状態 操作 期待結果 1 0:00で停止している スタート/ストップ ボタン押下 カウントアップが始まる
2 0:00で停止している リセットボタン押下 0:00で停止したままになる 3 カウントアップしている スタート/ストップ ボタン押下 押した瞬間の時間で カウントが止まる 4 カウントアップしている リセットボタン押下 何も変わらず カウントアップし続ける 5 0:05で停止している スタート/ストップ ボタン押下 0:05からカウントアップが 再開する 6 0:05で停止している リセットボタン押下 0:00に変化し、停止している 状態遷移図や状態表では 表現できていない部分
お題
お題 (ワークのため割愛)
ポイント • 状態遷移図を描くことで、認識の違いに気付ける • 状態表を書くことで、 起こり得ない遷移や自己遷移のパターンに気付ける
カバレッジ
カバレッジ JSTQB Advanced Level テストアナリストには 以下のカバレッジが提示されている • 遷移カバレッジ • Nスイッチカバレッジ
◦ 0スイッチカバレッジ = 遷移カバレッジ ◦ 1スイッチカバレッジ ◦ 2スイッチカバレッジ … • ラウンドトリップカバレッジ • (+αとして)無効な遷移を含める
遷移カバレッジ =0スイッチカバレッジ
遷移カバレッジ(0スイッチカバレッジ) すべての状態に滞在し、すべての遷移を通過することを 保証する。 ISTQBテスト技術者資格制度 Advanced Level シラバス 日本語版 テストアナリスト Version
3.1.1.J03
遷移カバレッジ(0スイッチカバレッジ)の例 リセット スタート/ ストップ スタート/ ストップ スタート/ ストップ リセット リセット
待機中 計測中 一時停止中
遷移カバレッジ(0スイッチカバレッジ)の例 リセット スタート/ ストップ スタート/ ストップ スタート/ ストップ リセット リセット
待機中 計測中 一時停止中
遷移カバレッジ(0スイッチカバレッジ)の例 リセット スタート/ ストップ スタート/ ストップ スタート/ ストップ リセット リセット
待機中 計測中 一時停止中 上記2ケースを実行することで、 遷移カバレッジが100%になる
Nスイッチカバレッジ
Nスイッチカバレッジ 「N スイッチカバレッジ」は、長さ N+1 でカバーされた スイッチの数を意味し、その長さのスイッチの総数の パーセンテージで表す。 例えば、100%の1スイッチカバレッジを達成するには、 2つの連続する遷移のすべての有効なシーケンスを、1 回
以上テストする必要がある。 このテストでは、100%の 0 スイッチカバレッジで見落と しがちな故障の種類のいくつかを見つけ出すことができ る。 ISTQBテスト技術者資格制度 Advanced Level シラバス 日本語版 テストアナリスト Version 3.1.1.J03
Nスイッチカバレッジの説明用お題 状態C 状態A 状態B 状態D 状態E
0スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 上の各矢印をテストすることで、すべての遷移を通過する
0スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 上の各矢印をテストすることで、すべての遷移を通過する
0スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 上の各矢印をテストすることで、すべての遷移を通過する
0スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 上の各矢印をテストすることで、すべての遷移を通過する
0スイッチカバレッジを満たすテストケース 状態C 状態A 状態B 状態D 状態E 2ケースを実施することで、 0スイッチカバレッジを満たすことができる
1スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 状態Aを起点、状態Cを切り替えポイントとして、 状態A→状態C→??のパターンすべての遷移を通過する
1スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 状態Aを起点、状態Cを切り替えポイントとして、 状態A→状態C→??のパターンすべての遷移を通過する
1スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 同様に状態Bを起点、状態Cを切り替えポイントとして、 状態B→状態C→??のパターンすべての遷移を通過する
1スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 同様に状態Bを起点、状態Cを切り替えポイントとして、 状態B→状態C→??のパターンすべての遷移を通過する
1スイッチカバレッジを満たすテストケース 状態C 状態A 状態B 状態D 状態E 4ケースを実施することで、 1スイッチカバレッジを満たすことができる
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
2スイッチカバレッジ 状態C 状態A 状態B 状態D 状態E 2スイッチカバレッジの場合、 切り替えポイントが2箇所になる 状態F 状態G
状態I 状態H
ラウンドトリップ カバレッジ
ラウンドトリップカバレッジ 「ラウンドトリップカバレッジ」は、遷移のシーケンスが ループを形成するときに適用する。 100%のラウンドトリップカバレッジを達成するには、 任意の状態から同じ状態に戻るすべてのループを、ループ が開始および終了するすべての状態に対してテストする。 このループには、開始状態と終了状態を除くすべての特定 の状態が複数回含まれていてはならない。 ISTQBテスト技術者資格制度 Advanced
Level シラバス 日本語版 テストアナリスト Version 3.1.1.J03
ラウンドトリップカバレッジの例 リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット
リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/ ストップ
リセット リセット まず「待機中」状態に注目する ラウンドトリップカバレッジを満たすテストケース
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 「待機中」状態に戻ってくる遷移は…
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 「待機中」状態に戻ってくる遷移は…
リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/ ストップ
リセット リセット 次に「計測中」状態に戻ってくる遷移は… ラウンドトリップカバレッジを満たすテストケース
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 次に「計測中」状態に戻ってくる遷移は…
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 次に「計測中」状態に戻ってくる遷移は…
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 次に「計測中」状態に戻ってくる遷移は…
リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/ ストップ
リセット リセット 最後に「一時停止中」状態に戻ってくる遷移は… ラウンドトリップカバレッジを満たすテストケース
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 最後に「一時停止中」状態に戻ってくる遷移は…
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 最後に「一時停止中」状態に戻ってくる遷移は…
ラウンドトリップカバレッジを満たすテストケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット 上記のテストケースが必要となる
ラウンドトリップカバレッジの対象外のケース リセット 待機中 計測中 スタート/ ストップ 一時停止中 スタート/ ストップ スタート/
ストップ リセット リセット ↑は「特定の状態が複数回含まれていてはならない。」 のラウンドトリップカバレッジの定義を満たさないため、 テストケースには入らない
お題
お題 (ワークのため割愛)
より実務に近いお題
お題 (ワークのため割愛)
ポイント • 注目点によって、作成する状態遷移図は全く異なる • 注目点によって、ある程度の抽象化が必要 • 一見すると同じ状態でも、状況によって細分化 • 状態表を書くと、自己遷移がたくさん発生する
まとめ
まとめ • 状態遷移図を描き、状態の変化について認識を揃える • 状態表を書き、気付いていなかった自己遷移や 無効な遷移を発見する • 様々なカバレッジを駆使して、工数や要求を満たす 最適なテストケースを作成する •
様々な情報がある中で適度な抽象化や細分化を行い 状態遷移図を作成する