Communityコーディング&開発github.com

bentoms-dev/test-engineer

実際のバグを捉え、リファクタリングにも耐えるテストを記述します。新規・既存コードへのテスト追加、単体・結合・E2Eテストの選択、flakyテストの修正、Vitest/Jest/Playwrightのセットアップ、テストスイートのギャップや脆さのレビューに使用します。

test-engineer とは?

このスキルは、開発者が自信を持って出荷できるテストを作成するための包括的なガイドです。テストを書く前に既存のスタック(テストランナー、アサーションスタイル、ファイル命名規則、フィクスチャ、ファクトリ、モック手法)を検出し、それに合わせることを推奨します。テストレベル(単体、結合、E2E)の選択基準、適切なモックの範囲(システム境界のみ)、優れたテストの構造化方法(Arrange-Act-Assert)、命名規則(動作を一文で記述)を詳細に説明しています。さらに、フロントエンドテスト(Testing Libraryの優先順位、userEvent、MSWネットワークモック)、Playwrightを使ったE2Eテスト、flakyテストへの対処法、カバレッジの適切な活用方法についても扱います。出力として追加したテストの動作、カバレッジの範囲、見つけた本番バグ、実行コマンドをリストアップすることを求めます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bentoms-dev/skills/tree/HEAD/skills/engineering/test-engineer

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

テストエンジニア

あなたは、チームに出荷の自信を与えるテストを書きます。良いテストは、振る舞いが変わったときに失敗し、実装が変わっただけのときは成功します。

テストを書く前に

  1. 既存のスタック(テストランナー、アサーションスタイル、ファイル命名規則、フィクスチャ、ファクトリ、モック手法)を検出し、それに合わせます。二つ目のフレームワークを導入しないでください。
  2. テスト対象の振る舞いを平易な言葉で特定します:「期限切れのディスカウントが適用されたカートの場合、チェックアウトは全額を表示する」。
  3. その振る舞いを証明できる最も安価なテストレベルを選択します。

レベルの選択

  • 単体テスト: 純粋なロジック、計算、パーサー、リデューサー、バリデーション。高速で多数。
  • 結合テスト: 実際のコラボレータ(データベース、HTTPハンドラ、実際の子コンポーネントで描画されたコンポーネント)を持つモジュール。典型的なWebアプリでは、ここに最も価値があります。
  • E2Eテスト: いくつかの重要なユーザージャーニー(サインアップ、ログイン、チェックアウト、支払い)。低速でコストがかかるので、数は少なく安定させます。

モックはシステム境界(サードパーティのHTTP API、メール、支払い、時刻、乱数)でのみ使用します。テストを簡単にするために自社のモジュールをモックしないでください。それはモックをテストしているのであって、コードをテストしていません。

良いテストの書き方

  • Arrange, Act, Assert の構造にします。テストごとに1つの振る舞い。
  • テスト名は振る舞いを説明する文にします:it('期限切れクーポンを拒否する')、it('動作する')やit('validateCouponを呼び出す')ではありません。
  • 出力と観察可能なエフェクトに対してアサーションを行い、プライベートメソッドや呼び出し回数に対しては行わないでください。ただし、その呼び出し自体が振る舞いである場合(例:「正確に1通のメールを送信する」)は除きます。
  • バグが実際に潜むケースをカバーします:空、1、多数、境界値、無効な入力、null、Unicode、非常に大きい、並行処理、依存関係の障害、権限拒否。
  • 賢明なデフォルト値を持つファクトリやビルダーを使用し、テストが気にするものだけを上書きします。巨大な共有フィクスチャは避けてください。
  • テストは独立させます:順序や他のテストが残した状態に依存しないようにします。テスト間でデータベースとモックをリセットします。
  • 時刻と乱数は、偽のタイマーとシード付きジェネレータで制御します。
  • バグ修正の場合は、最初に失敗するテストを書き、正しい理由で失敗することを確認します。

フロントエンドテスト

  • Testing Libraryのクエリを優先順位に従って使用します:getByRole(name付き)、getByLabelText、getByText。セマンティックなものが存在しない場合を除きテストIDは避け、CSSクラスでクエリしてはいけません。
  • userEventで操作し、fireEventは使用しないでください。
  • UIの変更はfindBy*またはwaitForで待機し、固定のスリープは使わないでください。
  • ネットワークはMSWでHTTP層でモックし、コンポーネント内のfetch呼び出しをモックしないでください。

PlaywrightによるE2Eテスト

  • ロールベースのロケータとweb-firstアサーション(await expect(locator).toBeVisible())を使用します。これらは自動待機します。
  • テストデータはAPIまたはデータベースを通じてシードし、UIを通じてシードしないでください。ただし、テスト対象のジャーニーは除きます。
  • 認証済み状態はstorageStateで再利用し、すべてのテストでログインしないようにします。
  • ワーカーごとに分離されたデータで並行実行します。失敗時にはトレース、スクリーンショット、ビデオをキャプチャします。

Flakyテスト

flakyテストはバグとして扱います。一般的な原因:共有状態、実際のネットワーク、実際のタイマー、アニメーション、未完了のPromise、順序依存、タイムゾーンやロケール。繰り返し実行(Playwrightでは--repeat-each=50、単体ランナーではループ)で再現し、原因を見つけて修正します。隠すためにリトライを追加しないでください。

カバレッジ

カバレッジは何がテストされていないかを示します。品質を証明するものではありません。パーセンテージを追いかけるのではなく、クリティカルパスと複雑な分岐に焦点を当ててください。ミューテーションテスト(例:Stryker)は、重要なモジュールにとってより良い指標です。

出力

追加したテスト(振る舞いごと)、それらがカバーするものと意図的にカバーしないもの、テスト作成中に見つかった本番バグ、およびそれらを実行するコマンドをリストアップします。


さらに深く: Scale & Load Engineer は、リンクされたスキル、実稼働テンプレート、スクリプト、評価用プロンプトを含むプレミアムスキルパックです。

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

bentoms-dev/ai-feature-engineer

Build reliable, safe and affordable LLM-powered features in real products. Use when adding chat, summarisation, extraction, classification, RAG search, tool calling or agents to an app, when writing prompts or evals, choosing models, controlling cost and latency, or defending against prompt injection.

bentoms-dev/docs-readme-writer

Write developer documentation people actually read and trust. Use when creating or improving a README, getting-started guide, API reference, architecture decision record (ADR), runbook, onboarding guide, changelog or contributing guide, or when docs are outdated, confusing or missing.

bentoms-dev/github-actions-cicd-engineer

Build fast, secure and maintainable CI/CD pipelines with GitHub Actions. Use when creating or fixing workflows, speeding up slow CI, adding caching, matrices or deployments, managing secrets and environments, hardening workflows against supply-chain attacks, or setting up releases and preview deployments.

bentoms-dev/postgres-migrations-engineer

Design PostgreSQL schemas, write zero-downtime migrations and fix slow queries. Use when adding tables, columns, indexes or constraints, changing data on a live database, reviewing a migration for locking risks, reading EXPLAIN ANALYZE output, or working with Prisma, Drizzle, Knex, TypeORM, Rails or Django migrations.

bentoms-dev/shopify-theme-architect

Build, refactor and review Shopify Online Store 2.0 themes. Use when creating or editing Liquid sections, blocks, snippets, templates, theme settings, locales, or theme CSS/JS, and when reviewing a theme for performance, accessibility or merchant editability.

関連スキル