ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

テスト自動化 プログラミングの壁をClaudeCodeで超えたQAエンジニアのリアル

テスト自動化:プログラミングの壁をClaude Codeで越えたQAエンジニアのリアル
こんにちは。ユニファでQAエンジニアをしているとりごえです。 近年、AIツールの進化によってソフトウェアテストのあり方も大きく変わりつつあります。私自身、現在進行形で「ルクミー請求管理」のE2Eテストをゼロから自動化しているのですが、その強力な「相棒」として活躍しているのが Claude Code です。

今回は、プログラミングに深く精通していなくても、AIと対話しながらどうやってPlaywrightによるテスト自動化の壁を越えたのか。QAエンジニアの視点から、AI時代の新しい「協働作業」の実践例をご紹介します。


1. 自動化の壁を越え、既存機能の「安心」を担保する

前提として、今回私がターゲットにしているのは「回帰テスト(リグレッションテスト)」です。新機能の動作確認は人間が行い、機能改修のたびに既存機能が壊れていないかを自動で確認することを目指しています。

しかし、Playwrightを用いてゼロからE2Eテストを実装・保守し続けるのは、学習コストも運用コストもかかります。この技術的なハードルを、Claude Codeを活用することで突破しました。以降では、その具体的なアプローチをご紹介します。

2. 丸投げではなく、「役割分担」から始めよう

AIにすべてを丸投げするのではなく、明確な役割分担を定義することから始めました。

  • 人間の役割(QA):「何をテストすべきか」という意図の設計や、最終的な「結果の妥当性」の判断。
  • 相棒の役割(Claude Code):PlaywrightのAPIを用いた具体的なコードの実装や、実行時の文法エラーの自己修復。

つまり、テストコードの文法ではなく、「テストが自分の意図通りに動いたか」をレビューするのが人間の仕事になります。

3. 指示はいつものQA言葉で(3ステップ)

AIに正確なコードを書かせるためのアプローチは非常にシンプルです。QAエンジニアが普段行っていることの延長で、たった3ステップで完結します。

  1. DevToolsで調べる:ブラウザのDevToolsで対象要素(idやname属性など)を特定します。
  2. HTMLと期待値を渡す:コピーしたHTML情報をClaude Codeに渡し、「どうなったら正解か」という期待値を自然言語で添えます。
  3. コードの自動生成:すると、瞬時にAIが最適なPlaywrightのAPIに翻訳してコードを生成してくれます。

ここで重要なのは、新しい開発言語を覚える必要はないということです。「〇〇というテキストになること」「ボタンが非活性になること」といった、普段のテスト仕様書で用いる書き方そのままでAIに完璧に伝わります。込み入った条件でも、「検索フォームのものだけを操作するようにして」と日本語でコンテキスト(文脈)を補足するだけで、AIは適切に推論してくれます。

4. コードを書くだけではない。相棒との実践例

Claude Codeとの協働は、単なるコード生成にとどまりません。現場の泥臭い課題も一緒に解決してくれます。

① 面倒な「証跡作り」の自動化

テストコードはどんどん変わっていくため、「あの時点で何を確認したか」という証跡管理が課題でした。これに対し、テスト実行後に「実施した内容をまとめて」とAIにお願いするだけで、ソースコードと実行結果からスプレッドシート用の網羅的なテスト証跡表を自動生成させています。

② 認証セッションの自動管理

E2Eテストのボトルネックになりがちな「認証処理」。現在はテストスクリプトの構築フェーズということもあり、日々の検証実行のたびに「毎回ログインするとテスト実行が遅くなる」「でもセッションを使い回すと8時間で切れてエラーになる」という悩みがありました。これもAIに相談し、セッションの有効性を確認して切れていれば自動で再ログインする仕組みを一緒に実装しました。

※テスト一式が整備されて安定稼働に入った後は、各テスト開始時にセッションを初期化するほうがより安全です。現在は開発スピードを優先してセッション再利用を採用していますが、将来的には切り替えを検討しています。

③ 人間が忘れても、AIがダブルチェックしてくれる

テスト実行環境の誤りや並列実行など、重大な事故を防ぐ安全策は重要です。Claude Codeには、人間が明示的にルールを記述する「CLAUDE.md」というファイルがあります。ここに「staging環境でのみ実行する」「並列実行はしない」といったルールを書いておくことで、人間が焦って指示を間違えても、AIが自動的に確認・抑止してくれます。

5. タッグの落とし穴(コードが動く ≠ 意図が正しい)

最後に、運用における重要な注意点です。

AIはエラーを修正して「コードが動く」状態にする能力には長けています。しかし、「コードの挙動」が「人間が意図したビジネスロジックやテスト仕様」と合致しているかは全く別の問題です。

この「意図の担保」こそが、私たちQAエンジニアの果たすべきコアな役割です。

おわりに

Claude Codeはテスト自動化の技術的な壁を取り払ってくれますが、一朝一夕で魔法のようにすべてを自動化できるわけではありません。複雑なデータ状態の再現など、乗り越えるべき壁はまだまだあります。

だからこそ、失敗や困りごとをAIと対話して解決するたびにルールが蓄積され、チーム専用の優秀な相棒へと育っていきます。

「QAの観点は自分が持つ。実装は相棒と組む。ルールは育てる。」

これからも、AIを相棒にした新しい「ペアプログラミング(協働)」の形で自動化を推進していきたいと思います。 最後までお読みいただきありがとうございました!


ユニファでは一緒に働く仲間を探しています!

jobs.unifa-e.com