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

AIを使っていい感じにE2Eテストを書けるようになるまで / Trying to Write ...

AIを使っていい感じにE2Eテストを書けるようになるまで / Trying to Write Good E2E Tests with AI

2025/07/22 に開催された QA活動におけるAIの利活用をシェアしよう! での発表資料です。

以前投稿した 同タイトルのnoteの記事 と補完関係にあります。

Avatar for Akihiro Yokota

Akihiro Yokota

July 22, 2025
Tweet

More Decks by Akihiro Yokota

Other Decks in Technology

Transcript

  1. © Scalebase Inc. 1. ⾃⼰紹介 & 会社紹介 2. 前提のすり合わせ 3.

    今回のお題 4. 試⾏錯誤 Day 1 5. 試⾏錯誤 Day 2 6. 試⾏錯誤 Day 3 7. Extra Day 8. まとめ ⽬次
  2. © Scalebase Inc. はじめに ⾃⼰紹介 あきさん(Akihiro YOKOTA) • Scalebase株式会社 QAエンジニア

    • X: @katawara 名刺管理の会社でバックエンドエンジニアやEMを経 て、QAチームの⽴ち上げから、全社横断のQA組織を作 るまでを経験。 2023年にScalebase株式会社(旧‧アルプ株式会社) に⼊社。社内唯⼀のQAエンジニアとしてできることは 何かを⽇々模索する。
  3. © Scalebase Inc. サブスクリプションビジネスにおける主な課題 成⻑の先にある販売管理業務の複雑性 • ユーザー数の増加や提供プランの多様化といった サブスクリプションモデル特有の課題 • 料⾦体系の複雑化(⽇割、請求サイクル、利⽤量

    に応じた従量課⾦)、アップ/ダウンセル、割引‧ キャンペーン適⽤などが発⽣ • 「契約期間」というサブスクリプションビジネス 特有の概念での管理の必要性 既存の仕組みでは乗り越えられない壁 • 請求計算ミスや売上計上漏れのリスク増⼤、これ による顧客不満や機会損失 • 新しいプランやモデルを試したい時に、システム 側の制約で迅速に実⾏できない • サブスクリプションビジネス特有の重要指標が正 確に把握できない • 業務プロセスごとにシステムが分断され、データ ドリブンな意思決定につなげられない 業務⼯数の増加 属⼈化 請求ミスの リスク 事業成⻑への ブレーキ データ管理の ⼀元化
  4. © Scalebase Inc. ⼿動テスト ローコードテスト ⼿動テスト‧ローコードテスト‧コードベーステストを場⾯に応じて使い分け Scalebaseのテストの構成 コードベーステスト • 他社サービスとの連携が必要なテス

    トを主戦場とする • コードベースで実装すると⼤変なも の(メール受信など)でも活⽤ • 新規開発で作ったものに対して実施 • ⾃社内で完結できるテストはこちら を優先的に検討 • ハッピーパスを中⼼に、マイナーな 操作でテストを忘れがちなシナリオ までをカバー
  5. © Scalebase Inc. • 今回のお話は、2025年5⽉末に⾃分のnoteに書いた「 AIを使って いい感じにE2Eテストを書けるようになるまで 」という記事での お話をベースにしています。 •

    投稿から2ヶ⽉弱前(かつ、取り組み⾃体はさらにその前)の話 なので、少し古くなっている部分もあるかと思いますがご容赦く ださい。 • 今同じことをやろうとしたら、全く違う選択をした可能性があり ます。そのあたりは当時のスナップショットとしてご覧いただけ ますと幸いです。 おことわり 🙇
  6. © Scalebase Inc. • ⾔語: TypeScript • テストフレームワーク: Playwright •

    エディタ: Visual Studio Code • エージェント‧モデル: GitHub Copilot x Claude 3.7 Sonnet • MCP: GitHub, Playwright 基本的には、社内で使えるものだけを選んで、将来的に社内の誰でもが実⾏できる状態を作れるように配慮した 当時の環境について
  7. © Scalebase Inc. • Cursorの無料枠を使って、テストコードを書かせてみる ◦ とにかく⾃分は⼿を出さずに、⼝だけ出す ◦ ペアプロで⾔うところのナビゲーターに徹する感覚 •

    先⾏事例の記事も参考にしつつ、まずはやってみる ◦ ⼀回極端に振り切ってみて、体験知を積み上げることもきっと⼤事と判断 AIに全部やらせてみる
  8. © Scalebase Inc. • 4時間くらいかかって、1つのシナリオも完成させられず、無料枠を全部使い切ってしまう • 結構細かいことにも⼝出しし続けてしまった • その上、そういったことは⾔語化するのがちょっと⾯倒 •

    それくらいだったら⾔葉にするより⾃分で直すわ、みたいな気持ちをぐっとこらえる場⾯もちらほら • こだわりみたいなものが出てしまったかもしれないが、まずは動くものを⽬指したほうがよかったかも • まったくVibe Codingできない‧‧‧ 結果 😭
  9. © Scalebase Inc. • 初⼿をAIに実装してもらい、残りを⼈間が担当する ◦ ペアプロで⾔うところのドライバーを途中で交代する感覚 ◦ 初⼿のアウトプットは、どうであれとりあえず受け⼊れてコミットするという⽅針転換もした •

    だいたい動きそうなところまでAIに書いてもらって、実際に動かしてみてうまく動かなかった部分の反映だった り、細かいところの詰めだったりを⼈間が書く ◦ AIは書き終わったあと、テストの実⾏コマンドを出してくるけど、それはいったん全部無視 AIと⼈間で分担する
  10. © Scalebase Inc. • まあまあ悪くない • ⼤量の⼊⼒項⽬とか、⼿でやると⾯倒な部分もさくっと実装してくれるので、楽な部分はあった • ⾃分の知らない書き⽅で実装してくることもあり、実装の最適解を模索することもできた •

    とはいえ、結構直している ◦ ライブラリ的にはもう⾮推奨になっているメソッドを平気で使ってきたり ◦ ⼈間向けの読みやすさや保守のしやすさ、みたいなものには無頓着だったり • 仕事は早いが雑、という感想に⾄る • まだVibe Codingしきれてない 結果 🙂
  11. © Scalebase Inc. • チーム固有のコンテキストをまとめたドキュメントファイルのことで、設定しておくと、エージェントが動作 するときにその内容を踏まえた結果を⽣成してくれるようになる仕組みのこと • たとえば、こういうものを書いておくと良いらしい ◦ そのリポジトリの⽬的‧役割

    ◦ 技術スタック ◦ ディレクトリ構成 ◦ よく使うコマンド ◦ 環境設定のやり⽅ ◦ コーディング規約 ◦ 望ましいコミュニケーションスタイル ◦ レビュー⽅針 ◦ などなど(ほしいものをAI⾃体に聞いてしまい、それを書いていくというのも⼿) 参考: カスタムインストラクションとは
  12. © Scalebase Inc. • 精度がめっちゃ上がった • 「とにかくテストを書く」から、「いい感じにテストを書く」に進化した瞬間 • 修正も軽微で終わって、実装にかかる時間は減ったし、体験も良い •

    ものによっては、そのまま運⽤に回してもほぼ差し⽀えなかった • これなら誰か別の⼈が対応することになってもうまく回していけそう • そろそろVibe Codingしてもいい、か‧‧‧? 🥳 結果
  13. © Scalebase Inc. リポジトリのルートに .github/copilot-instructions.md を⽤意して、そこに記述 する リポジトリのルートに .cursor/rules/**.mdc を⽤意して、そこに記述する(複数ファ

    イルも可) ※ いずれ使えなくなりそうだけど、リポジトリのルートに .cursorrules を⽤意して、そこ に記述するという⽅法もある GitHub Copilot, Cursor, Claude Code、それぞれでインストラクションの書き⽅が違う GitHub Copilot Cursor Claude Code リポジトリのルートに CLAUDE.md を⽤意して、そこに記述する エージェントによってインストラクションがバラバラ問題
  14. © Scalebase Inc. • CTOがエンジニアにコーディング禁⽌というお触れを出した|松本和⾼ | EXPLAZA ◦ https://note.com/_mkazutaka/n/n43d3c91ac6b7 •

    Figma禁⽌!⽣成AIだけでプロダクトデザインやってみた|azshi ◦ https://note.com/btm2971/n/naffae8ccf6c2 • GitHub Copilot のリポジトリ カスタム命令を追加する - GitHub Docs ◦ https://docs.github.com/ja/copilot/how-tos/custom-instructions/adding-repository-custom-instruc tions-for-github-copilot • Cursor ‒ Rules ◦ https://docs.cursor.com/context/rules • Manage Claude's memory - Anthropic ◦ https://docs.anthropic.com/en/docs/claude-code/memory 参考⽂献、URL等
  15. © Scalebase Inc. • AIを使っていい感じにE2Eテストを書けるようになるまで|Akihiro Yokota(今回の元ネタ) ◦ https://note.com/yokota_alp/n/na1de6c064b4b • Custom

    instruction for Playwright(途中で紹介したカスタムインストラクションのサンプル) ◦ https://gist.github.com/katawara/77198bd3050d26edee1d8be5504c3718 参考⽂献、URL等