Upgrade to Pro — share decks privately, control downloads, hide ads and more …

QA・ソフトウェアテスト研修【MIXI 26新卒技術研修】

QA・ソフトウェアテスト研修【MIXI 26新卒技術研修】

本スライドは、MIXIの2026年度新卒向け技術研修で使用された資料です。
 
MIXI 2026新卒技術研修
『QA・ソフトウェアテスト研修』
 
───────────────────────────────
※皆様へのお願い※ 資料・動画・リポジトリのご利用について
───────────────────────────────
公開している資料や動画は、是非、勉強会や社内の研修などにご自由にお使いいただければと思いますが、以下のような場でのご利用はご遠慮ください。
- 受講者から参加費や授業料など金銭を集めるような場での利用
(会場費や飲食費など勉強会の運営に必要な実費を集める場合は問題ありません)
- 出典を削除または改変しての利用

Avatar for MIXI ENGINEERS

MIXI ENGINEERS PRO

July 23, 2026

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 名前 : 松谷峰生 (まつやみねお) 部署 : 開発本部たんぽぽ室QAG モケイ部 に入っています。

    興味あったら声をかけてください笑 社外活動 • JaSST(ソフトウェアテストシンポジウム)九州元実行委員長 • ASTER(ソフトウェアテスト技術振興協会)教育事業メンバー • AIプロダクト品質保証ガイドラインVUI領域執筆(だいぶ昔だ…) ©MIXI 2
  2. ⾃⼰紹介 • • • ©MIXI マンガ家! ◦ 新人さんからわかるソフトウェアテスト解説マンガ 「テスターちゃん」 ◦

    なにそれ?あなたの知らないテストの言葉 ◦ マンガではじめるMagicPod入門 ペットはフクロモモンガ GWは小説執筆にトライしていました(笑) 3
  3. ⽬次 • • • • • • ©MIXI QA(品質保証)って? 休憩

    (5分) ソフトウェアテスト入門 ◦ テストの重要性 ◦ テストの考え方 ◦ テストレベルという考え方 休憩 (5分) テスト技法 ◦ 同値分割法 ◦ 境界値分析 ◦ デシジョンテーブルテスト ◦ 組み合わせテスト(ペアワイズ法) ◦ 状態遷移テスト おすすめ書籍 5
  4. 品質の定義の変遷 クロスビー (Philip B. Crosby) 品質とは、 要件に対する適合 である ワインバーグ (Gerald

    M. Weinberg) 品質は誰かにとっての価値 である 一般の工業プロダクトよりの定 義 ここでの価値は 「人々はその要求が満たされる なら、喜んで対価を払う」を意味 している 割とテスト業界では この定義が好きな人が多い (主観) ©MIXI 出典: ソフトウェア品質知識体系ガイド( SQuBOK Guide V2) 14
  5. 品質の定義の変遷 石川馨 (いしかわかおる) 「製品の品質」は 欧米の考えである「狭 義の質」 である。 一方「広義の質」は 仕事の質、サービス の質、情報の質、工程の質、部門の質、

    人の質、システムの質、会社の質など、 これら全てを含めて捉える 。品質管理 は「広義の質」について管理することを 基本姿勢とする ©MIXI 出典: ソフトウェア品質知識体系ガイド( SQuBOK Guide V2) プロダクトの質を「狭義の質」、 それを取り巻く全体を含めた質 を「広義の質」と定義 15
  6. 作り⽅‧やり⽅(プロセス)がイマイチだとイマイチなモノができる 毎回ボロボロのプ ロダクトが出来上が り、 ひたすらテストで打 ち返して 時間もコストも かかったり… 毎回同じバグ あるし!

    ©MIXI とりまバイブコーディングで リリースしまくってるけど … ユーザーの 要求の対応に とんでもなく 時間やコストが かかったり… 中身がスパゲティで 何が何やら! 21
  7. 品質保証って? ユーザーが満足できる ことを約束すること 作り方ややり方に対して は プロセスのカイゼン というアプローチ がある! 例えば、リリースごとに KPTで振り返

    りを行い改善点を直すなど プロセス品質 (業務品質 ) カイゼン カイゼンを回す ことによって、より良いものを、 より良い状態で出すことができるようになってく る ©MIXI 23
  8. 例えば… カイゼンはPJの課題の数だけあるけど、例えば… TDDでテストを 根付かせる 手作業のテストの自 動化 振り返り→ カイゼンのサ イクルを回す ©MIXI

    仕様駆動開発 で進めてみる デプロイパイプラインの構築 コーティングルールの整 備 レビューの強化 24
  9. 品質保証って? ユーザーが満足できる ことを約束すること 会社に対して は みんなで同じ方向を向けるようにポリ シーを策定したり、 品質文化を根付かせ るアプローチ がある

    企業品質 会社として一定の品質のものを出せること により「 MIXIのものだから安心だし良いもの だ」という企業ブランドとなる ©MIXI 28
  10. 不具合による事故例(Therac-25放射線事故) Therac-25は電子線/X線を使って癌を治療する放射線治療機でした。 ある日放射線技師は治療時に電子線の「E」キーの代わりにX線の「X」キーを押してしまいました。 間違いに気づき技師は8秒以内に「↑」キーを押してフィールドに戻り「E」キーを入力しなおしました。 そして照射したところ事故が発生してしまいました。 1回180ラドの線量のはずが、1万6000~2万5000ラドの線量が照射されてしまったのです。 原因 • 機能の問題 ◦

    Xキーが入力されると Therac-25内部の磁石の位置が設定されるが、動作完了には 8秒かか る ◦ この間に照射モードが変更されると磁石位置を示すフラグが変わっておらず、モード変更のサ ブモジュールが正しく実行されずに過剰照射が発生する • UIの問題 ◦ 入力を受け付けない状態にあるとき、入力を待たせるような機能がないため入力できたと思っ てしまう ◦ 変更時に変更完了といったメッセージが出ないため、変更したと思ってしまう ◦ エラー時に「誤動作 54」と出たが、それが何を意味するエラーかどこにも書かれていなかった ©MIXI 40
  11. 不具合による事故例(アリアン5型ロケット爆発事故) 1996年6月4日、フランス領ギアナの宇宙センターからヨーロッパ最新の無人サテライト発信ロケットが打ち上げられました。しかし、 打ち上げ後約40秒後に爆発してしまいました。 原因 • 固体ブースターの噴射口と主エンジンの噴射口を制御する Inertial Reference Systemに欠陥があり 正確な飛行姿勢が送られなかった。

    ◦ 64bitの浮動小数点数を 16bit符号付整数に変換する際に、 32,768を超えてしまいエラーとなっ た。結果、主エンジンの噴射角度が最大になってしまった。 ◦ 変換失敗のエラー処理をしていなかった • HotStanbyの予備系統もあったが同じシステムが載っていたため、同じくエラーになって同時に落ち た 損失は 80億ドル。 ©MIXI 41
  12. チェッキングは⽤意された道を歩くようなもの この道はちゃんと歩けるな 仕様で決まっている道 岩 岩 仕様で決まっている道 岩 その道に石(バグ)があると 気付くことができる ©MIXI

    仕様で決まっている道 仕様で決まっている道 その道の上でなくても、その道の 近くの石なら気づくことができる可 能性 その道から離れている石には気づ くことができない 49
  13. 余談 : AIを使えば良いのでは、に対する松⾕の考え 仕様通り 実装通り 動作するかの 「チェッキング」 AIを使ったチェックがしやす い場所。 ただし、機械的に確認しづら

    いところの制限はある。 ©MIXI 新しい情報を 発見するための 要求にそったものが 作れているかの 「テスティング」 「妥当性確認」 一般的な実装や設計周りの ミスは AIで対応可能。 ただし、一般的ではないドメ イン知識やコンテキスト漏れ はAIが気づけない 自分たちが作りたいものを 作れているかの確認は人間 の仕事! 75
  14. テストレベル(コンポーネントテスト) コンポーネントテスト (ユニットテスト ) コンポーネント : 独立してテストできる、システムの最小構成単位 出典 : ISTQB

    Glossary, V4.6.0 hoge(){ … … … … … } ©MIXI スタブ/ モック コンポーネントを単独でテストすることに 焦点を当てる。(いわゆるユニットテスト) 他のコンポーネントを呼び出すところは スタブなどを利用する。 主にロジックについてテストする。 83
  15. テストレベル(システム統合テスト) システム統合テスト テスト対象システ ム ©MIXI コン ポーネ ント コン ポーネ

    ント コン ポーネ ント コン ポーネ ント 他システム システム統合テストは、テスト対象のシ ステムと他のシステムや外部サービス とのインターフェイスにフォーカス しテス トをする。 (例えば管理システムと連携など) 86
  16. テストレベル(受け⼊れテスト) 受け入れテスト システム ©MIXI コン ポーネ ント コン ポーネ ント

    コン ポーネ ント コン ポーネ ント システムがユーザーのニーズを満たして いるかにフォーカスする。妥当性確認。 87
  17. 例えば… システム 入力データを送 るだけ Backend コンポーネント Front Frontも通したシス テムテスト で全パ

    ターンをチェックす るのに3日はかかり ます ここですごいパターン分 けのロジックがある 受け取ったデー タを整形して表 示 ©MIXI 91
  18. 全てを「システムテスト」で確認でいい? 例えばこんなテストのアプローチもできそう コンポーネントテスト データ送信のテスト目的 であ れば決められたフォーマットで データが送られているかテスト で良さそう Front コンポーネントテスト

    Backend ロジックを確認したいとい うテスト目的 であればコン ポーネントテストでよさそう コンポーネント ここですごいパターン分 けのロジックがある 表示を確認するテスト 目的であれば、データ を入れて見て表示確認 で良さそう コンポーネントテスト ©MIXI 92
  19. 余談 : AIを使えば良いのでは、に対する松⾕の考え ユニットテスト 結合テスト システムテスト システム統合テスト コードベースでのテストは AIが 強い。

    ただし AIが書いたテスト群が 「妥当なテスト」であるかのレ ビュー、判断は必要 実際にシステムを動かすテス トは、AIがどこまで手を伸ば せるかでコストが変わる。 AIでシステムテストすべきか 下のレイヤーで担保すべきか 考えること (例 : Bluetoothでロボットの初 回セットアップと動作確認 ) ©MIXI 受け入れテスト 意図したものが意図した通り に出来上がっているかの受け 入れは人間の仕事 96
  20. テスト技法 テスト技法 同値分割法 境界値分析 デシジョンテーブル テスト 組み合わせテスト 状態遷移テスト ユースケーステスト テストはなんでもかんでもテストしまくれば

    いいというわけではありません。 時間とお金の都合を考えて、 QCDF(Quality, Cost, Deliver,Feature) のバランスが取れたテストを行う 必要が あります。 そこでテスト技法です。 テスト技法は、比較的少ないながらも十 分なテストケースのセットを開発、つまり 効率的なテストを作成 する方法です。 今回の講義内容には入ってません ©MIXI ※ブラックボックステストの技法 100
  21. 同値分割法 ある特定のパーティションすべての要素がテスト対象によって同等に処理さ れることを想定して、データをパーティションに分割する。各パーティションに 対して1つの値をテストする。 出典: ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版

    Version4.0.J02 (例)1けたの正の整数2個を足し算するプログラム ? それぞれ「1」から「9」までの整数が入 力できるのであれば、「 1+1」から 「9+9」までの81通りのテストが必要 か? ©MIXI クリア 計算 「1けたの正の整数」以外の 値も入力できてしまうので は? 104
  22. 同値分割の背景にある考え⽅ 同じ処理がされるはずの パーティション(グループ) 2 1 3 6 7 9 ©MIXI

    同じパーティションの他の数字でも 同じ欠陥が見つかるはず 5 4 8 “3”で欠陥が見つかった 同値パーティション (同じ処理がされるであろうグループ)か らデータを一つ選んで問題があった場合、この問題は同じ パーティションの他のデータでも発生するはずだ、というも の 105
  23. 同値分割法 • パーティションが識別できるのは入力だけではない。 – 出力、構成アイテム、内部値、時間関連の値、インターフェースパラメー ターなど (例) 2個の入力をともに「3」とした場合 3+3=6 表示位置が

    ずれるかも 1桁のときは「2桁めに0」が表 示されてしまうかも 答え(出力)は6 2個の入力をともに「5」とした場合 5 + 5 = 10 答えが1桁の場合と2桁の場合で 別々のパーティションとするなど。 答え(出力)は10 ©MIXI 108
  24. 境界値分析 同値パーティションの境界を確認することに基づいた技法で、パーティションの最小値 および最大値を選んでテストする。 出典: ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version4.0.J02

    無効パーティション 有効パーティション 01 無効パーティションの最大値 有効パーティションの最小値 ©MIXI 無効パーティション 9 10 無効パーティションの最小値 有効パーティションの最大値 112
  25. 境界値分析 • 境界に対する記述ミスや解釈ミスに起因する欠陥をピンポイントで狙う。 例)ソースコードでの不等号の実装ミス(「>」と「>=」など) 例)仕様における境界に関する曖昧な記述 システム稼働時間 8:00~20:00 8:00、20:00は稼 システム停止時間 0:00~8:00、20:00~24:00

    働?停止? 例)アリアン5号のようなオーバーフロー • 狙う場所の例 ◦ 入力値の下限-1、下限、上限、上限+1 ◦ 配列の最大長、最大長+1 ◦ 条件式(等式・不等式)で指定された値、およびその前後の値 ©MIXI 113
  26. 境界値分析 • 数値の範囲以外にも適用できる。 例)数値属性を持つ非数値変数(A3、B5といった用紙サイズなど) • ループ(ユースケース内のループを含む) • 格納されているデータ構造 例: その変数のメモリ確保の最大。最大値で問

    • 物理オブジェクト(メモリを含む) 題がないか、最大値を超えた場合の処理等。 • 時間により判定される活動負荷の耐久性 例: この製品は60時間稼働できる。 60時間確かに稼働できるか、超えた場合は危 険にならないか等耐久性の確認 • 非機能欠陥を発見する。 例)負荷の耐久性 • システムは10,000人の同時ユーザーをサポートする。 ©MIXI 114
  27. 境界値分析 (2値BVA) • 2値BVAは、その境界値と、隣接するパーティションの一番近い値を選ぶ方 法 • カバレッジ (%) ◦ 通過した境界値

    / 識別したすべての境界値 * 100 無効パーティション 01 有効パーティション 無効パーティション 9 10 この例では、2値BVAの場合、境界値”1”と隣り合ったパーティションの最も近い境界値 ”0”、境界値”9”と隣り合った パーティションの最も近い境界値 ”10”の4つが境界値となる。 カバレッジは、 0と1の2つだけ確認したとき、識別したすべての境界値は 4つのため、以下となる。 2 / 4 * 100 = 50.0 = 50% ©MIXI 115
  28. 境界値分析 (3値BVA) • 3値BVAは、その境界値と、両方の隣接値を選ぶ方法 • カバレッジ (%) ◦ 通過した境界値 /

    識別したすべての境界値 * 100 無効パーティション 012 有効パーティション 無効パーティション 8 9 10 この例では、3値BVAの場合、境界値”1”と隣り合った値 ”0”と”2”、境界値”9”と隣り合った値 ”8”と”10”の計9つの値を 確認する。 カバレッジは、 0と1の2つだけ確認したとき、識別したすべての境界値は 9つのため、以下となる。 2 / 9 * 100 = 22.22… = 22.2% ©MIXI 116
  29. 3値BVAは2値BVAで⾒逃す問題を拾える可能性 例えば、(age >= 20 )と書く所を (age == 20) と書いてし まったとしましょう。

    2値BVAの場合(age=19, age=20) 期待結果はage=19の時False, age=20の時はTrueで す。 (age >= 20)でも(age == 20) でも、どちらでも期待結果 通りになりテストはPassします。 3値BVAの場合(age=19, age=20, age=21) (age == 20) としてしまっていた場合、age=21が期待結 果はTrueのはずなのにFalseが返ってくるためテストで 問題を発見できます。 実際にどこまでテストするかはプロダクトに応じて考えま しょう。 ©MIXI 出典 : 【連載】なにそれ?あなたの知らないテストの言葉(第 2回): ミューテーションテスト(Mutation testing) 117
  30. 演習 : 境界値分析 (時間5分) • 以下のコードのテストを考えましょう。 ◦ short int型(16bit符号付き)の引数aがある。 ◦

    モジュール内にはif (a<0) と if (7<a)という 2個の条件文がある。 • 同値パーティションを挙げましょう。 • 各同値パーティションの境界値を挙げましょう。 ©MIXI 120
  31. 演習の解答例 : 境界値分析 1. 同値パーティションは以下の5個 • -32769以下 • -32768以上、-1以下 •

    0以上、7以下 • 8以上、32767以下 • 32768以上 2. 境界値は以下の8個 • -32769、-32768、-1、0、7、8、32767、32768 ©MIXI 122
  32. デシジョンテーブルテスト • ロジックを条件と動作に分けて、マトリクスで表現した表を デシジョンテーブル と呼 び、デシジョンテーブルをテスト設計に使用するテスト技法を デシジョンテーブル テストと呼ぶ。 例: 「満30歳以上」「年間

    50万円以上購入」「指定地域在住」の会員は「特別会員」になる 条件 動作 ©MIXI ルール 1 2 3 4 5 6 7 8 満30才以上 T T T T F F F F 年間50万円以 上購入 T T F F T T F F 指定地域在住 T F T F T F T F 特別会員 X - - - - - - - 124
  33. デシジョンテーブルの書き⽅ 例: ある映画館の座席予約システムがあります。 この映画館では水曜日は20%割引です。 また全曜日通して、 22時以降は10%割引です。 割引が重なった場合は割引率が高い方が適用されます。 1 2 3

    4 水曜日 時間 >= 22時 「~だったら」という 条件の部分! ©MIXI 条件を抽出して記載する。 例の場合、「曜日 (水曜か否か)」と「時間(22時以上か否か)」が条件であるこ とがわかる。 127
  34. デシジョンテーブルの書き⽅ 1 2 3 4 水曜日 Y Y N N

    時間 >= 22時 Y N Y N 機械的に YとNを 並べる! 20%割引 10% 割引 割引なし 条件の全組み合わせを記入する。 成り立つ場合はY(またはT)、成り立たない場合はN(またはF)。 ©MIXI 129
  35. デシジョンテーブルの書き⽅ 1 2 3 4 水曜日 Y Y N N

    時間 >= 22時 Y N Y N 20%割引 X X - - 10% 割引 - - X - 割引なし - - - X 条件を見ながら考え て埋める必要がある 条件に対する結果を記入する。 当てはまる項目には「X」、当てはまらない項目には「-」を記載する。 ©MIXI 131
  36. テストケースの書き⽅ ©MIXI 1 2 3 4 水曜日 Y Y N

    N 時間 >= 22時 Y N Y N 20%割引 X X - - 10% 割引 - - X - 割引なし - - - X デシジョンテーブルの 1列 が、それぞれテスト項目 となる。 条件はテストケースの 「入力」に、動作はテスト ケースの「期待結果」とな る。 132
  37. デシジョンテーブルの最⼩化 水曜日だった場合 時間は動作に 影響しない 1 2 3 4 水曜日 Y

    Y N N 時間 >= 22時 Y N Y N 20%割引 X X - - 10% 割引 - - X - 割引なし - - - X 条件部分に出てくる「-」は任意の 意味。 (任意とは、YでもNでも動作は変わら ないということ。) ©MIXI 最小化 同じ動作になる共通条件を持つルールはま とめられる可能性がある。 1 2 3 水曜日 Y N N 時間 >= 22時 - Y N 20%割引 X - - 10% 割引 - X - 割引なし - - X 133
  38. デシジョンテーブルの最⼩化 満30歳以上で 年間50万円以 上購入した指定 地域在住の会員 は、特別会員に なる 1 2 3

    4 5 6 8 [条件] 満30歳以上 Y Y Y Y N N N N 年間50万円以上購入 Y Y N N Y Y N N 指定地域在住 Y N Y N Y N Y N X - - - - - - - [期待結果] 特別会員 満30歳以上でも 年間50万円購入してなければ 指定地域在住に動作が左右されない 満30歳未満なら 他の条件に動作が 左右されない 1 ※注意事項 条件の処理順が条件欄の記 載順と同一であること。 不明の場合は単純に最小化 できない。 ©MIXI 7 2 3 4 [条件] 満30歳以上 Y Y Y N 年間50万円以上購入 Y Y N - 指定地域在住 Y N - - X - - - 当初3・4 → 最小化後3 当初5・6・7・8→ 最小化後4 [期待結果] 特別会員 134
  39. 演習 : デシジョンテーブル (時間10分) • 「うるう年判定プログラム」の仕様は以下の通りである。 1. 西暦年数が4で割り切れる年は、うるう年である。 2. 西暦年数が4で割り切れる年のうち、100で割り切れる年の場合は、うるう年で

    はない(平年である)。 3. 2.のケースであっても、400で割り切れる年の場合はうるう年とする。 1. 2. ©MIXI 上記の仕様について、デシジョンテーブルを作成しましょう。 ①で作成したデシジョンテーブルの各規則(ルール)に対して、テスト実行時に用 いる具体的な入力値、期待結果を列挙しましょう。 137
  40. 演習解答例 : デシジョンテーブル • 全ての組合せを作成したのち、あり得ない組合せを削除する。 1 2 3 4 5

    6 7 8 4で割り切れる Y Y Y Y N N N N 100で割り切れる Y Y N N Y Y N N 400で割り切れる Y N Y N Y N Y N うるう年 X - X - 平年 - X - X ありえない組合せを削除する ©MIXI 139
  41. 演習解答例 : デシジョンテーブル 1 デシジョンテーブル ©MIXI 1 2 3 4

    4で割り切れる Y Y Y N 100で割り切れる Y Y N N 400で割り切れる Y N N N うるう年 X - X - 平年 - X - X 140
  42. 演習解答例 : デシジョンテーブル 2 デシジョンテーブルから作成されるテストケース ©MIXI No 入力値 期待結果 説明

    1 2000 うるう年 4でも、100でも、400でも割り切れる 2 2100 平年 4でも、100でも割り切れるが、400で割り切れな い 3 2020 うるう年 4で割り切れるが、100と400では割り切れない 4 2019 平年 4でも、100でも、400でも割り切れない 141
  43. 演習解答例 : デシジョンテーブル • うるう年は4個の規則(ルール)で判定される。 N 平年 ③ ④ 4で

    割り切れる N Y うるう年 ② 100で 割り切れる N Y 400で 割り切れる Y ©MIXI 平年 うるう年 ① 143
  44. こんなときどうテストをしますか?パート2 特定のモードでa⚪ payの時だけ支払いができない本番障害が発生! どうやら内部の 実装は複雑になっていそうだ。支払い周りをもう一度がっつりテストをしないといけなさそ うだ。 あなたはどのようにテストをしますか? ©MIXI 支払い手段 支払期間

    モード(状態) OS クレジットカード 月額払い モードA Android最低バージョン ド⚪モ払い 年払い モードB Android最新バージョン ソフ⚪バンク簡単決 済 モードC iOS最低バージョン a⚪ pay モードD iOS最新バージョン 147
  45. ペアワイズ法を使うと 192パターンあったテストがなんと 18パターンに !! 頭の装備 体の装備 ネックレス ブラウザ 帽子A 体A

    ネックレスA Chrome 帽子B 体B ネックレスB safari 帽子C 体C ネックレスC Firefox ネックレスD Edge 帽子D ©MIXI 150
  46. ペアワイズ法を使うと 128パターンあったテストがなんと 17パターンに !! 支払い手段 支払期 間 モード(状態) OS クレジットカード

    月額払 い モードA Android最低バージョン ド⚪モ払い 年払い モードB Android最新バージョン ソフ⚪バンク簡単決済 モードC iOS最低バージョン a⚪ pay モードD iOS最新バージョン ©MIXI 151
  47. 組み合わせのバグは、2つの要素までで多くを占める 以下の研究論文では、組み合わせのバグは 2つの要素の組み合わせまでで多くの割 合を占めている ことを明らかにしました。 “software failures in a variety

    of domains were caused by combinations of relatively few conditions.” "Software Fault Interactions and Implications for Software Testing," R. D. Kuhn et al, IEEE Transactions on Software Engineering, 30(6), 2004 要因数 医療用組み込み機器 ブラウザ Webサーバー データベース 1 66 29 42 68 2 31 3 2 19 19 5 4 1 2 7 2 97% 47 5 2 6 1 ©MIXI 76% 28 70% 25 93% ※論文内では累積 で表記 154
  48. テストケースでFailed(NG)が出た場合の意味 #6のみFailedに なった場合 仮にテストケース 6だけFailed(NG)になったとしま しょう。このことから以下の組み合わせのいずれ かに問題があることが言えます。 ・IHコンロできれば x コンロできれば

    ・IHコンロできれば x システムキッチン必須 ・コンロできれば x システムキッチン必須 ・IHコンロできれば x コンロできれば x システム キッチン必須 この組み合わせにフォーカスして再度テストをし て問題領域を狭めていきましょう。 ©MIXI 163
  49. どんなときに使えるの? • 何かしら変わるもの (コレからアレになったらどうなるんだろう?というテストをし たい時) ◦ 例 ▪ ▪ 同じモノだけど中の状態が変わっていくとき

    • ログイン状態/非ログイン状態 • エアコン (冷房/暖房/自動モードなど) • (Therac-25の問題ももしかしたら拾えるのかも) 画面遷移などで、データが保持される/クリアされるか... etc • ©MIXI 氏名・住所入力画面→購入確認画面→購入完了画面 171
  50. 状態表 状態と入力の関係を示し、有効&無効な可能性のある遷移を明確にした表。 仕様の抜け漏れを発見することができます。 状態 イベント イベント / 状態 計測準備中 計測中

    一時停止中 スタートボタン押下 計測中 一時停止中 計測中 リセットボタン押下 N/A N/A 計測準備中 上の状態で 左のイベントがあったときに 遷移する状態 ©MIXI 無効な遷移 (Not Applicable) 状態遷移図には現れない! 仕様でここの考慮漏れなどがありがち! 173
  51. 0スイッチカバレッジの場合のテストケース • 計測準備中→計測中 • 計測準備中→計測準備中 (状態表でしかわからない) • 計測中→一時停止中 • 計測中→計測中

    (状態表でしかわからない) • 一時停止中→計測中 • 一時停止中→計測準備中 # 遷移前の状態 イベント 期待結果 1 計測準備中 スタートボタン押下 計測中になること 2 計測準備中 リセットボタン押下 計測準備中になること 3 計測中 スタートボタン押下 一時停止中になること 4 計測中 リセットボタン押下 計測中になること 5 一時停止中 スタートボタン押下 計測中になること 6©MIXI 一時停止中 リセットボタン押下 計測準備中になること 175
  52. 1スイッチカバレッジの場合のテストケース ©MIXI • 計測準備中→計測中→一時停止中 # 遷移前の状態 イベント 期待結果 • 計測準備中→計測中→計測中

    1 計測準備中 スタート→スタート 一時停止中になること • 計測準備中→計測準備中→計測中 2 計測準備中 スタート→リセット 計測中になること • 計測準備中→計測準備中→計測準備中 計測中→一時停止中→計測中 3 計測準備中 リセット→スタート 計測中になること • • 計測中→一時停止中→計測準備中 4 計測準備中 リセット→リセット 計測準備中になること • 計測中→計測中→一時停止中 5 計測中 スタート→スタート 計測中になること • 計測中→計測中→計測中 6 計測中 スタート→リセット 計測準備中になること • 一時停止中→計測中→一時停止中 計測中 リセット→スタート 一時停止中になること • 一時停止中→計測中→計測中 7 一時停止中→計測準備中→計測中 8 計測中 リセット→リセット 計測中になること • • 一時停止中→計測準備中→計測準備中 9 一時停止中 スタート→スタート 一時停止中になること 10 一時停止中 スタート→リセット 計測中になること 11 一時停止中 リセット→スタート 計測中になること 12 一時停止中 リセット→リセット 計測準備中になること 176
  53. 状態遷移テストのメリット/デメリット • メリット ◦ 期待通りに遷移できない欠陥を見つけられる ◦ 状態遷移図とあわせて状態表を使うことで、テストの漏れ・抜け防止とともに、 仕様や設計の誤りを見つけられる • ©MIXI

    デメリット ◦ 状態をちゃんと設定できない(曖昧)だと、結局抜け漏れが発生する ◦ 状態や遷移の数が多いと状態遷移図や状態表が複雑になる 180
  54. 演習:状態遷移図の作成 (時間があったらやってみて) • 自動販売機 ◦ 100円硬貨のみ受け付ける。 ◦ ジュースは100円と150円の2種類のみである。 (ジュースボタンが2個ある。) ◦

    ジュースボタンを押して購入後に残高があれば、おつりとして商品と同時に返却さ れる。 ◦ コイン返却ボタンがある。 ◦ その他の仕様(ジュースの在庫、ジュースの温度、自動販売機内のおつりの有 無、取り出し口の商品詰まり、偽造コインなど)は考慮しない。 • 投入済金額(0円、100円、200円)を状態として状態遷移図と状態表を作成してみてく ださい ©MIXI 183
  55. 演習の解答例:状態遷移テスト 2. 状態表 状態 0円 100円 200円 100円投入 100円 200円

    ??? コイン返却ボタン押下 N/A 0円 0円 100円ジュースボタン押下 N/A 0円 0円 150円ジュースボタン押下 N/A N/A 0円 イベント ©MIXI 186
  56. おすすめ書籍 ソフトウェアテスト教科書 JSTQB Foundation 第5版 シラバス 2023対応 テストの考え方について、全体的に学ぶことができます。 JSTQB(ISTQB)という国際的なテスト技術者の資 格試験のための本でもあります。

    ソフトウェアテスト技法練習帳 ~知識を経験に変える 40問~ 状態遷移テストなどのテスト技法を、例題を使って手を動かしながら学ぶことができます。 テスターちゃん (2巻のほうがテストの考え方がたくさん載っている ) 手前味噌ながら …。ソフトウェアテストの初学者に向けて書いた「マンガでわかる」系の本です。 1巻はテス トエンジニアの業務系 (バグ票の書き方など )について、2巻がテストの考え方が多く載っています。社内に 本が置いてあります。 ©MIXI 188