Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AI駆動の自動テスト生成
Search
Takashi Machinaga
May 15, 2025
Technology
1
150
AI駆動の自動テスト生成
AI ×フロントエンド開発のリアル(2025-05-15)
Takashi Machinaga
May 15, 2025
Tweet
Share
More Decks by Takashi Machinaga
See All by Takashi Machinaga
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
4
1.7k
事業モメンタムを生み出すプロダクト開発
macchiitaka
1
220
What is Standard Schema?
macchiitaka
0
150
Other Decks in Technology
See All in Technology
Greatest Disaster Hits in Web Performance
guaca
0
330
プロポーザルに込める段取り八分
shoheimitani
1
770
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
540
StrandsAgentsで構築したAIエージェントにMCP Apps機能を追加してみた
kmiya84377
0
120
Agile Leadership Summit Keynote 2026
m_seki
1
730
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
8
680
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
1
1k
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
160
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
140
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
290
Agent Skils
dip_tech
PRO
0
160
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
140
Discover your Explorer Soul
emna__ayadi
2
1.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
950
Marketing to machines
jonoalderson
1
4.9k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Transcript
AI駆動の⾃動テスト⽣成 2025-05-15 株式会社IVRy(アイブリー) 町永 隆 @macchiitaka
⾃⼰紹介 • @macchiitaka • 2024年8⽉ IVRy に⼊社 • 主にWebフロントエンドの機能開発 町永
隆(Takashi Machinaga) 2 ソフトウェアエンジニア
IVRyとは?
電話⾃動応答サービスIVRy 電話AI SaaS IVRy(アイブリー)は、 ⽉額2,980円からカスタム電話をカンタンに作成できるサービス。 全ての電話業務を誰でもすぐにAIを使って効率化できます
テストを AI に⽣成してほしい • ⾃社のプロダクト開発の中でのトライ&エラーの話 • 初期からある Web フロントエンドのリポジトリ •
ビジネス優先で開発してきた • リファクタリングをしたい • しかしテストがほぼない • リファクタリングは、プログラムの動作を 変えずに、内部の構造を整理‧改善する作業 • つまりテストとセット • Copilot & Cursor & Devin
静的解析
• AI のため…ではなく元々は⾃分たちのコード品質向上のために強化していた • AI Agent と静的解析の親和性が⾼い • AI の制御にも活⽤できる
• AI Agent は暴⾛する • 適切なフィードバックを与えないと明後⽇の⽅向にコードを変更する • ガードレール(=ルール)が必要 • 確率で動く AI に対して、従来のルールベースの静的解析ツールで制御 静的解析
静的解析 1. TypeScript a. tsconfig/bases 2. ESLint a. bulk suppressions
(v9.24.0) i. AI に disable コメントを真似させない b. スタイルに関するルールも有効にする i. 特に Auto Fixable なルールは積極的に有効に ii. 表記の統⼀(prd, prod, pro…)
ルールの変更も AI にやってもらった
プロンプトを頑張らない • 最初は Cursor で⼿元で実⾏ • 簡単なプロンプトで完了すればラッキー🎉🎉🎉 • だいたいはうまくいかない •
テスト⽣成の「最初」と「最後」に介⼊する • 「最初」に介⼊するパターン ◦ Pull Request やコミット途中まで作成して、続きの作業をしてもらう ◦ = リファレンス実装 ◦ ⾃然⾔語でプロンプトを書くよりも簡単 & ⾼精度
プロンプトを頑張らない • 「最後」に介⼊するパターン ◦ ⼈間相⼿のアンチパターンが AI なら許される ◦ 「あとは俺がやる」 ◦
AI と仕事をしているといままで PR は以下にコード以外に思考を回してい たか気付かされる ◦ 癖になって⼈間相⼿にやらないように気をつけよう • 次回以降は成功した Pull Request を参照させる ◦ 精度が上がるまでは Cursor ◦ 精度が上がってからは Devin で並列実⾏
プロンプトを頑張らないコツ
無限にお⾦があったら • なぜプロンプトを頑張りたくなるのか? ◦ 従量課⾦だから成功率を上げたくなる ◦ 定額だったら使わないと損 ◦ もし5000兆円あったら…? •
⽯油王の気持ちで AI を使う • 同じプロンプトで複数回実⾏する ◦ 当たるまで繰り返す(ガチャ) • ちなみに IVRy 社内でもっとも Devin を使った ◦ マージ率ももっとも⾼かった
「あなたはアラブの⽯油王です」
ユニットテスト
テスト環境 • Vitest ◦ jsdom + Testing Library ◦ Browser
Mode ▪ Chromium ▪ Firefox ▪ WebKit
悩み①:モックサーバー • vi.spyOn、vi.mock を使いたがる ◦ 関数、モジュールレベルをモックすると、実装に依存したテストになる ◦ msw を使ったモックサーバーを利⽤してほしい ◦
しかし、このモックサーバーの⽣成精度が低い • ⾃動⽣成された API クライアントをリポジトリに含めた ◦ OpenAPI を利⽤したスキーマ駆動開発を採⽤している ◦ ⾃動⽣成ファイルはリポジトリから除外していた ◦ これと⽣成元の OpenAPI の定義ファイルを含めた ◦ モックサーバーの⽣成精度が向上 🎉🎉
悩み②:テストケース • 実装に依存したテストを⽣成しがち ◦ 実装に依存すると変更に弱いテストになる ◦ ユーザーが操作するようにテストしたい • it.todo でテストケースだけ作成する
◦ テストケース作成と⾃動テスト実装を別ステップにする ◦ テストファイルは縦に⻑くなりがち ▪ テストケースだけなら出⼒が速い ◦ 場合によっては最初の数ケースをエンジニアが定義する(最初に介⼊)
悩み②:テストケース • ゼロからテストケースを作成するより圧倒的に楽 • AI が⾃ら定義したテストケースは⾼精度で書ける • ただし、エンジニアが介⼊したテストケースのミス率は相対的に⾼い • ⽣成後、テストカバレッジを渡してテストを網羅的に書かせる
• ただしカバレッジが⾼い=良いテストケースではない • 品質は⼈間が担保する
• リファクタリング前に捨てる前提のテストを作成する • テストがグリーンであればいい • テスト品質は問わない ◦ 実装に依存したテストでもいい • 既存の機能が変わっていないことを(多少なりとも)保証してもらう
AI 特有のテスト
現在地点
ジュニアエンジニアとのペアプロ • ⼈間にとって簡単なタスクは AI にとっても簡単 • ⼈間にとって難しいタスクは AI にとっても難しい •
簡単だけど⼿数な必要な作業を AI にやってほしい • どれだけ構造化されたコードベースにできるか • どれだけ簡単なタスクに分割できるか • フロントエンドは⽐較的は細かい作業の連続 • ジュニアエンジニアとのペアプロしてきたメソッドが役に⽴った • 副作⽤として Good First Issue が枯渇する
現時点の付き合い⽅ • ゴールを定めにそこにどう導くか • 宣⾔的 UI と同じ • AI は意思決定をしてくれない
• 考えることまで任せない • 最終的な完成物の責任は⾃分にある
https://ivry-jp.notion.site/IVRy-127eea80adae801397a4e4d7ea74e291