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

JaSST_Tokyo経験発表_20240313.pdf

 JaSST_Tokyo経験発表_20240313.pdf

ktanizaki

March 13, 2024
Tweet

Other Decks in Technology

Transcript

  1. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 欠陥を誘発しやすい プロダクトコンテキストの整理 2024年3月14日 JaSST’24 Tokyo E3)事例セッション 発表者 :谷﨑 浩一¹ 検討メンバー:田上 諭¹ ,森 龍二¹ ,蛭田 恭章¹ , 塚野 久哉¹ ,森崎 修司² ¹ 株式会社ベリサーブ, ² 名古屋大学大学院情報学研究科
  2. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 自己紹介 • 名前 ▹谷﨑 浩一(たにざき こういち) • 所属 ▹株式会社ベリサーブ 研究企画開発部 • 経歴 ▹テスター・QAエンジニア ‣ プリンタ、デジカメ、PCアプリ、クラウドサービスの 統合テスト・システムテスト(テスト分析・設計・実行・管理) ▹プロダクトオーナー ‣ ソフトウェアテストの設計をサポートするツール ▹博士(工学) ‣ 研究テーマ:悪条件分析に基づく要求仕様レビュー技法の研究 1
  3. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ・取り組みの背景 ・今回の取り組みで分かったこと ・今回取り組んだ内容 ①プロダクトコンテキストを整理 ②コンテキスト由来欠陥を検討 ③コンテキスト由来欠陥に当たる欠陥の有無を検証 ④コンテキスト由来欠陥への対策案を検討 ・まとめと今後の課題 2 アジェンダ
  4. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 取り組みの背景 • 目的 ▹プロジェクトの生産性を高めるために、仕様に起因する欠陥を狙って 検出・対策できるようにしたい • 仮説 ▹ソフトウェアの欠陥は偏在する → 仕様の欠陥も偏在するのでは? ‣ 例:ソースコードの変更が多い箇所に不具合が多い、境界値には不具合が多い ▹プロダクトの特徴などの背景情報(コンテキスト)に応じて、埋め 込まれやすい欠陥があるのでは? 3
  5. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す コンテキストに欠陥が誘発されるイメージ 4 仕様書 後工程の成果物 (設計書やソースコード) 欠陥 欠陥 欠陥 欠陥 仕様を 把握する 成果物を 作る 仕様を 作る プロジェクトの状況 プロダクトの特徴 欠陥を誘発する コンテキスト 欠陥を誘発する コンテキスト 欠陥 欠陥 仕様を作る人 仕様を使う人 欠陥が 埋め込まれる コンテキスト コンテキストから 影響を受ける 今回の取り組みは プロダクトコンテキスト に着目
  6. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 欠陥の未然防止・検出のイメージ 5 仕様書 後工程の成果物 (設計書やソースコード) 欠陥 欠陥 欠陥 欠陥 仕様を 把握する 成果物を 作る 仕様を 作る プロジェクトの状況 プロダクトの特徴 欠陥を誘発する コンテキスト 欠陥を誘発する コンテキスト 欠陥 欠陥 どんな欠陥が誘発 されやすいか特定 仕様レビューや テストする人 仕様を作る人 仕様を使う人 欠陥が 埋め込まれる 欠陥を狙って検出 誘発される欠陥に関する知識 (コンテキスト由来欠陥) コンテキスト 未然防止 コンテキストから 影響を受ける
  7. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 既存の技術・研究 • 欠陥予測に関する既存の研究 ▹ソースコードに対する欠陥予測 ‣ 変更履歴に基づく欠陥予測 ‣ プログラミング言語を学習済みのLLMでコミット内容に基づき欠陥予測 ▹設計段階での欠陥予測 ‣ 機械学習により設計段階で欠陥予測 ▹ソフトウェア開発プロジェクトのリスク予測 ‣ リスクが高くなるプロジェクトの状況を定義 • 欠陥検出に関する既存の技術 ▹仕様レビュー:PBR、DBRなど ▹テスト:テスト技法(同値分割法、境界値分析)など 6 「どのようなプロダクトの特徴が欠陥を誘発しやすいか」 「どんな欠陥が誘発されるのか」は明らかになっていない
  8. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 今回の取り組みで分かったこと 7 プロダクトコンテキストによって誘発される欠陥は、 実際に存在するか? プロダクトコンテキストから欠陥を予測して 検出・対策できるか? 実際の開発プロジェクトの欠陥で、存在することを確認できた 予測できそうなものと難しそうなものがある 実際に予測して検出・対策できるかは今後さらなる確認が必要
  9. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 今回取り組んだ内容 8 ①プロダクト コンテキストを 整理 ②コンテキスト 由来欠陥を検討 ③コンテキスト 由来欠陥に当たる 欠陥の有無を検証 ④コンテキスト 由来欠陥への 対策案を検討 「漏れ」と「誤り」 に分けて検討 仕様の修正を伴った 欠陥の情報を参考 に、メンバーで議論 一般性を確かめるため、 ①と別のプロジェクトの 欠陥で検証 未然防止、仕様 レビュー・テストでの 検出の方法を検討
  10. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ①プロダクトコンテキストを整理 • 当社のメンバーで議論し、ツリー構造で整理 9 仕様の修正を伴った 欠陥 メンバーの過去の 経験
  11. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ②コンテキスト由来欠陥を検討 • 「実装対象そのものの特徴」に関するコンテキスト由来欠陥 10 プロダクトコンテキスト 分類 コンテキスト由来欠陥 条件が多い・条件が複雑 漏れ 条件の組み合わせの考慮漏れ・未記載 誤り 条件の間での矛盾 条件が後から増える 漏れ 増やした条件の記載漏れ 誤り 増やした条件と、既存の条件や機能との矛盾 状態が多い 漏れ 状態ごとの振る舞いや状態遷移の考慮漏れ・未記載 誤り 状態の認識を誤っている 同じ製品だが仕向けやモデ ルや実行環境ごとに仕様が 異なる 漏れ 仕向け条件考慮せず 誤り 仕向けごとの振る舞いの矛盾 多言語に対応している 漏れ 言語ごとに異なる仕様や、画面レイアウトの未記載 誤り 言語ごとの表示する内容の不一致 ハードウェアキーをいつで も押される可能性がある 漏れ キー押下時の制限事項の未記載 誤り キー押下時の共通仕様と、個別の機能の仕様の矛盾
  12. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ②コンテキスト由来欠陥を検討 • 「実装対象そのもの以外の考慮が必要」に関するコンテキスト 由来欠陥 11 プロダクトコンテキスト 分類 コンテキスト由来欠陥 他の製品・システムからの 画面遷移がある 漏れ 遷移元の未記載 誤り 他の製品の画面遷移仕様との矛盾 利用するCOTS(既製品) にバグを想定していない 漏れ COTS(既製品)の動作が想定外の場合の仕様の考慮 漏れ・未記載 誤り 他の製品のエラー時動作との矛盾 ビジネスルール・ロジック など、ドメイン知識が必要 漏れ ビジネスルール・ロジックの考慮漏れ・未記載 誤り ビジネスルール・ロジックとの矛盾
  13. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ③コンテキスト由来欠陥に当たる欠陥の有無を検証 • 対象 ▹BtoCのプロダクトの組み込みソフトウェア開発プロジェクトの欠陥 12 結合テスト工程以降で 検出した欠陥 約4000件 101件 機能仕様書の修正を 伴った欠陥 検証に使った 対象
  14. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ③コンテキスト由来欠陥に当たる欠陥の有無を検証 • 方法 ▹対象とした欠陥の情報と、コンテキスト由来欠陥を突き合わせて、 該当するかどうか判断した 13 101件 機能仕様書の修正を 伴った欠陥 コンテキスト由来欠陥 突き合せ
  15. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ③コンテキスト由来欠陥に当たる欠陥の有無を検証 • 結果:101件中36件の欠陥が該当 14 表2に相当する結果をここに入れる プロダクトコンテキスト 漏れ 誤り 合計 条件が多い・条件が複雑 7 3 10 条件が後から増える 1 2 3 状態が多い 2 5 7 同じ製品だが仕向けやモデルや実行環境ごとに仕様が 異なる 0 2 2 多言語に対応している 0 2 2 ハードウェアキーをいつでも押される可能性がある 2 4 6 他の製品・システムからの画面遷移がある 0 0 0 利用するCOTS(既製品)にバグを想定していない 0 3 3 ビジネスルール・ロジックなど、ドメイン知識が必要 0 3 3 合計 12 24 36
  16. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ③コンテキスト由来欠陥に当たる欠陥の有無を検証 • 結果 15 プロダクトコンテキスト 漏れ 誤り 合計 条件が多い・条件が複雑 7 3 10 条件が後から増える 1 2 3 状態が多い 2 5 7 同じ製品だが仕向けやモデルや実行環境ごとに仕様が 異なる 0 2 2 多言語に対応している 0 2 2 ハードウェアキーをいつでも押される可能性がある 2 4 6 他の製品・システムからの画面遷移がある 0 0 0 利用するCOTS(既製品)にバグを想定していない 0 3 3 ビジネスルール・ロジックなど、ドメイン知識が必要 0 3 3 合計 12 24 36 仕様の「漏れ」より 「誤り」が多かった 「漏れ」が存在しない 部分があった 該当する欠陥が存在 しない部分もあった
  17. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ③コンテキスト由来欠陥に当たる欠陥の有無を検証 • 結果:仕様に「漏れ」があった欠陥の具体例 16 プロダクトコンテキスト 分類 コンテキスト由来欠陥 該当した欠陥の内容 条件が多い・条件が複雑 漏れ 条件の組み合わせの考 慮漏れ・未記載 別のモードから機能を有効 にして、元のモードに戻し ても機能が有効とならない 状態が多い 漏れ 状態ごとの振る舞いや 状態遷移の考慮漏れ・ 未記載 優先度の高い画面を表示中 に後ろの画面を操作すると 画面が操作できなくなる
  18. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ③コンテキスト由来欠陥に当たる欠陥の有無を検証 • 結果:仕様に「誤り」があった欠陥の具体例 17 プロダクトコンテキスト 分類 コンテキスト由来欠陥 該当した欠陥の内容 条件が多い・条件が複雑 誤り 条件の間での矛盾 無効表示されているリスト の項目を選択してもエラー 音が鳴らない ハードウェアキーを いつでも押される可能性 がある 誤り キー押下時の共通仕様 と、個別の機能の仕様 の矛盾 ボタンの長押しが無効な 画面で長押し操作が有効に なっている
  19. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ③コンテキスト由来欠陥に当たる欠陥の有無を検証 • 考察:プロダクトコンテキストによって誘発される欠陥は、実際に存在するか? • 該当する欠陥が存在しないものもあったが、それ以外は実際に欠陥が存在することを 確認できた ▹ 「他の製品・システムからの画面遷移がある」は該当する欠陥なし → 今回対象としたプロダクトでは他の製品・システムからの遷移がなかった ▹ 「同じ製品だが仕向けやモデルや実行環境ごとに仕様が異なる」「他の製品・システムからの画面 遷移がある」「ビジネスルール・ロジックなど、ドメイン知識が必要」は「漏れ」の欠陥なし → 考慮はするが知識不足等から誤りが起こりやすい可能性がある • 「条件が多い・条件が複雑」「状態が多い」に該当する欠陥は数が多かった(36件中17件) ▹ 早期検出や未然防止できると手戻り工数の削減につながる 18
  20. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ④コンテキスト由来欠陥への対策案を検討 • 未然防止の方法、仕様レビュー・テストによる検出の方法を 検討 19 コンテキスト由来欠陥 未然防止 仕様レビューによる検出 テストによる検出 条件の組み合わせの 考慮漏れ・未記載 デシジョンテーブルなどを 作成して条件の組み合わせ を整理し、考慮漏れを防ぐ。 デシジョンテーブルなどを作 成して条件の組み合わせを洗 い出し、必要な組み合わせに 対して網羅的に仕様が定義さ れているかレビューする。 デシジョンテーブルなど を作成して条件の組み合 わせを洗い出してテスト する。 条件の間での矛盾 条件を減らして矛盾が起こ りにくくする。減らせない 場合、形式言語など、矛盾 が生じない表現形式で表現 する。 類似の条件に関する仕様同士 を突き合わせて、矛盾がない かレビューする。 類似の条件に関するテス トは、同じ担当者が連続 して実施するようにする。 ・ ・ ・ ※表の全体は後ろのページに掲載
  21. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す ④コンテキスト由来欠陥への対策案を検討 • 考察:プロダクトコンテキストから欠陥を予測して検出・対策できるか? • まず、対象のプロダクトで該当するコンテキストを特定できるか? → コンテキストによっては一意に判断可能(複数の仕向けがある、など) ▹判断が難しいものの判断基準は今後検討が必要(条件が多い、状態が多い、など) • 次に、プロダクトコンテキストに誘発された欠陥を検出・対策できるか? → 検討した対策案に基づき欠陥検出・対策が可能かは今後確認していく 20
  22. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す まとめと今後の課題 • まとめ ▹欠陥を誘発しやすいプロダクトコンテキストを整理した ▹コンテキスト由来欠陥の一般性を検証した ▹コンテキスト由来欠陥の未然防止・検出のための対策案を検討した • 今後の課題 ▹対象プロダクトがどのコンテキストに該当するかの判断基準の明確化 ▹未然防止・検出の対策を行った場合の効果の確認 21
  23. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す Appendix:コンテキスト由来欠陥への対策案 22 コンテキスト由来欠陥 対策(仕様定義段階での未然防止) 対策(仕様レビューによる検出) 対策(テストによる検出) 条件の組み合わせの考慮漏れ・未記載 デシジョンテーブルなどを作成して条件の組み合わせを整理し、 考慮漏れを防ぐ。 デシジョンテーブルなどを作成して条件の組み合わせを洗い出し、 必要な組み合わせに対して網羅的に仕様が定義されているかレ ビューする。 デシジョンテーブルなどを作成して条件の組み合わせを洗い出し てテストする。 条件の間での矛盾 条件を減らして、矛盾が起こりにくくする。減らせない場合、形式 言語など、矛盾が生じない表現形式で表現する 類似の条件に関する仕様同士を突き合わせて、矛盾がないかレ ビューする。 類似の条件に関するテストは、同じ担当者が連続して実施する ようにする。 増やした条件の記載漏れ 条件を増やすことを議事録やTODOリストなどに記録して、記載 したかどうかをチェックできるようにする。 条件を増やすことを議論・決定した場に参加していた人に、レ ビューをお願いする。 テスト担当者も仕様の議論の場に参加し、増やすことになった条 件はテストに反映する。 増やした条件と、既存の条件や機能との矛盾 既存の条件や機能をドキュメント化して、条件を増やす場合に 一通りの既存部分と突き合わせてチェックする。 既存の条件や機能に詳しい人にレビューをお願いする。 増やした条件と、既存の条件や機能を組み合わせてテストする。 状態ごとの振る舞いや状態遷移の考慮漏れ・未 記載 状態遷移図や状態遷移表を作成して、状態遷移の考慮漏れ を防ぐ。 状態遷移図や状態遷移表を作成して、状態遷移がすべて定義 されているかチェックする。 状態遷移テストで状態遷移を網羅的にテストする。機能の振る 舞いをテストする際に、状態と組み合わせてテストする。 状態の認識を誤っている 各状態の呼び名と定義をドキュメント化して、定義した状態名の み使うようにする。 レビューアが理解した状態遷移を、仕様と別の表現形式で表現 し、認識違いがないかを仕様作成者がチェックする。 テスト担当者が理解した状態遷移に基づいてテストケースを作 成し、認識違いがないかを仕様作成者がチェックする。 仕向け条件考慮せず 仕向けごとの仕様の違いをドキュメント化してチェックできるように する。 仕向けごとの仕様の違いに詳しい人にレビューをお願いする。 仕向けごとの仕様の違いに詳しい人にテストをお願いする。 振る舞いの矛盾 仕向けごとの仕様の違いを減らして、矛盾が起こりにくくする。減 らせない場合、形式言語など、矛盾が生じない表現形式で表現 する 仕向け独自の仕様と、それ以外の部分の仕様を突き合わせて、 矛盾がないかレビューする。 仕向け独自の機能と、それ以外の機能を組み合わせてテストす る。 言語ごとに異なる仕様や、画面レイアウトの未記 載 言語ごとの違いをドキュメント化してチェックできるようにする。 言語ごとの違いに詳しい人にレビューをお願いする。 言語ごとの違いに詳しい人にテストをお願いする。 言語ごとの表示する内容の不一致 他言語に翻訳しやすい平易な表現を使う。 対象の言語に詳しい人・得意な人にレビューをお願いする。 各言語で表示している内容が同じ内容を表しているか、テストす る。 制限事項の未記載 製品やシステムの状態の一覧を作成し、状態とハードウェアキー の組み合わせごとに制限の要・不要を定義する。 製品やシステムの状態の一覧を作成し、状態とハードウェアキー の組み合わせごとに制限の要・不要が定義されているかチェックす る。 製品やシステムの状態ごとにすべてのハードウェアキーを操作する テストを行う。 キー押下時の共通仕様と、個別の機能の仕様 の矛盾 キー押下時の共通仕様を先に定義し、個別の機能の仕様を定 義する際にチェックできるようにする。 キー押下時の共通仕様と、個別の機能の仕様を突き合わせて レビューする。 テストケースの期待結果を作成する際に、キー押下時の共通仕 様と個別の機能の仕様の両方を見ながら作成する。 遷移元の未記載 画面遷移図を作成して、画面遷移の考慮漏れを防ぐ。 画面遷移図を作成して、ありえる画面遷移がすべて定義されて いるかレビューする。 画面遷移のテストを作成する際に、遷移元から遷移する手順を 具体的に記載する。 他の製品の画面遷移仕様との矛盾 他の製品の画面遷移仕様をドキュメント化してチェックできるよう にする。 連携する他の製品・システムの仕様に詳しい人にレビューをお願 いする。 テスト用に他の製品・システムを用意し、実際に連携して画面遷 移のテストを行う。 COTS(既製品)の動作が想定外の場合の 仕様の考慮漏れ・未記載 利用する既製品が想定外の動作をする前提で、仕様を定義す る。 既製品との連携に関する仕様をレビューする際に、想定外の動 作時のエラー処理が定義されているか確認する。 既製品の想定外の動作をエミュレートし、その際のテスト対象の 動作をテストする。 他の製品のエラー時動作との矛盾 利用する既製品のエラー仕様をドキュメント化してチェックできる ようにする。 利用する既製品のエラー仕様に詳しい人にレビューをお願いす る。 テスト用に既製品を用意し、実際にエラーを起こしてテストを行 う。 ビジネスルール・ロジックの考慮漏れ・未記載 ビジネスルールなどのドメイン知識をドキュメント化してチェックでき るようにする。 ビジネスルールなどのドメイン知識に詳しい人にレビューをお願い する。 テスト対象の製品やシステムの利用シーンを想定してシナリオテ ストを行い、必要なビジネスルール・ロジックが盛り込まれているか 確認する。 ビジネスルール・ロジックとの矛盾 ビジネスルール・ロジックを減らしたり単純化して、矛盾が起こりにく くする。それができない場合、形式言語など、矛盾が生じない表 現形式で表現する ビジネスルール・ロジックのドキュメントと仕様を突き合わせて、矛 盾がないかレビューする。 テスト対象の製品やシステムの利用シーンを想定してシナリオテ ストを行い、ビジネスルール・ロジックと矛盾なく利用できるか確認 する。
  24. ©︎ 2023 VERISERVE CORP。 会 社 名 ・ 製 品

    名 ・ サ − ビ ス 名 は 、 各 社 の 商 標 登 録 で す 株式会社ベリサーブ 研究企画開発部 谷﨑 浩一 < [email protected] > 東京都千代田区神田三崎町3-1-16 神保町北東急ビル 9F ベリサーブ 検索