mcpField
A
axiom-testing

axiom-testing

github.com/charleswiltgenテスト・品質1.2k1.3k 回インストール今日更新
リポジトリ

axiom-testing について

axiom-testing は Claude Code 向けの Swift テスト用スキルです。単体、非同期、UI、自動化テストのガイドへ案内し、失敗分析や品質監査にも対応します。

主な機能

  1. 01Swift Testing と XCTest のガイド
  2. 02非同期処理とコールバックのテストパターン
  3. 03UI と XCUITest のワークフロー
  4. 04テスト計画と CI の指針
  5. 05不安定なテストの分析と品質監査

活用シーン

  1. 01Swift Testing と XCTest の選択
  2. 02不安定な UI・非同期テストの調査
  3. 03シミュレーターなしでのテスト高速化
  4. 04カバレッジとテストの信頼性監査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/charleswiltgen/axiom --skill axiom-testing

インストール後、Claude Code で/axiom-testingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

skills/
swift-testing.md
test-failure-analyzer.md
testing-async.md
testing-auditor.md
ui-recording.md
ui-testing.md
xctest-automation.md

詳細

テスト

テストの作成、テスト失敗のデバッグ、テストの高速化、テスト手法の選択など、テストに関するあらゆる質問では、必ずこのスキルを使用してください。

Claude Code にバンドルされているツール: command -v <tool> で何も見つからない場合(フックがオフ、または --bare の場合)は、ツール名の代わりに <plugin-root>/tools/<tool> を使用してください。<plugin-root> は、このスキルの Base directory for this skill: のパスから2階層上にあります。

Axiom エージェントを起動できませんか? このルーターがエージェントに誘導する場合は、その手順をここで実行してください。MCP 経由では、axiom_get_agent が手順を返します。それ以外の場合は、以下のファイルを読み込んでください。必要なのはファイルの検索と読み取りだけです。

ここで利用可能なもの:skills/test-failure-analyzer.md、skills/testing-auditor.md。

それ以外のエージェントについても、MCP 経由では axiom_get_agent が手順を返します。axiom_xclog_*、axiom_xcsym_*、axiom_xcprof_* ツールを使って、エージェントの xclog、xcsym、xcprof の手順を実行してください。それ以外の場合は、Axiom のスキル内で skills/<agent>.md を検索してください。見つからない場合は、このスイートのスキルを使い、PATH 上にある Axiom のツールを利用して自分で作業してください。

クイックリファレンス

