agentsclimarketplace

Behavioral testing

Skill MasashiFukuzawa/agent-toolbox/plugins/toolbox/skills/behavioral-testing

振る舞いを保護する自動テストを設計・実装・レビューする。テスト追加や壊れやすいテストの改善に使う。既存テストの実行だけには使わない。「回帰テストを追加」「モック過多を改善」を正のトリガーとし、型チェックや既存テストを繰り返すだけなら verification-loop を使う。From its SKILL.md

Install
npx -y skills add MasashiFukuzawa/agent-toolbox --skill behavioral-testing

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.3 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

Write Meaningful Tests

目的

AIがテストコードを書く時に、数や網羅率ではなく、退行を検出し、リファクタリングを妨げず、保守しやすいテストを作る。テストは資産ではなく保守コストを持つ負債でもあるため、価値がコストを上回る場合だけ追加する。

このスキルでは、単体テストを「1単位の振る舞いを、速く、他のテストから隔離して検証するテスト」と捉える。焦点はクラスやメソッドではなく、観察可能な振る舞いである。

最初に止まる条件

次の条件に当てはまる場合は、テスト実装に入る前に質問するか、characterization test に限定するか、作業を止める。

  • 期待値の根拠が現在の実装しかない。
  • 仕様、issue、PRD、公開API契約、バグ再現条件、既存の明示的期待値のどれも見つからない。
  • 境界条件、丸め、時刻の包含/排他などの仕様が未確定なのに、AIが期待値を補う必要がある。
  • private method や内部呼び出ししか観察点がない。
  • 既存のテスト規約、fixture/factory、実行コマンド、外部依存の扱いを確認していない。
  • 外部サービスへ実通信しないと成立しない。
  • テストを通すためだけにプロダクションコードを汚染しそうである。

判断フロー

  1. 仕様オラクルを特定する。 仕様、issue、PRD、公開API契約、ユーザー報告、バグ再現手順、既存の明示的な期待値を探す。実装の分岐や定数を丸写しして期待値を作らない。
  2. 観察可能な振る舞いを1つ選ぶ。 クライアントが達成したい結果、公開APIの戻り値、公開状態、外部から観察できる副作用に絞る。
  3. コードを分類する。 ドメイン/アルゴリズムは単体テスト、コントローラは統合テスト、取るに足らないコードは原則テストしない。複雑さと協力者が両方多いコードは、先に責務分離を提案する。
  4. 依存を分類する。 管理下依存は実物で状態を確認する。管理下にないプロセス外依存だけを、所有する境界アダプタのモックまたはスパイに置き換える。システム内コミュニケーションは検証しない。
  5. テスト手法を選ぶ。 出力値ベースを最優先する。必要に応じて状態ベース、ドメインイベント、統合テストでの境界スパイを選ぶ。コミュニケーションベースは外部から観察可能な境界通信に限定する。
  6. 既存規約に合わせて実装する。 既存のテストランナー、命名、fixture、factory、assertion library、DB初期化、cleanup、CIコマンドに合わせる。
  7. 最小の検証コマンドを実行する。 追加・変更したテストを最小範囲で実行し、必要なら関連テストまで広げる。

実装前チェック

テストを書く前に、短くてもよいので次を自分の中で埋める。

仕様根拠:
観察する振る舞い:
テスト対象分類:
テストレベル:
依存の扱い:
使う既存fixture/factory:
時刻/乱数/並行性/外部I/Oの扱い:
実行コマンド:

この表を埋められない場合、テストを書くよりも先に不足情報を調べる。調べても埋まらない場合は、ユーザーに確認する。

モックのルール

  • 単体テストで安易にモックを作らない。設計が悪くてテストしづらい箇所をモックで隠さない。
  • スタブは入力を供給するために使う。スタブとのやり取りは検証しない。
  • モック/スパイは外向きのコミュニケーションを検証するために使う。
  • モック対象は自分たちが所有する境界アダプタにする。サードパーティSDKや具象クラスを直接モックしない。
  • モックを使う場合は、期待する呼び出しと、起きてはいけない呼び出しの両方を検討する。

テストの形

  • AAA(Arrange, Act, Assert)を保つ。同じフェーズが複数回出るなら、複数の振る舞いを1つのテストに詰めている可能性を疑う。
  • Act が複数行になる場合、公開APIの設計や抽象化不足を疑う。
  • テスト名は実装名ではなく、ドメイン上の事実や振る舞いを表す。
  • 過度な共有fixtureより、テスト内で意図が読めるfactory/helperを優先する。
  • カバレッジ稼ぎ、同義反復assert、実装ロジックのコピー、広すぎるsnapshotを避ける。
  • 境界条件が仕様にない場合、テストで勝手に固定しない。確認するか、仕様化済みの範囲だけをテストし、未確定境界は明示的に保留する。

参照ファイル

  • テスト戦略、単体/統合境界、コード分類、依存分類、モック判断で迷う場合は references/testing-principles.md を読む。
  • テスト実装に入る場合は references/ai-test-writing-protocol.md を読む。
  • 既存テストのレビュー、壊れやすいテスト、過剰モック、snapshot乱用を扱う場合は references/test-smells-and-refactor-recipes.md を読む。
  • DBを含む統合テストを扱う場合は references/db-integration-testing.md を読む。

出力方針

  • テストを追加した場合は、何を仕様根拠にしたか、どの振る舞いを守るか、どのコマンドで検証したかを報告する。
  • テストを書かない判断をした場合は、なぜ価値がコストを下回るか、または何の仕様根拠が不足しているかを明確に伝える。
  • テスト容易性のためのリファクタリングが必要な場合は、テストだけで隠さず、最小の設計改善として提案する。

What ships with it: 4 files

17.5 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.