mcpField
S
smoke-tests

smoke-tests

github.com/bseneテスト・品質751 回インストール1 週間前に更新
リポジトリ

smoke-tests について

smoke-tests は、HTTP API のスモークテストを作成するスキルです。フルテストスイートの前に重要なユーザーフローを確認したいチーム向けで、稼働中のアプリを Hurl または curl で検査し、CI のゲートにもできます。

主な機能

  1. 01Hurl または curl による HTTP 検査
  2. 02重要なユーザーフローの正常系確認
  3. 03JSONPath などを使ったレスポンス検証
  4. 04スモークテストを CI の最初のゲートに設定

活用シーン

  1. 01プレビュー環境でログインと重要なリクエストを確認
  2. 02CI で API のヘルスチェックを先行実行
  3. 03後続テストの前に重要フローの障害を検出

インストール

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

$npx skills add https://github.com/bsene/skills --skill smoke-tests

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

同梱ファイルreferences/curl.mdreferences/hurl.md

詳細

スモークテスト

低速なテストスイートの実行前に、ユーザー向けの重要な機能を検証する、最小限で高速なテストです。 スモークテストに失敗した場合、ビルドは壊れています。フルテストスイートは実行されません。 特徴: 最小限のセットアップ · 高速(数秒) · 正常系のみ · 高いシグナル対ノイズ比 · HTTP のみ — JS ランタイムもテストフレームワークも不要

対象範囲: このスキルの対象は、Hurl または curl を使って作成する HTTP API のスモークテストのみです。Jest、Vitest、その他のインプロセス JS テストランナーは対象外です。ここでのスモークテストは、実行中のアプリ(ローカル、ステージング、またはプレビュー環境)に対するブラックボックスの HTTP チェックです。


既存のスモークテストを特定する

パターン検出方法
smoke-tests/ ディレクトリ慣例に基づくディレクトリ
*.hurl ファイルHurl シナリオファイル
smoke.sh / smoke-test.shcurl ベースのシェルスクリプト
# @smoke / # @critical コメントタグを検索

ツールの選択

Hurl を使う場合curl を使う場合
複数ステップのフロー(トークンを取得してリクエストを連鎖させる)単一リクエスト/手早く行う単発のチェック
構造化された JSONPath アサーションが必要な場合CI の依存関係をできるだけシンプルにしたい場合(curl はほとんどの環境にプリインストールされています)
シナリオごとに読みやすく宣言的なファイルを用意したい場合hurl バイナリをインストールしたくない場合
HTML/JUnit レポートを組み込みで使いたい場合jq でアサーションが簡単にできる場合(ステータスコードや単一フィールドなど)

単一リクエストを超えるものには、デフォルトで Hurl を使ってください。まさにこの用途向けに作られており、宣言的な記述を保てます。curl(JSON には jq、ステータスチェックには通常のシェル)を使うのは、対象環境に Hurl をインストールできない場合、またはチェックが 1 行で済む場合に限ってください。


実行コマンド