症状/タスク参照先
単体テストの作成、Swift Testing(@Test、#expect)skills/swift-testing.md を参照
シミュレーターなしでのテスト実行skills/swift-testing.md を参照
パラメーター化テスト、タグ、特性skills/swift-testing.md を参照
XCTest から Swift Testing への移行skills/swift-testing.md を参照
警告レベルの問題/テストのキャンセル — Issue.record(severity:)、Test.cancel(OS27)skills/swift-testing.md を参照
async/await 関数のテストskills/testing-async.md を参照
コールバックの確認skills/testing-async.md を参照
@MainActor テスト、並列実行skills/testing-async.md を参照
UI テスト、XCUITest の作成skills/ui-testing.md を参照
UI テストから VoiceOver を操作する、読み上げ出力を検証する(OS27)skills/ui-testing.md のパターン7を参照
システム経由での App Intents のテスト、AppIntentsTesting(OS27)skills/ui-testing.md のパターン8を参照し、その後 axiom-integration(skills/app-intents-ref.md)を参照
条件に基づく待機パターンskills/ui-testing.md を参照
UI オートメーションの記録(Xcode 26)skills/ui-testing.md を参照
ネットワークコンディショニング、マルチファクターテストskills/ui-testing.md を参照
リサイズ可能なアプリのテスト:寸法マトリックス、RTL/疑似ローカライズの起動引数、ライブリサイズのパスskills/ui-testing.md を参照
CI からの Face ID/Touch ID、向き、シミュレーター状態のテスト — devicectlskills/ui-testing.md を参照
XCUIElement クエリ、待機方法skills/xctest-automation.md を参照
アクセシビリティ識別子、テストプランskills/xctest-automation.md を参照
CI/CD でのテスト実行skills/xctest-automation.md を参照
記録/再生/レビューのワークフロー(Xcode 26)skills/ui-recording.md を参照
テストプランの複数構成での再生skills/ui-recording.md を参照
記録したテストの安定性向上skills/ui-recording.md を参照
生成 AI 機能のテスト — 出力は決定論的ではないため、#expect(result == expected) は成立しません(OS27)方法については axiom-ai(skills/foundation-models-evaluations.md)を参照し、その後 API については axiom-ai(skills/foundation-models-evaluations-ref.md)を参照

意思決定ツリー

digraph testing {
    start [label="Testing task" shape=ellipse];
    what [label="What kind of test?" shape=diamond];

    start -> what;
    what -> "skills/swift-testing.md" [label="unit tests,\nSwift Testing,\nfast tests"];
    what -> "skills/testing-async.md" [label="testing async code,\ncallbacks,\nconfirmation"];
    what -> "skills/ui-testing.md" [label="UI tests,\nflaky tests,\nrecording"];
    what -> "skills/xctest-automation.md" [label="XCUITest patterns,\nelement queries"];
    what -> "skills/ui-recording.md" [label="Xcode 26\nRecord/Replay/Review"];
    what -> "axiom-ai (skills/foundation-models-evaluations.md)" [label="generative AI feature\n(nondeterministic output)"];
}
  1. 単体テスト/Swift Testing を作成する場合 → skills/swift-testing.md
  2. async/await コードをテストする場合 → skills/testing-async.md
  3. UI テスト/XCUITest/不安定なテストを作成する場合 → skills/ui-testing.md
  4. XCUIElement クエリ、待機、テストプラン、CI の場合 → skills/xctest-automation.md
  5. UI 操作を記録する場合(Xcode 26)→ skills/ui-recording.md
  6. 不安定なテスト/競合状態(Swift Testing)の場合 → test-failure-analyzer(エージェント)
  7. テストがクラッシュする/環境が正しくない場合 → axiom-build を参照してください(skills/xcode-debugging.md)
  8. CLI からテストを実行する/結果を解析する場合 → test-runner(エージェント)
  9. 失敗したテストを自動で修正する場合 → test-debugger(エージェント)
  10. テスト品質の監査を行う場合 → testing-auditor(エージェント)または /axiom:audit testing
  11. XCUITest/AXe CLI を使わずに自動化する場合 → simulator-tester(エージェント)+ axiom-xcode-mcp を参照してください(skills/axe-ref.md)
  12. Foundation Models/生成機能をテストする場合 → axiom-ai(skills/foundation-models-evaluations.md)で評価の考え方(データセットの設計、最適化目標とガードレールの違い、評価者のキャリブレーション)を確認し、その後 axiom-ai(skills/foundation-models-evaluations-ref.md)で API を確認してください。Evaluations フレームワーク(OS27)は .evaluates 特性を通じて Swift Testing の内部で実行されます。Swift Testing に取って代わるものではありません。モデルは純粋関数ではないため、出力をデータセットに照らしてスコア化し、特定の文字列を一つずつ検証するのではなく、集約指標を基準に合否を判定します。

Swift Testing と XCTest の簡易ガイド

必要な用途使用するもの
単体テスト(ロジック、モデル)Swift Testing
UI テスト(タップ、スワイプ、画面の検証)XCUITest(XCTest)
システム経由で実行する App Intents(AppIntentsTesting)XCTest を使用する UI Testing Bundle。Swift Testing を使用できるのは、文書化されていないビルド設定のオーバーライドを使う場合のみです
シミュレーターを使わないテストパッケージ/フレームワーク(いずれかのフレームワーク)
パラメーター化テストSwift Testing
パフォーマンス測定XCTest(XCTMetric)
Objective-C テストXCTest

重要なパターン

Swift Testing(skills/swift-testing.md):

  • @Test/@Suite マクロ、#expect/#require アサーション
  • 反復的なテストをなくすためのパラメーター化テスト
  • 高速なテストアーキテクチャ:パッケージ抽出、Host Application:None
  • withMainSerialExecutor と TestClock を使った信頼性の高い非同期テスト
  • XCTest からの移行ガイド(比較表)
  • XCTestCase と Swift 6.2 MainActor の互換性修正

非同期テスト(skills/testing-async.md):

  • 単一/複数のコールバックに対する confirmation
  • 何も起きないことを検証する expectedCount: 0
  • @MainActor によるテスト分離
  • .timeLimit によるタイムアウト制御
  • 並列実行時の注意点と .serialized

UI テスト(skills/ui-testing.md):

  • 条件に基づく待機(sleep() の代わり)
  • UI オートメーションの記録(Xcode 26)
  • 3G/LTE テストのネットワーク環境調整
  • 複数要因によるテスト(デバイスサイズ+ネットワーク速度)
  • UI テスト失敗時のクラッシュデバッグ

XCUITest の自動化(skills/xctest-automation.md):

  • accessibilityIdentifier による要素の識別
  • 待機戦略(表示、非表示、操作可能)
  • 複数構成のテスト向けテストプラン
  • 並列実行による CI/CD 統合

UI 記録(skills/ui-recording.md):

  • Xcode 26 の記録/再生/レビューのワークフロー
  • 安定性を高めるための記録済みコードの改善
  • クエリ選択のガイドライン
  • 複数言語での再生に向けたテストプランの設定

自動スキャン

テスト品質の監査 → testing-auditor エージェントまたは /axiom:audit testing を起動します(テストカバレッジの形状を本番コードと照合し、不安定なパターンや速度の問題を検出し、未テストの重要な経路を特定し、テスト全体の健全性をスコア化します)

不安定なテストの分析 → test-failure-analyzer エージェントを起動します(Swift Testing で断続的な失敗を引き起こすパターン、たとえば confirmation の不足、共有可変状態、@MainActor の不足をスキャンします)

過度な合理化を避ける

考え実際
「簡単なテストの質問だから、スキルは必要ない」適切なパターンを使えば、テストの負債を防げます。skills/swift-testing.md にコピーして使える解決策があります。
「XCTest は十分に理解している」単体テストには Swift Testing のほうが大幅に優れています。移行ガイドも含まれています。
「テストは遅いけれど、問題ない」テストが速ければ TDD を実践できます。skills/swift-testing.md では、シミュレーターなしで実行する方法を紹介しています。
「sleep() を使って不安定なテストを修正しよう」sleep() はテストを遅くし、さらに不安定にします。skills/ui-testing.md では、条件に基づいて待機する方法を紹介しています。
「テストは後で追加しよう」実装後に書いたテストでは、エッジケースを見落とします。
「モデルが正しい文字列を返すことを検証すれば、AI 機能をテストできる」モデルは純粋関数ではありません。このテストは類義語で失敗し、流暢な嘘では成功します。データセットを評価し、全体の指標を基準に判定します。axiom-ai(skills/foundation-models-evaluations.md)を参照してください。
「試してみたとき AI の出力は良かったので、テスト済みだ」いくつかのプロンプトを手作業で試しても何も測定できず、リグレッションも検出できません。Evaluations フレームワークは、まさにこのギャップを埋めるためにあります。

呼び出し例

ユーザー:「Swift で単体テストを書くにはどうすればよいですか?」 → 参照:skills/swift-testing.md

ユーザー:「CI で UI テストが不安定です」 → コードベースを確認:XCUIApplication/XCUIElement を使用していますか? → skills/ui-testing.md → コードベースを確認:@Test/#expect を使用していますか? → test-failure-analyzer(エージェント)

ユーザー:「不安定にならないように非同期コードをテストするにはどうすればよいですか?」 → 参照:skills/testing-async.md

ユーザー:「XCTestExpectation に相当する Swift Testing の機能は何ですか?」 → 参照:skills/testing-async.md

ユーザー:「テストの実行を速くしたい」 → 参照:skills/swift-testing.md(戦略 1:パッケージの抽出)

ユーザー:「Swift Testing と XCTest のどちらを使うべきですか?」 → 参照:skills/swift-testing.md(移行セクション)と、この判断ツリー

ユーザー:「Xcode 26 で UI オートメーションを記録するにはどうすればよいですか?」 → 参照:skills/ui-recording.md

ユーザー:「テストを実行して、失敗したものを見せてください」 → 呼び出し:test-runner(エージェント)

ユーザー:「テストの品質上の問題を監査してください」 → 呼び出し:testing-auditor(エージェント)

コメント