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

AIによるソフトウェア品質保証の現在地点とこれから

Avatar for Autify Autify
March 28, 2025

 AIによるソフトウェア品質保証の現在地点とこれから

Avatar for Autify

Autify

March 28, 2025
Tweet

More Decks by Autify

Other Decks in Technology

Transcript

  1. スピーカー紹介 石川 冬樹 国立情報学研究所 松浦 隼人 Autify Genesis プロダクトマネージャー 守屋

    敬太 Autify NoCode プロダクトマネージャー 末村 拓也 Autify 品質エバンジェリスト モデレーター
  2. 背景共有(石川): AI4QA(学術、基礎・原則の視点) 石川の立場 • 先端の論文把握・先端の研究(AI・自動運転のためのテスト自動生成、形式手法など) • トップエスイー、日科技連SQiPなどで現場の技術者との議論・実践研究 • 企業との共同研究(LLM/AIの活用に関する活動要請は増え続けている) →

    石川視点での現状の感覚 • LLM自体とその活用手段の先端はかなり速く進化 • テスト支援の学術研究も高度なものから実証評価まで多数 • LLMベースのAIは「それなりに動くもの」を簡単に作れる → 学術研究に依存せず個人・企業での取り組みが速い(or 二極化している?) → 評価の難しさ・コストが高く、評価・改善のサイクル(LLMOps)確立が課題? 前提メモ:大規模言語モデル (LLM) に 基づくGPT/ChatGPTなどの対話型生成AI で新たにできるようになったことを みんな議論しているはず ※ 以降の資料はJaSST’24 Tokai 資料より抜粋(石川のSpeaker Deck上にあり)
  3. 背景共有(石川):学術研究のごくごく一例 画面やこれまでのテスト内容を説明するAIと、それを 受けて次のアクションを決めるAIの 掛け合いでアプリの自動探索テスト [ Liu+, ICSE’24 ] バグレポート内の再現手順を、形式化し 知識グラフとして構造化する

    (そうすれば統計分析、類似検索、 テスト生成などは簡単にできる) [ Su+, ICSE’24 ] 画像認識AIが間違えそうな状況をLLMが検討、 画像生成AIを使って実際にテスト、結果を 踏まえてLLMが再検討という探索的テスト [ 鳥越+, FOSE’24 ]
  4. • 一通りのタスクが何でもできる ◦ ただし,LLMだけにやらせる・End-to-Endでやらせればよいとは限らない • 不定型・不完全なものでも「常識」でさばいてくれる → 必要な準備・適用の前提が低く、今までのAIと違うことができる ◦ データのフォーマット・スキーマなどの統一・形式化や,

    大量データを用いた事前訓練などが(従来よりは)なくてもよい ◦ 日本語における言葉・言い回しのぶれを苦にしない ◦ 明文化していないことも,一般的な「常識」なら補完してくれる ◦ 構造化・形式化されたデータを扱う従来技術にもつなげられる 背景共有(石川): LLM・対話型生成 AIによる支援の特徴
  5. • タスク特化のアルゴリズム ◦ 例:All-Pair制約と禁則条件を満たす組み合わせテストスイートの生成 • モデルを前提とした手法 ◦ 例:状態遷移モデルから特定のカバレッジ条件を満たすテストスイートの生成 • 論理推論を活用した技術

    ◦ 例:特定パスを通す・カバレッジを上げるテスト入力の生成 • 従来の機械学習型AI(タスクに特化した訓練を実施) ◦ 例:画面の画像から構成部品の自動抽出 • 進化計算・強化学習など探索・最適化技術の活用 ◦ 例:カバレッジなどテスト目的に応じたテストスイートの探索(EvoSuite, Sapienzなど) ◦ 例:スマホアプリの強化学習による自動テスト 背景共有(石川):これまでのテスト技術も強力!
  6. • 既存技術が求める定型入力の作成をLLMに支援させる ◦ 例:UMLなど厳密な文法でのモデルを作る • 既存技術の出力をLLMに修正させる ◦ 例:カバレッジは上がるが不自然だったり読みづらかったりするテストコードを修正する • 既存技術の出力をLLMに説明させる

    ◦ 例:機械的な出力を要約させる・ステークホルダー向けに言い換えさせる • LLMによる生成を探索的・進化的に行う ◦ 例:プロンプトも自動で変えつつ,誤り・不足を減らしていく → 多様なポテンシャルがある! ※ 一方で推論モデル・エージェント(問題分割や検証と再試行を繰り返すなど)による タスク遂行能力もかなり進化、それで大半のタスクは済むという説も? 問いかけ(石川): LLM+既存技術の様々なポテンシャル
  7. • プロンプトと入出力を模索して「やらせてみる」のは簡単 ◦ これはスピード勝負,うだうだ言わずに試した方がよい ◦ 「人間が確認し必要に応じて修正してね」と言うのは簡単 → 評価・改善のサイクルを繰り返せるのか?? → 『「テストのためのLLM/AI」のためのテスト』が必要!!

    ◦ 「AIがテストを生成します」の一言で済むわけがない ◦ 何をもって「よいテストが作れた」「十分なテスト能力を持つ」と見なす? ◦ 評価ベンチマークの準備が高コスト ◦ カバレッジなどの数値指標を超えて、人間らしい「よさ」を追及する場合、評価が大変 ◦ これらは「LLM/AIのテスト」で活発に議論されている話題: LLM-as-a-Judge, LLMOps などなど 問いかけ(石川):継続的な評価・改善に向けて
  8. Autify Genesisの入力と出力 テスト対象の振る舞いが 書かれた文書 • 仕様書 (概要設計書、外部設計書など) • バグチケット •

    操作マニュアル 入力 テストシナリオ (何をどうテストするか ) 自動テストコード (Playwright 及び Autify Next) 出力
  9. Genesisが得意とするソフトウェアテストのレベル 単体テスト 結合テスト システムテスト E2Eテスト (受け入れテスト ) コードの振る舞い に対するテスト  →

    コードと同じプロセスで書ける システムの振る舞い に対するテスト  → コードは直接参考にできない
  10. • 出力に関する疑問 ◦ テストシナリオ ▪ カバレッジは十分なのか、適切なテスト手法を利用できているか ▪ テスト観点が網羅されているか ◦ テストコード

    ▪ 意図した通りにテストを行うコードになっているか ▪ メンテナンスしやすいコードになっているか ▪ ユーザへの質問の数は最小化されているか Genesisにおける課題 = 人間とAIとのスムーズな協働 明確な答えがない中での品質保証