🐟

「それ、蚭定ファむルに曞いおおいたよ」〜AI゚ヌゞェントCursor/Clineでのテスト生成改善の蚘録〜 (2025幎1月珟圚)

に公開
2025/02/13

はじめに

こんにちは、UbieでQA゚ンゞニアをしおいる ackey です。
昚幎の12月よりアプリチヌム党䜓の開発・運甚生産性改善を担うチヌムに所属しおいたす。

本蚘事では、AI゚ヌゞェントを䜿ったテストコヌド生成におけるちょっずした工倫事䟋をご玹介したす。
2025幎初頭時点での詊行錯誀の蚘録ずしお、たた、生成AI時代を生き抜こうずもがくQA゚ンゞニアの取り組みずしお参考になれば幞いです。

AI゚ヌゞェントずのやりずりで感じた課題

UbieではCursorやClineなど開発AI゚ヌゞェントのトラむアルを䞀郚のプロゞェクトで開始しおおり、もはやAI゚ヌゞェントなしの開発スタむルには戻れない状態になり぀぀ありたす。
https://zenn.dev/ubie_dev/articles/624c9034cc9b43

アプリチヌムでもAI゚ヌゞェントの利甚は掻発で、新機胜開発からテストコヌドの生成たで幅広く掻甚されおいたす。QA゚ンゞニアの私も䞻にテスト䜜成文脈[1]でAI゚ヌゞェントを掻甚し始め、実装効率は確かに向䞊したした。しかし同時に、プロゞェクト固有の文脈を理解させるこずの難しさも感じおいたした。

AI゚ヌゞェントの出力における課題䟋

「〇〇のテストを曞いお。hogehogeのテストを参考にしお。」ずお願いするず、AIが最初に出しおくる提案には以䞋のような課題がありたした。

  1. プロゞェクト共通蚭定の理解䞍足
// 䞍芁なモック定矩の䟋jest.config.mjsで既に蚭定枈み
jest.mock('@/assets/icons/example.svg', () => 'SvgMock');
  1. テストケヌス呜名のばら぀き・期埅倀が䞍明瞭
// 期埅結果が抜象的で、䞍明瞭な呜名
it('スキップボタンクリック時に正しく凊理が実行される', async () => { ... });
  1. 芁玠の怜玢方法のばら぀き
// 芁玠怜玢では `getByRole`を優先的に䜿っおほしいが、TestIdを蚭定しおしたう
screen.getByTestId('login-button');  

䞊蚘のようなちょっずしたズレが起きるたびに、「ここが䞍芁なので消しお」「期埅倀を具䜓的か぀明瞭化しお」「条件䞀臎したずきのテストだけでなく、条件䞍䞀臎時のテストも足しお」など远加の指瀺をする必芁があり、「䞀発で䞀定のクオリティの提案がほしい...」ず悩んでいたした。

詊した工倫蚭定ファむルによるコンテキストの共有

チヌム内で盞談したずころ、「各AI゚ヌゞェントの蚭定ファむルに蚘茉できるよ」ず教えおもらい、詊しおみるこずにしたした。

slackで盞談する様子

参考公匏ドキュメント

蚭定ファむルの䜜成プロセス

  1. AIを䜿ったたたき台の䜜成 by QA゚ンゞニア

    • 既存のテストコヌドず瀟内の知芋資料を入力情報ずしお、パタヌンの抜出をAIに䟝頌
    • AIず察話をしながら、カバヌしおほしいテスト芳点を敎理
  2. チヌム内でAIのたたき台をレビュヌ

    • アプリ開発゚ンゞニアReact Nativeのお䜜法、ベストプラクティスの芳点
    • QA゚ンゞニアテストの網矅性、保守性の芳点

ポむントずしおは、最初から完璧を目指さず、既存の資産を掻かしお最䜎限守っおほしいルヌルを初版ずしお怜蚎したずころです。着手からマヌゞたでの期間は玄1日ほどでした。

蚭定ファむルの䞻なポむント

以䞋のような項目を蚘茉したした (芁玄か぀䞀郚抜粋)

# Testing Rules

## 1. テストファむルの基本構造
- ファむル配眮・呜名芏則`{ComponentName}.test.tsx`
- 甚途別基本むンポヌト通垞/GraphQL/カスタムフック
- テストファむルテンプレヌトdescribeブロック、setupPage関数

## 2. モックパタヌン
- 自動蚭定されるモックSVG
- よく䜿うモックパタヌンコンポヌネント、カスタムフック、ストレヌゞ、GraphQL
- 状態管理モックjotai

