$30 off During Our Annual Pro Sale. View Details »

明日から使えるテスト技法勉強会_6_境界値分析・ドメイン分析

 明日から使えるテスト技法勉強会_6_境界値分析・ドメイン分析

こちらは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. 明日から使える 勉強会 #6 テスト技法 2022.5.25 19:00~20:00@Zoom 水 境界値分析 ドメイン分析

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

    こういち)  所属  株式会社ベリサーブ 研究企画開発部  経歴  テスター歴:約14年  プリンタ、デジカメ、PCアプリ、クラウドサービス  統合テスト・システムテストのテスト設計・実行・管理  プロダクトオーナー歴:約5年  ソフトウェアテストの設計をサポートするツール  博士(工学) 自己紹介 1
  3. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  GIHOZについて  境界値分析・ドメイン分析の解説 

    GIHOZを使った境界値分析・ドメイン分析のハンズオン  おわりに アジェンダ 2
  4. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 3  GIHOZについて

  5. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 GIHOZのコンセプト 4  『GIHOZ』は、ベリサーブが開発したテスト技法ツールです ▪アカウント登録のみで、すぐに利用が可能です

    ソフトウェア開発に関わる全ての人の テスト設計の「作業」をゼロにする 手軽にテストケースを 作成・利用 目的に応じて テスト技法を選択 ソフトウェア開発の 効率化に貢献
  6. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 こんな悩みをお持ちの方に 5 テストケースが何を 網羅したか分からない・・ テスト技法を効率的

    に活用できていない・・ テスト設計の過程を チーム内で共有できて いない・・
  7. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 GIHOZを使うと 6 ペアワイズ カバレッジ テスト技法によって、

    網羅基準が明確に! 専用UIで効率よく 編集&テストケースを 自動生成! テスト設計の 過程や意図を リポジトリで共有! 0スイッチ カバレッジ ・ ・ ・
  8. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 GIHOZで利用可能なテスト技法 7

  9. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  検索&アカウント登録(無料) GIHOZを使うには 8 GIHOZ

    名前の覚え方 技法s(複数形) → ギホーズ → GIHOZ
  10. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 9  境界値分析・ドメイン分析の解説

  11. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 境界値分析・ドメイン分析の位置づけ 10 http://www.jasst.jp/archives/jasst11t/pdf/s2-1.pdf より引用 単一機能に対して、

    ピンポイントに不具合が 出やすい部分を狙って テストするのに使える。
  12. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  同値パーティションが連続性を持っている場合に、同値パーティションの境界とその付近の値をテストする技法  境界付近では不具合が埋め込まれることが多いため、境界値分析を行うことが不具合の検出に有効 

    仕様の解釈の誤り(「以上」「より大きい」、「以下」「未満」といった言葉の解釈の誤りなど)が起きやすい  コーディングのミス(≧と>、≦と<といった比較演算子のミスなど)が起きやすい  境界値分析では、境界の内側と外側の両方をカバーするようにテストケースを作成する 境界値分析とは 11 • 同値パーティションの境界値に注目してテスト設計する技法 • 境界値付近を狙うことで効果的にテストすることが可能
  13. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 境界値分析の例①:パスワード入力欄の入力文字数 12  仕様:パスワードは英字(a~z、A~Z)、数字(0~9)の組合せで8文字以上12文字以下とする ログイン

    ユーザ名 パスワード
  14. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 境界値分析の例①:パスワード入力欄の入力文字数 13  仕様を図で整理して、境界値分析でテストすべき値を検討すると以下のようになる 

    暗黙の境界値として0もある 7 8 12 13 有効同値パーティション 有効値 無効値 # 有効/無効 同値パーティションの意味 境界値 1 無効 既定の文字数に満たない、無効な数値群 0, 7 2 有効 有効な文字数の数値群(8~12) 8, 12 3 無効 既定の文字数を超える、無効な数値群 13 この場合、以下の値で同値パーティションを網羅できる。 0 無効同値パーティション 無効同値パーティション
  15. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  状況に応じて3値式を選ぶこともある  プログラム内の判定文で、「文字数>=8」とすべきところを誤って「文字数>8」とした場合は2値式で検出可能 

    プログラム内の判定文で、誤って「文字数=8」とした場合は2値式では検出できず、3値式では検出可能 2値式/3値式 14 有効値 無効値 7 8 12 13 2値式の場合 7 8 12 13 3値式の場合 9 11 0 0
  16. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  仕様:パスワードは英字(a~z、A~Z)、数字(0~9)の組合せで8文字以上12文字以下とする 境界値分析の例②:文字の境界値分析 15 ログイン

    ユーザ名 パスワード
  17. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 境界値分析の例②:文字の境界値分析 16  仕様を図で整理して、境界値分析でテストすべき値を検討すると以下のようになる 

    文字はコンピュータの内部で連続する数値として表現されているので、境界値分析を使える場合がある # 有効/無効 同値パーティションの意味 境界値 1 無効 「0」の文字コードより小さい、無効な文字コード群 「/」(0x2F) 2 有効 数字を表す、有効な文字コード群(0~9) 「0」(0x30), 「9」(0x39) 3 無効 数字と英大文字の間の、無効な文字コード群 「:」(0x3A), 「@」(0x40) 4 有効 英大文字を表す、有効な文字コード群(A~Z) 「A」(0x41), 「Z」(0x5A) 5 無効 英大文字と英小文字の間の、無効な文字コード群 「[」(0x5B), 「`」(0x60) 6 有効 英小文字を表す、有効な文字コード群(a~z) 「a」(0x61), 「z」(0x7A) 7 無効 「z」の文字コードより大きい、無効な文字コード群 「{」(0x7B) この場合、以下の値で同値パーティションを網羅できる。 「0」 「9」 「A」 「Z」 「a」 「z」 「/」 (0x2F) 「:」(0x3A) 「@」 (0x40) 「[」 (0x5B) 「`」 (0x60) 「{」 (0x7B) 数字 英大文字 英小文字
  18. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  ソースコードの条件判定の書き方によっては、境界値分析では不十分な場合がある  実際にあった境界値分析の誤り ※うろ覚えなので、実際の数値は下記とは違っていたかもしれません・・

     仕様 : ポート番号の値として、1024~65535までの整数を受け付ける(左下図のイメージ)  境界値分析でテストした値 : 1023、1024、65535、65536  このテストで検出が漏れた不具合 : マイナスの値を入力できる  実際のソースコードの条件判定の書き方 : 正規表現で判定していた  「If [番号] >= 1024 and [番号] <= 65535 then~」といったソースコードであれば境界値分析が有効  「If [番号] == 1024 then~ Elseif [番号] == 1025 then~」といったソースコードの場合も境界値分析では不十分 境界値分析の注意点 17 1023 1024 65535 65536 1024~65535まで の整数を受け付ける 仕様だけ見ると、 これで良さそうだけど・・・
  19. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  複数の関連する変数に対する境界値を同時にテストする方法  通常の境界値分析は「一次元の境界値分析」、ドメイン分析は「多次元の境界値分析」というイメージ 

    一次元=直線  多次元=平面や立体や、4次元以上の領域  ISTQBや国際規格でのドメイン分析の取り扱い  ISTQB:用語集に記載なし  ISO/IEC/IEEE 29119-4:テスト技法として記載なし。ただし、「ドメイン分析は同値分割と境界値分析の 組み合わせとして分類される」という一文のみ記載がある  ドメイン分析が紹介されている書籍  『実践的プログラムテスト入門』 ボーリス・バイザー著  『はじめて学ぶソフトウェアテストの技法』 リー・コープランド著  『ソフトウェアテスト技法ドリル』 秋山浩一著 ドメイン分析とは 18
  20. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ドメイン分析の例:試験と実習の点数に応じた合否判定 19  テスト対象の仕様は以下の通りです 

    試験の点数は0~75点、実習の点数は0~25点の範囲で入力可能とし、それ以外は入力できない  合計点が80点以上の場合は「合格」、それ以外は「不合格」と判定結果を表示する  合計点に応じた判定結果の表示が正しいか確認するためのテストケースをドメイン分析を用いて作成してください 判定 試験の点数 実習の点数 判定結果: ★ここに判定結果が表示される★
  21. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  仕様を図で整理して、テストすべき境界を検討してみると、下図のようになる  緑色の線=試験の点数の境界、青色の線=実習の点数の境界、赤色の線=合計点の境界 ドメイン分析の例:試験と実習の点数に応じた合否判定

    20 y軸:実習の点数 x軸:試験の点数 x + y ≧ 80 x ≦ 75 y ≦ 25 y ≧ 0 x ≧ 0 このドメイン(領域)に 収まっていれば合格
  22. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  定義  Onポイント:仕様で指定されている境界上の値 

    Offポイント:Onポイントに隣接しつつ、境界の反対側の領域に属する値。テスト対象に Offポイントの値を入力すると、Onポイントを入力したときとは異なる動作をする。  Inポイント:Onポイント/Offポイント以外の、有効な値 ドメイン分析で使う用語 21 Onポイント 75 Offポイント 76 Inポイント 30・50など、 75(Onポイント)以外の 有効な整数 Onポイント 76 Offポイント 75 Inポイント 30・50など、 75(Offポイント)以外の 有効な整数 【例①】仕様:試験の点数は 75点以下の整数を入力可能 【例②】仕様:試験の点数は 76点未満の整数を入力可能
  23. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  境界の線上の値(黒丸)がOnポイント、その値に隣接し境界の反対側にある値(白丸)がOffポイント  緑色の線=試験の点数の境界、青色の線=実習の点数の境界、赤色の線=合計点の境界 先ほどの例でのOnポイントとOffポイント

    22 y軸:実習の点数 x + y ≧ 80 x ≦ 75 y ≦ 25 x軸:試験の点数 y ≧ 0 x ≧ 0 このあたりの値は Inポイント 境界の線の上の値 (黒丸)がOnポイント Onポイントに隣接し、 境界の反対側にある値 (白丸)がOffポイント
  24. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  Onポイント・Offポイントという用語は使っていないが、数直線上の数値の背景色で区別している GIHOZの境界値分析でのOnポイントとOffポイント 23 青色背景の値が

    Onポイント 白色背景の値が Offポイント
  25. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  諸説あるようだが、Binderが提唱した「ドメイン分析テストマトリクス」を作成するのが分かりやすい  下表のように各変数に対してOnポイント・Offポイントを指定し、残りの変数はInポイントを指定する ドメイン分析のテストケースの作成方法

    24 http://www.jasst.jp/archives/jasst11t/pdf/s2-1.pdf より引用
  26. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  まず、各変数に対してOnポイント・Offポイントの値を入力する 先ほどの例でのドメインテストマトリクス 25 変数

    タイプ 1 2 3 4 5 6 7 8 9 10 試験の得点 On 0 75 Off -1 76 In 実習の得点 On 0 25 Off -1 26 In 合計点 On 80 Off 79 In 期待結果 -
  27. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  次に、Inポイントの値を入力して、期待結果を入力する 先ほどの例でのドメインテストマトリクス 26 変数

    タイプ 1 2 3 4 5 6 7 8 9 10 試験の得点 On 0 75 Off -1 76 In 60 60 60 60 60 59 実習の得点 On 0 25 Off -1 26 In 20 20 20 20 20 20 合計点 On 80 Off 79 In 20 19 95 96 60 59 85 86 期待結果 - 不合格 と表示 エラー 合格と 表示 エラー 不合格 と表示 エラー 合格と 表示 エラー 合格と 表示 不合格 と表示
  28. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  Inポイントの選び方によって、テストできる領域が変わる  合格の領域(ピンク色の三角形)の境界をすべてテストするには、適切にInポイントを選ぶ必要がある ドメインテストマトリクスを使う場合の注意点

    27 y軸:実習の点数 x + y ≧ 80 x ≦ 75 y ≦ 25 x軸:試験の点数 y ≧ 0 x ≧ 0 Inポイントの値によっては、 このあたりをテストすること になる Inポイントの値によっては、 このあたりをテストすること になる
  29. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  「境界の線の傾きが間違っている」などの不具合を検出できるように、Onポイントを複数選ぶという考え方もある  その場合、2次元(2変数)では、境界の線1本に対して2個のOnポイントと1個のOffポイントを選ぶ。 N次元では、境界1つに対してN個のOnポイントと1個のOffポイントを選ぶ

    → 「N×1法」と呼ぶ その他のドメイン分析のやり方 28 y軸:実習の点数 x + y ≧ 80 x ≦ 75 y ≦ 25 x軸:試験の点数 間違った境界線 y ≧ 0 x ≧ 0 境界線の傾きが間違って いても、このOnポイント・ Offポイントだけでは検出 できない場合がある
  30. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 29  GIHOZを使った境界値分析・ドメイン分析のハンズオン

  31. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 GIHOZの境界値分析の使い方 30 数直線に境界値を 配置する 同値パーティション

    一覧を生成する・編 集する テストケースを生成 する・編集する 変数を追加する (数直線を作る) 同値パーティション 名を入力する、有 効/無効を設定する  GIHOZには「ドメイン分析」はありませんが、境界値分析の画面でドメインテストマトリクスと同等のテストケース を作成できるので、この勉強会では境界値分析の使い方を紹介します
  32. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  GIHOZでは数値の境界値のみ分析可能  同値分割・境界値分析のテストケースを生成可能。ただし、2値式のみ。 GIHOZの境界値分析

    31
  33. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  テスト対象の仕様は以下の通りです  試験の点数は0~75点の範囲で入力可能とし、それ以外は入力できない 

    試験の点数が60点以上の場合は「合格」、それ以外は「不合格」と判定結果を表示する  試験の点数に応じた判定結果の表示が正しいか確認するためのテストケースを、境界値分析を用いて作成してく ださい 例題1:境界値分析 32 判定 試験の点数 判定結果: ★ここに判定結果が表示される★
  34. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  GIHOZの境界値分析を使うと以下のように数直線からテストケースを作成できる 例題1の解答例 33

  35. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  テスト対象の仕様は以下の通りです  試験の点数は0~75点、実習の点数は0~25点の範囲で入力可能とし、それ以外は入力できない 

    合計点が80点以上の場合は「合格」、それ以外は「不合格」と判定結果を表示する  合計点に応じた判定結果が正しいか確認するためのテストケースを、Binderのドメイン分析テストマトリクスを用いて作成してください  ※GIHOZにはドメイン分析テストマトリクスを作成する機能はありませんが、境界値分析の画面で同等のテストケースを作成すること ができます。GIHOZをどのように使ったらドメイン分析テストマトリクス相当のテストケースを作ることができるかも考えてみてください。 例題2:ドメイン分析 34 判定 試験の点数 実習の点数 判定結果: ★ここに判定結果が表示される★
  36. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  以下の手順を繰り返して、「試験の点数」、「実習の点数」、「合計点」という変数を追加する 変数を追加する(数直線を作る) 35 ①「変数を追加」を押す

    ②変数の名前を入力 ③点数は整数のみと考え、 増減幅は「1」のままとする ④最小値・最大値を超える値が存在しない場合 は値を入力する。今回はマイナスの値や100より 大きい値も、エラーになる値としてありえるので、 最小値・最大値は何も入力しない。
  37. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 変数を追加する(数直線を作る) 36 名前を変えたい場合は、 直接編集できる 名前以外の設定は変更できない

    ので、間違えた場合は一度削除 して、再度追加する
  38. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 数直線に境界値を配置する 37  下図の手順を繰り返して、境界値を配置する 

    試験の点数:「0以上」「75以下」  実習の点数:「0以上」「25以下」  合計点:「80以上」 ①数直線上をクリック (クリックした位置に境界値 が配置されるので、適切な 位置をクリックする) ②数値を入力 ③「以上」や「以下」をプルダウン から選択して「確定」を押す
  39. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 数直線に境界値を配置する 38 境界値の位置の移動や数値の変更 はできないので、やり直したい場合は 右クリックして削除してから、再度追加

  40. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 同値パーティション名を入力する、有効/無効を設定する 39 同値パーティションの名前は クリックして編集可能 同値パーティションの名前を右クリックして、

    有効/無効を切り替え可能。無効に 設定すると数直線がグレー表示になる
  41. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 同値パーティション一覧を生成する・編集する 40 「同値パーティション一覧を 表示」を押す 代表値は自動入力されるが、

    ユーザがよく使う値などに変更 したければ編集できる
  42. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  同値パーティションに上限と下限が両方ある場合は、中間付近の値 ※下図の①が該当  同値パーティションに上限・下限のどちらかしか存在しない場合は、

    「下限値」 + 「値の増減幅の10倍」 ※下図の②が該当 または 「上限値」 - 「値の増減幅の10倍」 ※下図の③が該当 【参考】GIHOZの境界値分析における、代表値の自動生成ルール 41 ③代表値は-11 ①代表値は13 ②代表値は36 値の増減幅が1の場合の例:
  43. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 テストケースを生成する・編集する 42 「テストケースを生成」を押す 空欄の変数に対して値の 指定が必要な場合は

    任意で入力できる 期待結果を 入力できる ドメインテストマトリクス相当のテストケースを 作成する場合は、境界値分析のテストケース の空欄に、Inポイントの値を入力する
  44. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  同等のテストケース(今回の例だと10件分)となっている ドメインテストマトリクスとGIHOZで作成したテストケース 43 変数

    タイプ 1 2 3 4 5 6 7 8 9 10 試験の得点 On 0 75 Off -1 76 In 60 60 60 60 60 59 実習の得点 On 0 25 Off -1 26 In 20 20 20 20 20 20 合計点 On 80 Off 79 In 20 19 95 96 60 59 85 86 期待結果 - 不合格 と表示 エラー 合格と 表示 エラー 不合格 と表示 エラー 合格と 表示 エラー 合格と 表示 不合格 と表示 GIHOZ ドメイン テスト マトリクス
  45. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 44  おわりに

  46. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  https://gihoz.hatenablog.com/  アップデート情報など随時更新中 GIHOZ公式ブログの紹介

    45 「読者になる」を クリック!
  47. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。  境界値分析・ドメイン分析について解説&ハンズオンを行いました  境界値にはバグが潜んでいる可能性が高いので、境界値をきちんとテストする必要がある 

    変数が1次元の場合は境界値分析、2次元以上の場合はドメイン分析を使う  ドメイン分析を行う際は、Binderのドメインテストマトリクスを作る方法がある  GIHOZの境界値分析を使って、ドメインテストマトリクス相当のテストケースを作成することができる  GIHOZを使って境界値分析・ドメイン分析の理解を深めてもらえると嬉しいです まとめ 46
  48. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 【当社問い合わせ窓口】 お問い合わせフォーム:https://contact.veriserve.co.jp/public/application/add/2187 メール:support@gihoz.com お問い合わせ対応時間:10時~17時 GIHOZ

    検索 ご閲覧ありがとうございました。 本資料に関するお問い合わせは下記までご連絡ください。