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

【S2】明日から使えるテスト技法勉強会_7_適切なテスト技法の選び方

 【S2】明日から使えるテスト技法勉強会_7_適切なテスト技法の選び方

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

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

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

GIHOZ SUPPORT TEAM

April 26, 2023
Tweet

More Decks by GIHOZ SUPPORT TEAM

Other Decks in Education

Transcript

  1. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ テスト技法とは、ソフトウェアのテストケースを作成したり選択したりするための技法 ➢ テスト技法を利用することで、テストケースの抜け漏れを防ぎ、効率よくテストケースを作成できる ➢

    さまざまなテスト技法が存在するが、今日は以下を簡単にご紹介 1. 同値分割法 2. 境界値分析 3. デシジョンテーブルテスト 4. CFD法 5. ペアワイズテスト 6. クラシフィケーションツリー法 7. 状態遷移テスト テスト技法とは 3
  2. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 同値パーティションが連続性を持っている場合に、同値パーティションの境界とその付近の値をテストする技法 ➢ 境界付近では不具合が埋め込まれることが多いため、境界値分析を行うことが不具合の検出に有効 ◼

    仕様の解釈の誤り(「以上」「より大きい」、「以下」「未満」といった言葉の解釈の誤りなど)が起きやすい ◼ コーディングのミス(≧と>、≦と<といった比較演算子のミスなど)が起きやすい ➢ 境界値分析では、境界の内側と外側の両方をカバーするようにテストケースを作成する 境界値分析 5 境界値分析のイメージ
  3. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ デシジョンテーブルは、入力データや入力条件の組み合わせに対する処理や出力結果をテーブルにまとめるもの ◼ 日本ではJIS X

    0125:1986で「決定表」という名前で規格化されている ➢ 自然言語で書かれた仕様を論理的に整理する場合に利用できる ➢ デシジョンテーブルに基づいてテストケースを作成する技法を「デシジョンテーブルテスト」と呼ぶ デシジョンテーブルテスト 6 デシジョンテーブルのイメージ
  4. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 原因流れ図(Cause Flow Diagram)を作成して、そこからデシジョンテーブルを作成するテスト技法 ➢

    原因流れ図を作成する際、仕様だけでなく実装情報も用いる ◼ 実装情報なしにCFD法を使うと、テスト漏れにつながる可能性があるので注意が必要 CFD法 7 CFD法のイメージ 原因流れ図 デシジョンテーブル
  5. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ テストの入力条件をツリー形式で分類・整理し、テストケースを作成する技法 ◼ 組み合わせを作成する際は、組み合わせテスト技法(ペアワイズテストなど)を合わせて使うことがある ➢

    ツリー形式の図で複数の階層を作ることができ、テストの入力条件(パラメータ)を段階的に分類して整理できる クラシフィケーションツリー法 9 クラシフィケーションツリー法のイメージ
  6. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ テストベース(仕様書など)に対して、いきなりテスト技法を適用しようとしても難しい テスト技法をいきなり使おうとしていませんか? 12 テスト技法を使う(入

    力条件の識別・組み 合わせ生成など) テストケース プロセス 入出力 凡例 テストベース テスト技法は知っ ているけど、使いど ころが分からな い・・ 出来上がったテスト ケースや条件の組 み合わせを見ても、 何をテストしている のか分からない・・
  7. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ まずテストの内容(どんなテストを行うか)を検討し、それから、どのテスト技法を使用するか決める テスト技法を使う前に考えるべきことがあります 13 テストの内容を検討

    し、どのテスト技法を 使用するか検討する 「どんなテストを 行うか」一覧 ※注1 テスト技法を使う(入 力条件の識別・組み 合わせ生成など) テストケース プロセス 入出力 凡例 テストベース ※注1:「どんなテストを行うか」は、テスト条件・テスト観点・テ スト項目とさまざまな呼び方があります。 この資料では、「どんなテストを行うか」と呼びます。 どのテスト技法 を使うべきか明 確になる! 何をテストして いるのか理解 できる!
  8. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 I. このクラウドサービスではメールアドレスとパスワードを入力してログインできる II. パスワード入力欄には半角英数字のみ入力できる III.8文字以上64文字以下で、英字と数字が混在する場合のみパスワードを許容する

    IV. パスワードを連続して10回間違って入力した場合、アカウントを1分間ロックする V. アカウントのロック中にさらに間違ったパスワードを入力した場合、管理者によるアカウントのロックの解除が必要となる VI. アカウントのロック中にパスワードを入力した場合は、正しいパスワードであってもログインできない VII.管理者がアカウント管理画面でアカウントのロックを解除できる テストベースの例 14 どんなテストが 必要かな? ログイン メールアドレス パスワード
  9. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 I. このクラウドサービスではメールアドレスとパスワードを入力してログインできることを確認する II. パスワード入力欄には半角英数字のみ入力できることを確認する III.8文字以上64文字以下で、英字と数字が混在する場合のみパスワードを許容することを確認する

    IV. パスワードを連続して10回間違って入力した場合、アカウントを1分間ロックすることを確認する V. アカウントのロック中にさらに間違ったパスワードを入力した場合、管理者によるアカウントのロックの解除が必要となる ことを確認する VI. アカウントのロック中にパスワードを入力した場合は、正しいパスワードであってもログインできないことを確認する VII.管理者がアカウント管理画面でパスワードのロックを解除できることを確認する 「どんなテストを行うか」の例(あまり良くない例) 15 ※注1:このテスト設計法(?)は、仕様をコピペ(Copy and Paste)して文章の末尾のみ 変更(Modify)するというやり方なので、「CPM法」と呼んで揶揄する人もいる
  10. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 I. このクラウドサービスではメールアドレスとパスワードを入力してログインできる II. パスワード入力欄には半角英数字のみ入力できる III.8文字以上64文字以下で、英字と数字が混在する場合のみパスワードを許容する

    IV. パスワードを連続して10回間違って入力した場合、アカウントを1分間ロックする V. アカウントのロック中にさらに間違ったパスワードを入力した場合、管理者によるアカウントのロックの解除が必要となる VI. アカウントのロック中にパスワードを入力した場合は、正しいパスワードであってもログインできない VII.管理者がアカウント管理画面でパスワードのロックを解除できる テストの内容を検討する 16 ※注1:この検討の工程を「テスト分析」と呼んだりする
  11. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 I. このクラウドサービスではメールアドレスとパスワードを入力してログインできる II. パスワード入力欄には半角英数字のみ入力できる III.8文字以上64文字以下で、英字と数字が混在する場合のみパスワードを許容する

    IV. パスワードを連続して10回間違って入力した場合、アカウントを1分間ロックする V. アカウントのロック中にさらに間違ったパスワードを入力した場合、管理者によるアカウントのロックの解除が必要となる VI. アカウントのロック中にパスワードを入力した場合は、正しいパスワードであってもログインできない VII.管理者がアカウント管理画面でパスワードのロックを解除できる テストの内容を検討する 17 ※注1:この検討の工程を「テスト分析」と呼んだりする いろいろなメールアドレス・ パスワードでログインできる かどうかのテストが必要 いろいろな文字種を パスワードに入力 するテストが必要 文字数に応じた パスワードの受け付け のテストが必要 アカウントはいろいろな状態を 持っている。いろいろなトリガー に応じて、アカウントの状態が 変化するかテストする 必要がある 文字数と文字種を混在 させたときに、受け付ける か否か、組み合わせて テストしたほうが良さそう 間違って入力する回数 に応じたロックのテストが 必要 ロック後の経過時間に応 じたロック解除の動作の テストが必要 いろいろなOS・ブラウザ・ 端末の組み合わせで テストが必要 メールアドレスの 入力チェックの テストは必要?
  12. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ① いろいろな文字種をパスワードに入力するテスト ② 文字数に応じたパスワードの受け付けのテスト ③

    いろいろな文字種と文字数を組み合わせたときに受け付けるか否かのテスト ④ いろいろなメールアドレス・パスワードでログインできるかどうかのテスト ⑤ 間違って入力する回数に応じたアカウントのロックのテスト ⑥ アカウントのロック後の経過時間に応じたロック解除のテスト ⑦ いろいろなトリガーに応じて、アカウントの状態がどう変化するかのテスト ⑧ いろいろなOS・ブラウザ・端末の組み合わせでのテスト(※注1) 「どんなテストを行うか」の例(ちゃんと考えた例1) 18 ※注1:実務では、OS・ブラウザ・端末をどこまで組み合わせてテストするかは 要検討。対応する端末などが仕様で決まっている可能性もある。 ※注2:メールアドレスの入力チェックに対するテストは、仕様が未定なようなので、 今回はいったん省いている。実際は、仕様を確認できたら、テストが必要になると 思われる。
  13. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ① いろいろな文字種をパスワードに入力するテスト → 同値分割法 ②

    文字数に応じたパスワードの受け付けのテスト → 境界値分析 ③ いろいろな文字種と文字数を組み合わせたときに受け付けるか否かのテスト → デシジョンテーブルテスト または クラシフィケーションツリー法 ④ いろいろなメールアドレス・パスワードでログインできるかどうかのテスト → デシジョンテーブルテスト または CFD法 ⑤ 間違って入力する回数に応じたアカウントのロックのテスト → 境界値分析 ⑥ アカウントのロック後の経過時間に応じたロック解除のテスト → 境界値分析 ⑦ いろいろなトリガーに応じて、アカウントの状態がどう変化するかのテスト → 状態遷移テスト ⑧ いろいろなOS・ブラウザ・端末の組み合わせでのテスト → ペアワイズテスト または クラシフィケーションツリー法 どのテスト技法を使用するか検討した例 19 ※注1:なぜ上記のテスト技法を選んだのかについては、後述する。 ※注2:③④はデシジョンテーブルを書くまでもないかもしれないが、使用 できるテスト技法の例として挙げている ※注3:この後の具体的なテストケースを作る前に、上記の内容を一覧など に整理してチームでレビューし、過不足や認識のズレがないか確認すると良い。
  14. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 下のような表をExcelやGoogleスプレッドシートなどで作ったりする。ただし、特にフォーマットの決まりはない 「どんなテストを行うか」一覧の例 21 ID

    仕様ID テスト対象 テスト内容 テスト設計方針 TC-1 Ⅱ ログイン パスワードの入 力チェック いろいろな文字種を入力した際の パスワードの入力チェックの確認 同値分割法で文字種を網羅する TC-2 Ⅲ パスワードの受 け付けチェック 文字数に応じたパスワードの受付チェック の確認 境界値分析で文字数の境界値を 網羅する TC-3 Ⅱ/Ⅲ いろいろな文字種と文字数を組み合わせ たときのパスワードの受付チェックの確認 デシジョンテーブルで組み合わせを網 羅する TC-4 Ⅰ ログイン判定 いろいろなメールアドレス・パスワードを 組み合わせてのログイン判定の確認 判定ロジックを考慮してCFD 法で組み合わせを網羅する TC-5 Ⅳ アカウントロック 間違って入力する回数に応じたアカウント ロックの動作の確認 境界値分析でロックの回数の境界 値を網羅する TC-6 Ⅳ 経過時間に応じたアカウントロック解除の 動作の確認 境界値分析で経過時間の境界値 を網羅する TC-7 Ⅳ/Ⅴ/Ⅵ ログイン全体 アカウントの状態変化の確認 状態遷移テストでアカウントの状態 とトリガーを網羅する TC-8 Ⅰ いろいろなOS・ブラウザ・端末の 組み合わせでログインできることの確認 ペアワイズテストでOS・ブラウザ・端 末の組み合わせを絞る
  15. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 同値分割法を使い、入力する文字種を決めて、テストケースを作成する ◼ Why 同値分割?

    → 文字種のグループごとに動作結果が変わるので、同値分割法でグループを識別してグ ループごとにテストすれば網羅性を担保しつつ効率的にテストできる。 ①いろいろな文字種をパスワードに入力するテスト 22 ※注1:上記で「グループ」と呼んだものは、 同値分割法では「同値クラス」とか「同値 パーティション」と呼ぶ。 ※注2:左図の記法はCFD法で使用する 「原因流れ図」のものなので、単純な同値 分割法を表現したものではないが、図で同 値分割の結果を表現できるので、イメージ として掲載している。
  16. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 境界値分析を使い、入力する文字数を決めて、テストケースを作成する ◼ Why 境界値分析?

    → 文字数は1、2、3・・と値に順序性がありで、かつ何文字以上何文字以内という 範囲が仕様で決まっている。範囲には端っこ(境界)があるため、境界値分析を使うとバグを見つけやすい。 ②文字数に応じたパスワードの受付のテスト 23 ※注1:境界値分析をすると、「許容するグループ」と「許 容しないグループ」を識別することになるので、同値パーティ ションを識別していることになる。境界値分析を用いると、 同値パーティションを網羅したテストを行うことができる。 ※注2:期待結果は「許容しない」「許容する」だと、具 体的に何が起こるのか分かりにくいので、最終的なテスト ケースでは、確認方法が明確な期待結果にすると良い (例えば、「エラーが表示される」や「入力できる」など)
  17. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ デシジョンテーブルまたはクラシフィケーションツリー法を使い、入力条件(文字種・文字数)の組み合わせと動作結果(パスワードを受け付ける か否か)を整理して、テストケースを作成する ◼ Why

    デシジョンテーブルまたはクラシフィケーションツリー法? → 入力条件の組み合わせと動作結果に論理的な関係があるので、組み合わせ を網羅的に考えて、組み合わせに応じた動作結果が正しいか確認したい ③いろいろな文字種と文字数を組み合わせたときに受け付けるか否かのテスト 24 ※注1:条件を洗い出す際、 頭の中では同値分割法も 使っている
  18. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ デシジョンテーブルまたはCFD法を使い、ログイン判定のロジックを網羅するように入力条件の組み合わせを整理 して、テストケースを作成する ◼ Why

    デシジョンテーブルまたはCFD法? → 入力条件に対する判定ロジックが存在し、ロジックの条件分岐を 考慮して必要十分なテストをしたい ④いろいろなメールアドレス・パスワードでログインできるかどうかのテスト 25 ※注1:開発者に実装を確認したところ、上図 の順序で条件判定をしていることが分かった、と いう前提で上図は作成した。条件判定の順序 が不明な場合はCFD法を使うことはできない
  19. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 境界値分析を使い、入力する回数を決めて、テストケースを作成する ◼ Why 境界値分析?

    → 入力回数は1、2、3・・・と値に順序性があり、かつ何回間違ったらロックする、という 範囲が仕様で決まっている。範囲には端っこ(境界)があるため、境界値分析を使うとバグを見つけやすい。 ⑤間違って入力する回数に応じたアカウントのロックのテスト 26 ※注1:最終的なテストケースでは、ロックされてい ることやロック解除されたことをどのように確認するの かも指定されていると、テスト実施するときに迷わなく なるので親切。(ログインできなければロックされてい ると判断する、など)
  20. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 境界値分析を使い、経過時間を決めて、テストケースを作成する ◼ Why 境界値分析?

    → 経過時間は1、2、3・・・と値に順序性があり、かつ何分間はロックするという範囲 が仕様で決まっている。範囲には端っこ(境界)があるため、境界値分析を使うとバグを見つけやすい。 ⑥アカウントのロック後の経過時間に応じたロック解除のテスト 27 ※注1:秒単位の境界値で十分なのかどうかは、検討 が必要(59.9秒とかは考えなくてよいか?) ※注2:経過時間が「0秒」は、厳密にはテスト実施が 難しいと思われるので、最終的なテストケースとしては、 「ロック直後」くらいの表現にすると良い。もしくは、境界値 のテストとしては、「0」はテストしない、という考え方もアリ。 ※注3:前ページの注釈と同じく、最終的なテストケース ではロックやロック解除の確認方法も示すと良い
  21. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 状態遷移テストで、状態の遷移を網羅するようにテストケースを作成する ◼ Why 状態遷移テスト?

    → アカウントの状態が複数あって、いろいろなトリガーに応じて状態が変化するので、 正しく状態遷移をするか一通り確認したい。 ⑦いろいろなトリガーに応じて、アカウントの状態がどう変化するかのテスト 28 ※注1:各状態になっていることを確認する手順は、 別途用意すると良い。 ※注2:スイッチ数をいくつにするかは、決まりはない。 バグがあった場合のリスクや、テスト実施に使える 工数などに応じてスイッチ数を検討する。 ※注3:状態を識別する際は、同値分割法の 考え方を使っているともいえる
  22. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ペアワイズテストで、OS・ブラウザ・端末の組み合わせを絞って、テストケースを作成する ◼ Why ペアワイズテスト?

    → 全組み合わせの網羅をしようとすると組み合わせが多く、現実的にテストを実施 しきれないので、組み合わせを絞りたい。組み合わせを絞る際に、何かしらの理由付けが欲しい。 ⑧いろいろなOS・ブラウザ・端末の組み合わせでのテスト 29 ※注1:今回の例はたまたま、「テスト環境」 的なパラメータの組み合わせを絞るのにペアワ イズテストを使ったが、入力項目の組み合わせ を絞る場合など、テスト環境以外でもペアワイ ズテストは使うことができる。(例えば、プリン ターのテストで、いろいろな印刷設定を組み合 わせてテストする場合など) ※注2:ユーザがよく使うOS・ブラウザ・端末 の組み合わせが分かっているのであれば、ペア ワイズテストを使わずに、よく使う組み合わせだ け決め打ちでテストする、という方針もアリ。 また、実務では、該当の環境を用意できるの か、という点も考慮して、組み合わせを決める 必要がある。 なので、「組み合わせが多いから取り合えずペ アワイズテストにしておこう」と安直に決めるのは 危険。
  23. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 「どんなテストを行うか」を検討してから、どのテスト技法が適切か判断すべし! ➢ おすすめのテスト技法の選び方 7選!

    ◼ すべての基本は同値分割法! ◼ 値に順序性があり、その値の範囲指定があるときは境界値分析! ◼ 条件の組み合わせと期待結果の関係が明確なときはデシジョンテーブル! ◼ 判定ロジックの条件分岐を考慮してテストするときはCFD法! ◼ 状態変化をテストするときは状態遷移テスト! ◼ 関係性が分からない条件をたくさん組み合わせるときはペアワイズテスト! ◼ 条件を整理しながら洗い出すときはクラシフィケーションツリー法! テスト技法の選び方のまとめ 30
  24. © 2023 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ テスト技法の選び方について解説しました ◼ テストベースに対して、いきなりテスト技法を適用しようとするとうまくいかないことが多い ◼

    「どんなテストを行うか」を検討してから、どのテスト技法が適切か選ぶ必要がある ➢ GIHOZで効率よくテストケースを作成してもらえると嬉しいです ◼ 解説に使ったテストモデル・テストケースは以下のリポジトリで公開していますので、参考にしてください ◆ https://gihoz.com/users/ktanizaki/repositories/ex4connpass/documents/ まとめ 33