メインコンテンツへスキップ
TOP/ サービス/ MCPツール/ テストコード品質チェック
BETA / QA向けMCP / test-smell-lintテスト

テストコード品質チェック

そのテストコード、読みにくく壊れやすくなっていませんか。

無料ベータ・面談制/正式版は有料提供予定

Python・JavaScript・TypeScript・TSX 決定的(LLM不使用)
  • 所要時間: 30分
  • 進め方: 現場の状況をヒアリングし、最初に効くツールと順番を一緒に決めます
  • ご準備は不要です

概要

汎用LLMに「このテスト大丈夫?」と聞くと見落としは運次第です。本ツールは構文木の規則照合で、信頼性を損なう書き方を漏れなく・再現可能に検出し、CIゲートにできるようにします。アサートの「効き」とは責務を分け、構造的な書き方の臭いだけに専念して二重検出を避けます。

効果

  • フレーキー(不安定)・信頼できないテストの原因となる書き方を機械的に検出する。
  • 各指摘に位置(関数名/行)・深刻度・直し方が付き、何をどう直せばよいかが分かる。
  • 決定的・鍵不要で再現可能。CIのブロッキングゲート(high件数0など)に載せられる。
  • アサートの効きは別ツールに委譲し、二重検出を排除した役割分担。
  • 誤検出は report_outcome で報告すればallowlistに載り、以後は自動で抑制される(サーバは何も保存しないステートレス設計)。

インプット

  • テストコード

汎用LLMとの違い

テストスメルのカタログ・検出規則・しきい値が bubo 独自の中核です。LLMが運次第で見落とす構造的アンチパターンを構文木の規則照合で漏れなく・再現可能に拾い、効きの評価と責務分離して二重検出を排除します。

EXAMPLE

実際の入力と、返ってきた出力

同じテストコードと問いかけを、汎用AIと test-smell-lint にそのまま渡した実際のやりとりです(要約ではありません)。

入力したテストコード(実物)
def test_checkout_completes_before_timeout():
    start = datetime.now()
    time.sleep(0.1)
    assert start is not None

def test_checkout_handles_optional_discount():
    order = {"discount": None}
    if order["discount"]:
        assert order["discount"] > 0
    else:
        assert order["discount"] is None

def test_checkout_ignores_payment_gateway_errors():
    try:
        raise ValueError("gateway down")
    except Exception:
        pass
汎用AIの回答(実測)
同じ3スメルを的中させ(recall=1.0)、それぞれ「トートロジーテスト」「デッドコード分岐」「見せかけのテスト」といった説得力ある言葉で説明しました。ただしラベル外の指摘が1件混在しています(hallucinations=1)。さらに「難所」ケース(datetime.now()を2回呼んで差分を確認する、意図的に安全な書き方のテスト)では誤検出0件でした。
test-smell-lint の回答(実測そのまま)
verdict=warn。テスト関数3件中3件にスメル。3件検出
- time_dependency(medium) — 実時間依存をやめ時間を注入/固定
- conditional_logic(medium) — テスト内条件分岐をやめケースごとに分割
- swallowed_exception(high) — 例外を握りつぶさず明示的に検証

recall=1.0。清潔版(時間注入・パラメータ化・例外を明示的にassertする形へ修正)では verdict: pass、誤検出0件です。

汎用AIの回答にはラベル外の指摘が混在します(実測・hallucinations=1)。本ツールは固定の種別・同入力同出力で返り、CIゲートにできます。

社外秘のコードを、どう守るか

buboは入力を保存しません

ツールに渡したコード・仕様・データを、buboのサーバーは保存しません。bubo自身が学習に使うこともなく、処理はその場限りです。

AIに送るか・どこへ送るかは、あなたが握ります

標準のキーレス接続では、意味を読む処理は普段お使いのAIクライアントの中で実行されます。データの扱いは、お客様とそのプロバイダの既存のご契約のもとにあり、buboがAPIキーやコードをお預かりすることはありません。ご自身の契約するプロバイダを直接指定したい場合は、BYOK(Bring Your Own Key)として任意で設定できます。

AIに送らず動くツールも多くあります

多くのツールは決定的な静的解析だけで完結し、LLMに渡すのは必要な場面に限られます。AIに送る範囲を、あなた自身で絞り込めます。

ワンタイムコードは単回使用・有効期限7日・サーバーに平文保存はしません。発行したトークンは設定ファイルに直書きせず環境変数で参照します。既存のMCP設定がある場合も、壊さず冪等にマージします。

どう申し込み、どうつなぐのか

STEP 1

1. 面談を予約する

予約フォームから面談をお申し込みください。現在のQAの困りごとと、試したいツールをお聞かせいただきます。

STEP 2

2. 面談で適用先を一緒に決める

そろえたツールのうち、貴社の工程で効く順番をご一緒に見立てます。ワンタイムコードと接続コマンドは、面談後にあわせてお渡しします。

STEP 3

3. コード1つ、コマンド1行で接続

お受け取りしたワンタイムコードで、コマンドを1行実行(Windows / mac / Linux 各1行)。有効化・MCP設定(.mcp.json)生成・環境変数設定まで自動で完了します。あとはAIクライアント(Claude Code / Gemini CLI)を再起動するだけで、そのままQA方法論を呼び出せます。APIキーのご用意は不要です。ご自身の契約するLLMを使いたい場合は、BYOK(Bring Your Own Key)として任意で設定いただけます。

← QA向けMCPツール一覧へ戻る

AIの番人になる道具「Nioh」を、まず試す

貴社のQA工程に合わせて、Niohのどのツールから始めるかをご一緒に見立てます。無料ベータの枠には限りがあります。まずは面談からお気軽にどうぞ。