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

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

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

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

Avatar for MIXI ENGINEERS

MIXI ENGINEERS PRO

May 13, 2025
Tweet

Video

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

  1. ©MIXI 2 ⾃⼰紹介 名前 : 松谷峰生 (まつやみねお) 部署 : 開発本部

    / Romi事業部 (兼務) 基本はずーっとRomiをやっています。 モケイ部に入っています。 社外活動 • JaSST九州(ソフトウェアテストシンポジウム)実行委員 長 • ASTER(ソフトウェアテスト技術振興協会)教育事業メ ンバー • AIプロダクト品質保証ガイドラインVUI領域執筆(だい ぶ昔だ…)
  2. ©MIXI 3 ⾃⼰紹介 • マンガ家! ◦ 新人さんからわかるソフトウェアテスト解説マンガ 「テスターちゃん」 ◦ (新連載!)なにそれ?あなたの知らないテストの

    言葉 • ペットはフクロモモンガ • ゴールデンウィーク中は横シューティングを作ってまし た。完成させてストアリリースしたいなぁ
  3. ©MIXI 4 ⽬次 • QA(品質保証)って? • ソフトウェアテスト入門 ◦ テストの重要性 ◦

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

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

    の質、情報の質、工程の質、部門の質、 人の質、システムの質、会社の質など、 これら全てを含めて捉える 。品質管理 は「広義の質」について管理することを 基本姿勢とする プロダクトの質を「狭義の質」、 それを取り巻く全体を含めた質 を「広義の質」と定義 出典: ソフトウェア品質知識体系ガイド( SQuBOK Guide V2)
  6. ©MIXI 14 品質の定義の変遷 保田勝通 (やすだかつゆき) 品質とは、 ユーザーにとっての価値 であ る 近代的な品質管理における品

    質の定義。品質はユーザーの 満足度である 出典: ソフトウェア品質保証の考え方と実際, 日科技連出版, 保田勝通著
  7. ©MIXI 19 品質保証って? チームがイマイチだと… 毎回ボロボロのプ ロダクトが出来上が り、 ひたすらテストで打 ち返して 時間もコストも

    かかったり… ユーザーの 要求の対応に とんでもなく 時間やコストが かかったり… 次のリリースが一生来ない ! 毎回同じバグ あるし!
  8. ©MIXI 21 品質保証って? ユーザーが満足できる ことを約束すること チームに対して は プロセスのカイゼン というアプローチ がある!

    カイゼンを回す ことによって、より良いものを、 より良い状態で出すことができるようになってく る カイゼン プロセス品質 (業務品質 )
  9. ©MIXI 25 品質保証って? ユーザーが満足できる ことを約束すること 言い換えると … ブランド ⚪⚪社のゲームだから 子どもでも楽しめるは

    ず! xx社のバッグだから 綺麗で丈夫なはず! MIXIのものだから 良い意味で驚かされるは ず! zz社の車だから 安全なはず!
  10. ©MIXI 26 品質保証って? ユーザーが満足できる ことを約束すること 会社に対して は みんなで同じ方向を向けるようにポリ シーを策定したり、 品質文化を根付かせ

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

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

    Systemに欠陥があり 正確な飛行姿勢が送られなかった。 ◦ 64bitの浮動小数点数を16bit符号付整数に変換する際に、 32,768を超えてしまいエラーとなっ た。結果、主エンジンの噴射角度が最大になってしまった。 ◦ 変換失敗のエラー処理をしていなかった • HotStanbyの予備系統もあったが同じシステムが載っていたため、同じくエラーになって同時に落ち た 損失は80億ドル。
  13. ©MIXI 44 仕様書に書かれていること こう動く 正常系の仕様 こう動かない 異常系の仕様 (エラー系など ) 仕様書

    仕様書に「全てのこ と」が書かれている わけじゃない から注 意! これらのことを「仕様通り動くか」を確認するけど …
  14. ©MIXI 52 バグの多くは「忘れもの」 要求 要件 仕様 設計 実装 ・要件定義漏れ ・偉い人との認識齟齬

    ・仕様漏れ ・設計の間違い ・影響箇所の把握漏れ ・PdMとの認識齟齬 ・実装の間違い ・実装の漏れ 自分が想定した 通り動くかの確 認で大丈夫?
  15. ©MIXI 58 仕様通りのチェックに加え、バグの探索をしよう 仕様通り動くかチェッ クしたけど… 本番でバグが出ないか 不安だァァーッ!! 仕様通り動くかは チェックしたけどさぁ もうお分かりだろう!!

    バグを探そうとしていないのである !! 探そうとしていないものが本番で見つかるのは当たり前である!! 仕様通りのチェック + バグの探索の二つが揃って良いテストと なります。
  16. ©MIXI 79 テストレベル(コンポーネントテスト) コンポーネントテスト (ユニットテスト ) hoge(){ … … …

    … … } コンポーネント : 独立してテストできる、システムの最小構成単位 スタブ/ モック コンポーネントを単独でテストすることに 焦点を当てる。(いわゆるユニットテスト) 他のコンポーネントを呼び出すところは スタブなどを利用する。 主にロジックについてテストする。 出典 : ISTQB Glossary, V4.6.0
  17. ©MIXI 84 テストレベル システムテスト システム統合テスト コンポーネント統合テスト(結合テスト) 受け入れテスト コンポーネントテスト(ユニットテスト) 主にロジックのテストが目的 主にコンポーネント間の相互処理のテ

    ストが目的 主にシステムを通しての振る舞い、全 体的な能力のテストが目的 主にシステム間の相互処理のテストが 目的 主にユーザーの要求を満たしているか の確認が目的
  18. ©MIXI 87 例えば… Front Backend 入力データを送 るだけ 受け取ったデー タを表示するだ け

    コンポーネント ここですごいパターン分 けのロジックがある システム システムテスト で 全パターンをチェッ クするのに3日は かかります
  19. ©MIXI 88 全てを「システムテスト」で確認でいい? Front Backend データ送信のテスト目的 であ れば決められたフォーマットで データが送られているかテスト で良さそう

    表示を確認するテスト 目的であれば、データ を入れて見て表示確認 で良さそう コンポーネント ここですごいパターン分 けのロジックがある 例えばこんなテストのアプローチもできそう ロジックを確認したいとい うテスト目的 であればコン ポーネントテストでよさそう コンポーネントテスト コンポーネントテスト コンポーネントテスト
  20. ©MIXI 90 例えばこんなテストのアプローチもできそう Front Backend コンポーネント ここですごいパターン分 けのロジックがある システム 全体の振る舞いを確認する

    テスト目的やターンアラウン ドタイムを知る目的 ならシス テム全体を通したテスト システムを通して「何かバグ がないか」と探索するテスト 目的ならシステム全体を通し たテスト
  21. ©MIXI 95 テスト技法 同値分割法 境界値分析 デシジョンテーブル テスト 状態遷移テスト ユースケーステスト 組み合わせテスト

    テスト技法 テストはなんでもかんでもテストしまくれば いいというわけではありません。 時間とお金の都合を考えて、 QCDF(Fは 機能やフィーチャー )のバランスが取れた 情報を提供する 必要があります。 そこでテスト技法です。 テスト技法は、比較的少ないながらも十 分なテストケースのセットを開発、つまり 効率的なテストを作成 する方法です。 ※ブラックボックステストの技法 今回の講義内容には入ってません
  22. ©MIXI 98 同値分割法 計算 クリア (例)1けたの正の整数2個を足し算するプログラム ? それぞれ「1」から「9」までの整数が入 力できるのであれば、「 1+1」から

    「9+9」までの81通りのテストが必要 か? 「1けたの正の整数」以外の 値も入力できてしまうので は? ある特定のパーティションすべての要素がテスト対象によって同等に処理さ れることを想定して、データをパーティションに分割する。各パーティションに 対して1つの値をテストする。 出典: ISTQBテスト技術者資格制度  Foundation Level シラバス 日本語版 Version4.0.J02
  23. ©MIXI 99 同値分割の背景にある考え⽅ 1 同じ処理がされるはずの パーティション(グループ) 2 3 4 5

    6 7 8 9 “3”で欠陥が見つかった 同じパーティションの他の数字でも 同じ欠陥が見つかるはず 同値パーティション(同じ処理がされるであろうグループ)か らデータを一つ選んで問題があった場合、この問題は同じ パーティションの他のデータでも発生するはずだ、というも の
  24. ©MIXI 101 同値分割法 • 各パーティションに対して1つの値をテストする。 代表値:5 代表値:15 代表値:-5 無駄なテストをなくし、テスト回数を削減できる。 9

    有効パーティション (システムに受け入れられる値) 無効パーティション (システムに拒否される値) 無効パーティション (システムに拒否される値) 1 10 0
  25. ©MIXI 102 同値分割法 • パーティションが識別できるのは入力だけではない。 – 出力、構成アイテム、内部値、時間関連の値、インターフェースパラメー ターなど (例) 2個の入力をともに「3」とした場合

    3 + 3 = 6 答え(出力)は6 答えが1桁の場合と2桁の場合で 別々のパーティションとするなど。 2個の入力をともに「5」とした場合 5 + 5 = 10 答え(出力)は10 1桁のときは「2桁めに0」が表 示されてしまうかも 表示位置が ずれるかも
  26. ©MIXI 103 同値分割法 • パーティションは、連続/離散、順序性あり/なし、有限/無限のいずれでもよ い 青森県 北海道 京都府 ニュー

    ヨーク州 ワシントン州 イリノイ州 離散的なパーティション例 (地域など) 連続的なパーティション例 (数値など) 0.0℃ <0.0℃ 60.0℃ >60.0℃
  27. ©MIXI 105 同値分割法 • 複数のパーティションセットがある場合、各パーティションを少なくとも1回は通るような最 も単純なテストケースの設計をイーチチョイスカバレッジ という – 網羅ではなく、 1回は各パーティションを通るデータの選び方

    18才未満 18≦x<65 65才以上 年齢 1年未満 1≦n<5 5≦n<10 10年以上 契約年数 一般会員 上級会員 会員種別 テストケース1 テストケース2 テストケース3 テストケース4 例 : 「年齢」「契約年数」「会員種別」という項目がある場合
  28. ©MIXI 109 境界値分析 • 数値の範囲以外にも適用できる。 例)数値属性を持つ非数値変数(A3、B5といった用紙サイズなど) • ループ(ユースケース内のループを含む) • 格納されているデータ構造

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

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

    通過した境界値 / 識別したすべての境界値 * 100 9 有効パーティション 無効パーティション 無効パーティション 1 10 0 この例では、3値BVAの場合、境界値”1”と隣り合った値”0”と”2”、境界値”9”と隣り合った値”8”と”10”の計9つの値を 確認する。 カバレッジは、0と1の2つだけ確認したとき、識別したすべての境界値は 9つのため、以下となる。 2 / 9 * 100 = 22.22… = 22.2% 2 8
  31. ©MIXI 112 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が返ってくるためテストで 問題を発見できます。 実際にどこまでテストするかはプロダクトに応じて考えま しょう。
  32. ©MIXI 115 演習 : 境界値分析 (時間5分 : 休憩含む) • 以下のコードのテストを考えましょう。

    ◦ short int型(16bit符号付き)の引数aがある。 ◦ モジュール内にはif (a<0) と if (7<a)という 2個の条件文がある。 • 同値パーティションを挙げましょう。 • 各同値パーティションの境界値を挙げましょう。
  33. ©MIXI 117 演習の解答例 : 境界値分析 1. 同値パーティションは以下の5個 • -32769以下 •

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

    例: 「満30歳以上」「年間50万円以上購入」「指定地域在住」の会員は「特別会員」になる ルール 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 - - - - - - -
  35. ©MIXI 122 デシジョンテーブルの書き⽅ 例: ある映画館の座席予約システムがあります。 この映画館では水曜日は20%割引です。 また全曜日通して、 22時以降は10%割引です。 割引が重なった場合は割引率が高い方が適用されます。 1

    2 3 4 水曜日 時間 >= 22時 「~だったら」という 条件の部分! 条件を抽出して記載する。 例の場合、「曜日(水曜か否か)」と「時間(22時以上か否か)」が条件であるこ とがわかる。
  36. ©MIXI 123 デシジョンテーブルの書き⽅ 例: ある映画館の座席予約システムがあります。 この映画館では水曜日は20%割引です。 また全曜日通して、22時以降は10%割引です。 割引が重なった場合は割引率が高い方が適用されます。 1 2

    3 4 水曜日 時間 >= 22時 20%割引 10% 割引 割引なし 動作を記載する。 仕様には明記されていない動作(いずれにも当てはまら ない)もあるので注意! 「どうなる」という 結果の部分!
  37. ©MIXI 124 デシジョンテーブルの書き⽅ 1 2 3 4 水曜日 Y Y

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

    8 条件 〇〇〇 Y Y Y Y N N N N 条件 △△△ Y Y N N Y Y N N 条件 □□□ Y N Y N Y N Y N 動作 xxx 動作 yyy 動作 zzz デシジョンテーブルは抜け漏れなくテストするための技法! 一列ずつアレコレ考えないでYとNは機械的に並べてしまおう。 条件が増えるごとに 1,2,4,8,16…と倍々に増やしていけばいい。 Yを4つ Nを4つ Yを2つ Nを2つ Yを1つ Nを1つ
  39. ©MIXI 126 デシジョンテーブルの書き⽅ 1 2 3 4 水曜日 Y Y

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

    N N 時間 >= 22時 Y N Y N 20%割引 X X - - 10% 割引 - - X - 割引なし - - - X デシジョンテーブルの 1列 が、それぞれテスト項目 となる。 条件はテストケースの 「入力」に、動作はテスト ケースの「期待結果」とな る。
  41. ©MIXI 128 デシジョンテーブルの最⼩化 最小化 同じ動作になる共通条件を持つルールはま とめられる可能性がある。 1 2 3 4

    水曜日 Y Y N N 時間 >= 22時 Y N Y N 20%割引 X X - - 10% 割引 - - X - 割引なし - - - X 1 2 3 水曜日 Y N N 時間 >= 22時 - Y N 20%割引 X - - 10% 割引 - X - 割引なし - - X 水曜日だった場合 時間は動作に 影響しない 条件部分に出てくる「-」は任意の 意味。 (任意とは、YでもNでも動作は変わら ないということ。)
  42. ©MIXI 129 デシジョンテーブルの最⼩化 1 2 3 4 5 6 7

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

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

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

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

    割り切れる 400で 割り切れる 平年 うるう年 N Y Y N うるう年 平年 N Y ④ ③ ② ①
  48. ©MIXI 141 こんなときどうテストをしますか? 頭4通り x 体3通り x ネックレス 4通り x

    ブラウザ4通り =                   4 x 3 x 4 x 4 = 192パターン!!
  49. ©MIXI 142 こんなときどうテストをしますか?パート2 特定のモードでa⚪ payの時だけ支払いができない本番障害が発生! どうやら内部の 実装は複雑になっていそうだ。支払い周りをもう一度がっつりテストをしないといけなさそ うだ。 あなたはどのようにテストをしますか? 支払い手段 支払期間

    モード(状態) OS クレジットカード 月額払い モードA Android最低バージョン ド⚪モ払い 年払い モードB Android最新バージョン ソフ⚪バンク簡単決 済 モードC iOS最低バージョン a⚪ pay モードD iOS最新バージョン
  50. ©MIXI 143 こんなときどうテストをしますか? 支払い手段 4通り x 支払い期間 2通り x モード4通り

    x OS4通り =                       4 x 2 x 4 x 4= 128パターン!!
  51. ©MIXI 145 ペアワイズ法を使うと 192パターンあったテストがなんと 頭の装備 体の装備 ネックレス ブラウザ 帽子A 体A

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

    月額払 い モードA Android最低バージョン ド⚪モ払い 年払い モードB Android最新バージョン ソフ⚪バンク簡単決済 モードC iOS最低バージョン a⚪ pay モードD iOS最新バージョン 17パターンに !!
  53. ©MIXI 149 組み合わせのバグは、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 47 28 25 3 2 19 19 5 4 1 2 7 2 5 2 6 1 97% 76% 70% 93% ※論文内では累積 で表記
  54. ©MIXI 154 ⽤語:各項⽬が「因⼦」、項⽬の各値が「⽔準」 組み合わせテストの話では「因子」「水準」という言葉が絶対に出ます。ややこしいですが覚 えてしまいましょう。 IHコンロ コンロ二口以上 システムキッチン なし なし

    なし できれば できれば できれば 必須 必須 必須 項目にあたる部分が「因子」 パラメーターと呼ぶこともある 値にあたる部分が「水準」 だたの値と呼ぶこともある
  55. ©MIXI 158 テストケースでFailed(NG)が出た場合の意味 仮にテストケース6だけFailed(NG)になったとしま しょう。このことから以下の組み合わせのいずれ かに問題があることが言えます。 ・IHコンロできれば x コンロできれば ・IHコンロできれば

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

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

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

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

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

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

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

    100円投入 100円 200円 ??? コイン返却ボタン押下 N/A 0円 0円 100円ジュースボタン押下 N/A 0円 0円 150円ジュースボタン押下 N/A N/A 0円
  63. ©MIXI 183 おすすめ書籍 ソフトウェアテスト教科書 JSTQB Foundation 第5版 シラバス 2023対応 テストの考え方について、全体的に学ぶことができます。

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