## 3. 芁玠の怜玢優先順䜍
1. Role-based → screen.getByRole('button', { name: 'ボタン名' })
2. テキストベヌス → screen.getByText('衚瀺テキスト')
3. TestID最終手段→ screen.getByTestId('test-id')

## 4. テストケヌスパタヌン
- 衚瀺・非衚瀺確認動的な芁玠、条件による衚瀺倉化
- ナヌザヌむンタラクション
- 非同期凊理ロヌディング、APIレスポンス
- ナビゲヌション、モヌダル
- 状態管理テスト (ストレヌゞ操䜜)
- ゚ラヌハンドリング

## 5. テストケヌス呜名芏則
'[条件]のずき、[具䜓的な期埅結果]'
- 䟋 'プッシュ通知タップ時、通知デヌタを既読に曎新し通知詳现画面に遷移する'

## 6. テスト芳点ごずに抑えおほしいポむント(必須・掚奚別)
- ナヌザヌむンタラクション
- デヌタフェッチ
- 状態による衚瀺確認
- フォヌム操䜜
- デヌタ有無による確認
- コンポヌネント間連携
- アクセシビリティ
- 条件分岐による確認パタヌン (䟋:条件を満たす堎合の挙動/条件を満たさない堎合の挙動)

効果ず気づき

これらの蚭定ファむルを远加したこずで、AI゚ヌゞェントぞの指瀺が「hogehogeファむルのテストを曞いお」ずいったシンプルなものでも、プロゞェクトのテストポリシヌを理解した実装を提案しおくれるようになり、レビュヌや手盎しの手間が最小限で枈むようになりたした。

導入埌の䞻な改善点は以䞋の2぀です。

  1. AI゚ヌゞェントが生成するテストコヌドの初期品質が向䞊

    • プロゞェクトのルヌルモックの蚭定などを理解した実装
    • テストの目的が明確な呜名ぞの改善
    • テスト芳点のポむントを抑えたテスト内容ぞ
  2. テスト䜜成プロセスの効率化

    • AIぞの远加指瀺が1回皋床で枈むように以前は35回の远加指瀺が必芁
    • 圢匏面での远加指瀺が枛り、人間は「テストケヌスの劥圓性確認」のレビュヌに泚力できるように

アプリ開発゚ンゞニアからも「新しい機胜を远加する時も、AI゚ヌゞェントに頌めば高品質なテストを䜜っおくれるので、開発の速床ず質が䞊がった」ず喜びの声をもらいたした。

笑いが止たらないアプリ開発゚ンゞニア

ずはいえ、珟時点2025幎初頭だからこそ埗られた限定的な成果ずも感じおいたす。
特にClineは比范的具䜓的か぀䞁寧めに指瀺をしないずプロゞェクト文脈にそった提案が䞀発で埗られない課題があったので、今回の蚭定ファむルにより初期品質が改善できたした。今埌のAIの粟床改善により、蚭定ファむルでここたで现かく指定せずずも気の効いた提案をしおくれる䞖界はすぐに来そうな予感もしたす。

おわりに

小さな工倫ではありたすが、AI゚ヌゞェントを掻甚したテスト生成の効率化により、開発速床ずプロダクト品質の向䞊に぀ながった事䟋を玹介したした。今埌もAIツヌルは急速な進化を続けおいくず思いたすが、その時々で「今できる工倫」を玠早く芋぀け積み重ねおいくこずを意識しおいきたいず思いたす。

皆さんのプロゞェクトでも、䌌たような工倫や異なるアプロヌチがあれば、ぜひ教えおいただけるず嬉しいです。

珟圚、Ubieではさらなる改善をすすめるため、QA゚ンゞニアの採甚を匷化しおいたす。
LLMを掻甚したQA掻動のアップデヌトに興味のある方、ぜひ䞀緒に働きたせんか?

䞋蚘募集かXのDM でご連絡いただけるず嬉しいです。
https://herp.careers/v1/ubiehr/bfPkWMEgZJ7X
カゞュアル面談も倧歓迎です!!
https://pitta.me/matches/GvKDrGMPMBCN

脚泚
  1. 珟圚アプリチヌムでは、React Nativeのむンテグレヌションテストを䞭心にテスト拡充を進めおおり、新芏機胜はアプリ開発゚ンゞニア、既存機胜はQA゚ンゞニア+業務委蚗゚ンゞニアずいう分担で䜜業を担圓しおいたす。取り組みの背景に぀いおは以䞋を参照→ https://zenn.dev/ubie_dev/articles/6b73f18420861f ↩

Ubie テックブログ

Discussion