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

自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性

 自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性

More Decks by Masahiko Funaki(舟木 将彦)

Other Decks in Programming

Transcript

  1. これは他人事ではない:mabl開発現場のリアルな数字 • mablの開発現場: 25名のエンジニアが100以上のリポジトリをま たがって開発 • インフラ系リポジトリ: 6割のコミットがAIによるサポート • アプリ系リポジトリ:

    10→39% 月230件→370件以上のプルリクが行き交う しかし、この加速の裏で ーテストは同じスピードで回っていただろうか? AIによるPRサポート比率 (2025/8→2026/2) ※mabl社内の分類基準による
  2. 組織が直面する「2つの壁」 壁①: テストは作れるが 誰もメンテナンスしない 壁②: 自動化したはずなのに 手作業が減らない 画面の変更やリファクタリングで 要素名・属性値が変わり、 識別のためのコンテキストが失われる。

    テストの実行と、実行時のログ収集は 自動化された。 テストは静かに壊れ、CIが赤くなっても、 追う人がいない。 しかし、原因分析も、テストの修正も、 コードの修正も、結局人間が引き受けている。 それなら、コーディングエージェント(Claude CodeやGitHub Copilot)にテストも書かせればいい -そう思うのは自然ですが、そこに罠があることを数多く見てきました。
  3. 「つくる」と「検査する」、求められる視点は根本的に違う つくる=コーディングエージェント 検査する=テストエージェント ゴールは「動くコードを早く届ける」こと。 ゴールは「ユーザーの一連の操作が 本当に正しく動くか」を疑うこと。 公開されたコードやパターンから学習し、 コードを提案すること自体は、何の問題もない。 しかし、そのコードが実際に動くアプリケーシ ョン固有のコンテキストーログイン後の画面で

    何が起きるかーまでは知らない。 CIにおいては「ビルドが通った/テストが緑」 という自動的な合否シグナルがある。 しかし、アプリケーションの動作には、 そうした自動判定の仕組みが存在しない。 だからこそ mabl は、そのアプリ固有のコンテキストを補うために、 過去のテストやテスト結果を参照しながら、テストを作成している。 Gartnerも同じ結論に達している。コーディングエージェントは開発フェーズに特化した設計だが、 テストフェーズに「対応はできるが特化していない」—テスト専用エージェントの例として、mablの名前が挙がっている。
  4. テスト作成:mabl Agentによるテスト生成 自然言語でテスト作成に対応。 クリック、ドロップダウン選択、日付選択、条件 分岐、MFAログイン、アクセシビリティチェック、 PDF検証まで、幅広いWeb操作をカバーする。 クラウドでの並列実行(最大10セッション同時)、 あるいはローカルでのヘッドレス実行を選択可能。 クラウドが届かないlocalhostのようなプライベー ト環境でも作成できる。

    mabl MCP経由で、Claude CodeやCursor、Kiro のようなAIコーディングエージェントからも テストの生成、実行、分析などが可能。 単にプロンプトだけでテストを作成しているので はなく、これまでに作成したテストや、過去の実 行結果(スクリーンショット、DOMスナップシ ョット、ネットワークログ、パフォーマンスロ グ)を参照しながらテストを作成します。 その際に、共通部分は自動的に切り出され、再利 用されます。 したがって、テストの生成精度と速度は、使えば 使うほど高まっていきます。
  5. テスト作成:ビジュアルアサーション 従来の検証は、画面上の「文字」「数値」が正 しいかという「点」の確認にとどまっていまし た。 ビジュアルアサーションは、グラフのような 非文字情報も含めて、UIの特定領域(面)の 文脈的な妥当性を検証することができます。 初回テスト時にAIが判定基準を自動生成し、後 から編集・再生成も可能です。 チェックできる内容はこれらにとどまりません。

    「技術的には正しく実装されているが、利用者の観 点からは望ましくない」動作——たとえば商品名と 写真の不一致や、法令・コンプライアンス上の表示 チェック——にも踏み込んだテストが可能です。 つまり、これからのQAは、 「アプリのふるまい・ユーザー体験はこうあるべき、 こうあってはならない」を見極める、 PM的な視野で 「品質をデザインする」 →自動テストに落とし込むことが必要となります。
  6. テスト実行:自動修復 / ビジュアル検索 / エージェント実行時リカバリ 要素レベル:自動修復 DOM属性の最良マッチに加え、意味的な 類似性をAIが判定します。 確信度が低ければ、ビジュアル検索↓を 適用します。

    視覚レベル:ビジュアル検索 DOM属性に頼らず、スクリーンショット の見た目でクリック位置を特定できます。 canvasやPDF、地図のような属性の乏し い要素にも対応が可能です。 エージェント実行時リカバリ- 想定外のモーダルやページネーション、 残ったフィルターなど、実行時の想定外 に対処して、「テストを最後まで何とか 実行する」ことで、「テストシナリオの 中のチェック項目のどこまでできたか」 ではなく、「チェック項目の何がOK/NG なのか」を早期に確定します。 ただし、テストの意図に照らして「これ は本質的な失敗だ」と判断すれば、無理 に回復しようとはしない。
  7. mablが辿り着いた4層アーキテクチャ 1. リポジトリ横断基盤 2. スキル基盤 LLMは本来、依存関係を一望できるモノリポ的な世界の方 が精度を発揮しやすい。しかし既存の100以上のリポジト リ構成を捨てる必要はない。ルールと依存関係グラフ (850行以上、79リポジトリ)を「横断基盤」として整 備することで、モノリポ化せずとも、複数リポジトリをま

    たぐ文脈をAIが把握できるようにした。 Claude Codeの「スキル」を個人のローカル環境に閉じ ず、チームで管理・共有する仕組み(MCPサーバー+36 以上のスキル)を構築。これにより、AI活用の恩恵は「使 い方がうまい一部の個人」の生産性向上にとどまらず、チ ーム全体の生産性向上につながる。 3. 運用とガバナンス 4. 人間による承認 AIコードレビューは、コーディング規約違反や既知のバグ パターンなど「機械的に判定できるチェック」を自動化し、 差し戻しで効率化を担う。一方「承認」は構造的に行わせ ない。連続する自動修正が続けば自動停止する仕組みも備 え、AIが自分にOKを出す事態を防いでいる。 AIによる大量PR生成は、開発現場全体で今や共通の悩み になっている。規約違反や重複コードのチェックはAIに任 せ、「このPRは本当にビジネス要件を満たしているか」 という最終判断だけは、常に人間が行う。
  8. 品質責任の設計図:4フェーズパイプライン 1. 分析 2. 計画 チケットと関連リポジトリ・過去のgit履歴を調査し、技 術サマリと疑問点をJiraに投稿。ここで確信度が低ければ 「claude-blocked」ラベルを付けて人間の回答を待ち、 無理に前進しない。 具体的なファイルパス・APIエンドポイント・テストケー

    スまで含めて実装計画を立てる。ここまで具体化してから コードを書くことで、実装フェーズの失敗率が約60%減 少した。 3. 実装 4. レビュー コードを書き、ローカルでテストを実行してPRを提出。 ここまでの確信度がどれだけ高くても、実装フェーズだけ は常に「低確信度」として扱われる——つまり自動でマー ジされる可能性は設計上ゼロになっている。 AIコードレビューとauto-fixエージェントがPRを整形し、 規約違反や重複コードを検出する。しかし承認・マージの 権限は与えられていない。最後にPRを見て意思決定する のは、常に人間である。
  9. 品質指標はどう変わったか 従来の指標 • テストケース数:いくつのテストを書いた か、という「量」の指標 • カバレッジ率:コードのどれだけをテスト が網羅しているか、という「範囲」の指標 mablが実際に使っている指標 •

    コンテキストドリフト率:AIがリポジトリ 間の依存関係を見失う頻度(リポジトリ横 断基盤の導入で40%→5%未満に改善) • 計画フェーズによる実装失敗率の削減: 計画フェーズを挟むことで、実装の手戻り をどれだけ減らせたか • API誤解の検出率:AIが古い・存在しない APIを使おうとした際、レビューで発見でき た割合
  10. 開発生産性を「アウトカム」で測る PR 732件(+291%) PR 291件 PR 約700件 PR 370件以上 PR

    230件 2025 8月 10月 2026/1 2月 3月 39%(インフラ系60%) 17% AI支援コミット 10% 2026 転換点 直近90日 PR数 2.5倍 70%