# Hurl — run all .hurl files as tests
hurl --test --max-time 10 smoke-tests/*.hurl

# Hurl — single file with variables
hurl --test --max-time 10 --variable base_url=http://localhost:3000 smoke-tests/health.hurl

# Hurl — variables file + HTML report
hurl --test --max-time 10 --variables-file smoke-tests/vars.env --report-html report/ smoke-tests/*.hurl

# curl — quick health check, fail on non-2xx
curl --fail --silent --show-error "$BASE_URL/health" | jq -e '.status == "ok"'

# curl — run a smoke script (see references/curl.md)
BASE_URL=https://staging.example.com bash smoke-tests/smoke.sh

品質テーブル

項目推奨事項避けること
範囲重要なワークフローをテストするあらゆるエッジケースをテストする
セットアップ最小限で再利用可能なフィクスチャ複雑で多段階のセットアップ
アサーションリクエストごとに 1~3 個、対象を絞るリクエストごとに多数のアサーション
時間リクエストごとに <100ms低速でリソースを大量に消費するテスト
保守性安定していて、変更がまれ実装の変更で壊れる
カバレッジ広い範囲のパス、深掘りはしない内部動作を深くテストする

CI との統合

# GitHub Actions — Hurl smoke as gate
- name: Install Hurl
  # Pin an exact version + verify checksum — don't pipe install.sh straight from
  # the web with no version pin or verification (see references/hurl.md for the
  # full snippet with the sha256sum check).
  run: |
    HURL_VERSION=4.3.0
    curl -LO https://github.com/Orange-OpenSource/hurl/releases/download/${HURL_VERSION}/hurl_${HURL_VERSION}_amd64.deb
    echo "<pin-expected-sha256-here>  hurl_${HURL_VERSION}_amd64.deb" | sha256sum -c -
    sudo dpkg -i hurl_${HURL_VERSION}_amd64.deb

- name: Run Smoke Tests
  id: smoke
  run: hurl --test --max-time 10 --variable base_url=${{ env.APP_URL }} smoke-tests/*.hurl

- name: Run Full Test Suite
  run: npm test
  if: steps.smoke.outcome == 'success'
# GitHub Actions — curl smoke as gate (no Hurl install needed)
- name: Run Smoke Tests
  id: smoke
  env:
    BASE_URL: ${{ env.APP_URL }}
  run: bash smoke-tests/smoke.sh

- name: Run Full Test Suite
  run: npm test
  if: steps.smoke.outcome == 'success'

クイックチェックリスト

  • スモークテストの場所を特定する(smoke-tests/ ディレクトリ、.hurl ファイル、または smoke.sh)
  • 重要なワークフローを列挙する:認証、作成、読み取り、一覧表示、ヘルスチェック
  • 対象を絞ったチェックを 5~10 個作成する — 正常系のみ
  • テストスイートの前に環境を準備する(認証トークン、ベース URL)。必要に応じて終了後に後片付けする
  • 単独で実行する。すべて成功してからフルテストスイートを実行する
  • CI パイプラインの最初のゲートとして組み込む

統合例

特定: あるオンラインストア API の最も重要な経路は、「ユーザーがログインしてカートを読み込めるか?」です。 これが失敗すれば、ほかのすべてが意味をなしません。スモークテストに最適な候補です。複数ステップの HTTP フロー(ログイン、トークンの取得、トークンの使用)なので、Hurl を使います。

作成 smoke-tests/login-cart.hurl:

POST {{base_url}}/login
{ "email": "[email protected]", "password": "{{smoke_pw}}" }
HTTP 200
[Captures]
token: jsonpath "$.token"

GET {{base_url}}/cart
Authorization: Bearer {{token}}
HTTP 200
[Asserts]
jsonpath "$.items" exists
hurl --test --variable base_url=https://staging.example.com \
            --variable smoke_pw=$SMOKE_PW smoke-tests/login-cart.hurl

CI に組み込む — フルテストスイートの実行前に通過させます:

- name: Smoke
  id: smoke
  run: hurl --test --variable base_url=${{ env.APP_URL }} smoke-tests/*.hurl
- name: Full suite
  run: npm test
  if: steps.smoke.outcome == 'success'

正常系のみ、2 つのリクエストで、1 秒未満で実行できます。ログインまたはカートに問題があれば、フル テストスイートは開始されません。


必要に応じて読む

読むタイミングファイル
Hurl のテンプレート、変数、CI スニペット、パターンが必要な場合references/hurl.md
Hurl が利用できない場合/curl+jq のシェルスクリプトのテンプレートが必要な場合references/curl.md

ベンチマーク

シナリオ:.benchmarks/scenarios/smoke-tests-001-ci-gate.md · 実行日:2026-08-31 · ログ:.benchmarks/runs/2026-08-31/smoke-tests-001-ci-gate.json

モデルなしあり差分
claude-opus-4-850%100%+50%
claude-sonnet-4-633%100%+67%
claude-haiku-4-550%100%+50%

合格(実行日:2026-08-31)。すべてのモデルで一貫して向上しており、CI ゲートの基準をすべてのモデルで満たしています。.agents/skills/skill-optimizer/rules/release-gates.md に従ってゲートを設定してください。

コメント