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

明日から使えるテスト技法勉強会_5_状態遷移テスト

 明日から使えるテスト技法勉強会_5_状態遷移テスト

こちらはConnpassで開催した「明日から使えるテスト技法勉強会」シーズン1で使用された資料となります。合計7部ありますので、テスト技法にご興味を持つ方は、ぜひご活用いただければ幸いです。

また、本資料中使用されたツールGIHOZ(ギホーズ)は、各種テスト技法を手軽に利用できるクラウド型ツールです。
GIHOZはアカウント登録のみで、すぐに利用が可能です。高品質なテストを効率よく作成するために、熟練のテストエンジニアが利用しているさまざまなテスト技法を手軽に体感してください。

GIHOZに登録されたテスト技法はすべて無償でご利用いただけます。
詳細はこちらまでご確認ください。👉https://www.veriserve.co.jp/gihoz/

GIHOZ SUPPORT TEAM

September 01, 2022
Tweet

More Decks by GIHOZ SUPPORT TEAM

Other Decks in Education

Transcript

  1. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 名前 ◼ 谷﨑 浩一(たにざき

    こういち) ➢ 所属 ◼ 株式会社ベリサーブ 研究企画開発部 ➢ 経歴 ◼ テスター歴:約14年 ◆ プリンタ、デジカメ、PCアプリ、クラウドサービス ◆ 統合テスト・システムテストのテスト設計・実行・管理 ◼ プロダクトオーナー歴:約5年 ◆ ソフトウェアテストの設計をサポートするツール ◼ 博士(工学) 自己紹介 1
  2. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 GIHOZのコンセプト 4 ➢ 『GIHOZ』は、ベリサーブが開発したテスト技法ツールです ▪アカウント登録のみで、すぐに利用が可能です

    ソフトウェア開発に関わる全ての人の テスト設計の「作業」をゼロにする 手軽にテストケースを 作成・利用 目的に応じて テスト技法を選択 ソフトウェア開発の 効率化に貢献
  3. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 基本的な使い方の流れ 6 ログインする リポジトリを 選ぶ/作る

    テスト技法を選んで テストケースを 作成する/保存する 他のユーザを リポジトリに招待する テストケースを ダウンロードする/ Excel等へコピーする アカウントを 登録する
  4. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 リポジトリを選ぶ/作る 7 ①初期状態では 「MyRepository」のみ 自動で作成されている

    ②「リポジトリ作成」を押す ③アルファベット・数字・アンダーバーで入力 ④説明は任意で入力 ⑤実際の業務で使う場合は、基本的には「非公開」を選択。 「公開」を選ぶと、URLを知っている人は テストケースを閲覧できるようになるので、選ぶときは注意
  5. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ コピー先のリポジトリを選択してコピーを作成できます テストケースを丸ごとコピーする 10 ①行をクリックして選択

    ※CtrlキーやShiftキーを押しながら クリックで複数選択も可能 ②コピーアイコンを クリック ③コピー先のリポジトリを 選択してコピーを作成
  6. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 状態遷移モデル(状態遷移図や状態遷移表)からテストケースを作るテスト技法 ◼ ※2022年4月現在、GIHOZでは状態遷移図からのみテストケースの作成が可能 状態遷移テストとは

    13 S2 ログアウト中 S1 ログイン中 S3 ロック中 E1: ログアウト E2: タイムアウト E3: ログイン E4: ロック時間経過 E5: ロックアウト 状態遷移図の例 状態遷移表の例 (遷移前の状態×遷移後の状態) 遷移後 遷移前 S1 S2 S3 S1 E1+E2 S2 E3 E5 S3 E4
  7. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 状態遷移図の例 14 S2 ログアウト中 S1

    ログイン中 S3 ロック中 E1: ログアウト E2: タイムアウト E3: ログイン E4: ロック時間経過 E5: ロックアウト ※アクションは省略される場合もある 状態 遷移 イベント[/アクション] 【凡例】
  8. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 状態遷移表の例(遷移前状態×イベント) 16 イベント 遷移前状態 E1

    ログアウト E2 タイムアウト E3 ログイン E4 ロック 時間経過 E5 ロックアウト S1 ログイン中 S2 S2 Ignore Ignore Ignore S2 ログアウト中 Ignore Ignore S1 Ignore S3 S3 ロック中 Ignore Ignore Ignore S2 Can’t happen Ignore:イベントが発生しても無視し、他の状態に遷移しないことを示す。 Can’t happen: イベントが発生しないことを示す。
  9. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 状態遷移表の例(遷移前状態×遷移後状態) 17 遷移後状態 遷移前状態 S1

    ログイン中 S2 ログアウト中 S3 ロック中 S1 ログイン中 E1+E2 S2 ログアウト中 E3 E5 S3 ロック中 E4 E1: ログアウト E2: タイムアウト E3: ログイン E4: ロック時間経過 E5:ロックアウト 遷移前状態×遷移後状態で表現することもある。Nスイッチカバレッジ(後述)を計算する場 合は、このマトリクスを行列として行列の積から有限のパスを計算することが可能
  10. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 Nスイッチカバレッジ 18 0スイッチ 中間状態を0個経由する 1スイッチ

    中間状態を1個経由する 2スイッチ 中間状態を2個経由する ある状態 ある状態 ある状態 ある状態 状態 x ある状態 ある状態 状態 x 状態 y ➢ ある状態からある状態に遷移するのに、中間状態をN個経由するようにテストケースを作成する
  11. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ Nスイッチカバレッジでテストケースを作成するのが一般的 ➢ Nスイッチ以外にも様々なカバレッジを考えられる ◼

    状態遷移モデルの代表的な遷移のみを網羅する ◼ 全ての状態に少なくとも1度以上は訪れる(状態は網羅) ◼ 無効遷移を含めた全遷移の網羅 ◼ 不正に遷移しないことを確認する(状態遷移表のIgnore、Can’t happenを確認する) ◼ 状態遷移モデルから特定のパス(シナリオ)を導出する 状態遷移テストにおけるカバレッジ 19 0スイッチカバレッジ100% 対象となる状態遷移モデルにおける0スイッチの パス(経路)を少なくとも1回以上実行している 1スイッチカバレッジ100% 対象となる状態遷移モデルにおける1スイッチの パス(経路)を少なくとも1回以上実行している 2スイッチカバレッジ100% 対象となる状態遷移モデルにおける2スイッチの パス(経路)を少なくとも1回以上実行している 3スイッチカバレッジ100% 対象となる状態遷移モデルにおける3スイッチの パス(経路)を少なくとも1回以上実行している GIHOZは◦が付いている カバレッジをサポート
  12. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ メリット ◼ 仕様を状態遷移モデルで表すことで、テスト対象の状態の遷移が取り得る経路を整理できる ◼

    Nスイッチカバレッジなどの網羅基準を決めれば、テストケースを機械的に導出できる → GIHOZでは状態遷移図からテストケースを自動生成できます! ➢ デメリット ◼ 状態を細かく分けたりスイッチ数を増やすと、経路が多くなり、テストケースの数が爆発的に増える ➢ 使いどころ ◼ テスト対象が複数の状態を持っており、定めたカバレッジに基づいて遷移を一通り確認したい場合 ◆ 画面遷移を一通り確認したい場合にも使える 状態遷移テストのメリット、使いどころ 21
  13. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ バグが見つかるのは遷移したタイミングとは限らない ◼ ある遷移で内部変数の値がおかしくなったとしても、バグとして現れるのは、その内部変数を次に参照したとき →

    これに気付くには、少なくとも1スイッチのテストケースが必要 ➢ Nスイッチカバレッジを網羅したからといって、N-1スイッチカバレッジを網羅できるとは限らない 注意点 23 1スイッチテストケースには、 「状態4→状態3」の遷移 が含まれていない
  14. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 扇風機の仕様 ◼ 停止中に「運転・停止ボタン」を押すと、運転開始します。 ◼

    運転中に「運転・停止ボタン」を押すと、停止します。 ◼ 運転中に、「運転モード切り替えボタン」を押すと、「風量・弱」→「風量・中」→「風量・強」の順で切 り替わっていきます。 ◼ 運転中に、「風量・強」の状態で、「運転モード切り替えボタン」を押すと、「風量・弱」になります。 ◼ 運転を開始する場合は、必ず「風量・弱」の状態で始まります。 ➢ 状態遷移図を作成し、1スイッチのテストケースを作成してください 例題1 26
  15. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 扇風機の仕様 ◼ 停止中に「運転・停止ボタン」を押すと、運転開始します。 ◼

    運転中に「運転・停止ボタン」を押すと、停止します。 ◼ 運転中に、「運転モード切り替えボタン」を押すと、「風量・弱」→「風量・中」→「風量・強」の順で切 り替わっていきます。 ◼ 運転中に、「風量・強」の状態で、「運転モード切り替えボタン」を押すと、「風量・弱」になります。 ◼ 運転を開始する場合は、必ず「風量・弱」の状態で始まります。 ➢ 状態遷移図を作成し、1スイッチのテストケースを作成してください 例題1: 状態遷移図を作る(状態とイベントを識別する) 27 停止中の状態と 運転中の状態がある 運転中には、風量が異なる 3つの状態がある 運転・停止ボタンと運転モード切り替え ボタンの2つのボタンがあり、これらを 押されることがイベントとなる
  16. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 初期データを削除する 例題1: 状態遷移図を作る 28

    ①Ctrl+Aキーで要素を全選択 または、グレー背景の領域でドラッグ アンドドロップして要素を全選択 ②Deleteキーを押して、 選択した要素を削除
  17. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 状態を追加する 例題1: 状態遷移図を作る 29

    ①グレー背景の領域でダブル クリックして新しい状態を追加 ②状態の中の文字列をダブルクリック または、 状態を選択してF2キーで、名前を編集
  18. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 遷移を追加する 例題1: 状態遷移図を作る 30

    ①ある状態から別の状態に 向けてドラッグアンドドロップ ※注:状態の四角形の端の辺り からドラッグアンドドロップする ②矢印の上の文字列をダブルクリック または、矢印を選択してF2キーで、 イベントの名前を編集
  19. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 状態は四角形の真ん中あたりをドラッグアンドドロップすると移動できる ➢ 遷移は矢印を選択して、水色のアイコンをドラッグアンドドロップすると位置を調整できる 例題1:

    状態遷移図を作る 32 ①状態の四角形をドラッグ アンドドロップして移動 ※注:状態名の文字列の辺り をドラッグアンドドロップする ②矢印を選択してから、水色の アイコンをドラッグアンドドロップ して位置調整
  20. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 生成ボタンを押すと、自動で状態遷移表とテストケースを生成できる 例題1: 状態遷移表とテストケースを生成する 36

    ①「状態遷移表とテスト ケースを生成」ボタンを押す ②遷移の漏れがないか確認するために、 状態遷移表(状態×イベント)に 空欄がないか確認すると良い
  21. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 扇風機の仕様 ◼ 停止中に「運転・停止ボタン」を押すと、運転開始します。 ◼

    運転中に「運転・停止ボタン」を押すと、停止します。 ◼ 運転中に、「運転モード切り替えボタン」を押すと、「風量・弱」→「風量・中」→「風量・強」の順で切 り替わっていきます。 ◼ 運転中に、「風量・強」の状態で、「運転モード切り替えボタン」を押すと、「風量・弱」になります。 ◼ 運転中に、「首振りボタン」を押すと、首を振り始めます。 ◼ 首振りをしている最中に、「首振りボタン」を押すと首振りを終了します。 ◼ 運転を開始する場合は、必ず「風量・弱」で首を振っていない状態で始まります。 ➢ 状態遷移図を作成し、1スイッチのテストケースを作成してください 例題2 ※赤字が例題1からの変更・追加箇所 40
  22. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 扇風機の仕様 ◼ 停止中に「運転・停止ボタン」を押すと、運転開始します。 ◼

    運転中に「運転・停止ボタン」を押すと、停止します。 ◼ 運転中に、「運転モード切り替えボタン」を押すと、「風量・弱」→「風量・中」→「風量・強」の順で切 り替わっていきます。 ◼ 運転中に、「風量・強」の状態で、「運転モード切り替えボタン」を押すと、「風量・弱」になります。 ◼ 運転中に、「首振りボタン」を押すと、首を振り始めます。 ◼ 首振りをしている最中に、「首振りボタン」を押すと首振りを終了します。 ◼ 運転を開始する場合は、必ず「風量・弱」で首を振っていない状態で始まります。 ➢ 状態遷移図を作成し、1スイッチのテストケースを作成してください 例題2: 状態遷移図を作る(状態とイベントを識別する) 41 「首を振っている」という 状態が増えた
  23. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 扇風機の仕様 ◼ 停止中に「運転・停止ボタン」を押すと、運転開始します。 ◼

    運転中に「運転・停止ボタン」を押すと、停止します。 ◼ 運転中に、「運転モード切り替えボタン」を押すと、「風量・弱」→「風量・中」→「風量・強」の順で切 り替わっていきます。 ◼ 運転中に、「風量・強」の状態で、「運転モード切り替えボタン」を押すと、「風量・弱」になります。 ◼ 運転中に、「首振りボタン」を押すと、首を振り始めます。 ◼ 首振りをしている最中に、「首振りボタン」を押すと首振りを終了します。 ◼ 運転を開始する場合は、必ず「風量・弱」、「首振り:なし」の状態で始まります。 ➢ 状態遷移図を作成し、1スイッチのテストケースを作成してください 例題2: 状態遷移図を作る(まず状態とイベントを識別する) 43 運転中の状態として、首を 振っている or 振っていない という状態が増えた
  24. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 遷移を追加する 例題2: 状態遷移図を作る 46

    「首振り・あり」の状態間での、 運転モード切替ボタンによる 遷移を追加 「首振り・あり」の状態から 停止中への遷移を追加 首振りボタンに よる遷移を追加 首振りボタンに よる遷移を追加
  25. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 生成ボタンを押すと、自動で状態遷移表とテストケースを生成できる 例題2: 状態遷移表とテストケースを生成する 48

    ①「状態遷移表とテスト ケースを生成」ボタンを押す (中略) ②遷移の漏れがないか確認するために、 状態遷移表(状態×イベント)に 空欄がないか確認すると良い
  26. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 状態遷移テストについて解説&演習を行いました ◼ 状態遷移モデル(状態遷移図や状態遷移表)からテストケースを作成するテスト技法 ◼

    状態遷移モデルを作成する際は状態の識別や整理を行うなど、頭を使う必要がある ◼ 状態遷移モデルからテストケースを作成する「作業」はGIHOZなどのツールを使うと効率的 ➢ 状態遷移テストを活用する場面があったら、GIHOZを使ってもらえると嬉しいです ◼ 無料で簡単に使える、状態遷移テストのテストケース生成ツールは他にはあまり無い(はず) まとめ 51