不安定テスト検出
たまに落ちて、また通る。あの不安定なテストに悩まされていませんか。
無料ベータ・面談制/正式版は有料提供予定
- 所要時間: 30分
- 進め方: 現場の状況をヒアリングし、最初に効くツールと順番を一緒に決めます
- ご準備は不要です
概要
flaky(不安定)テストは CI を不安定にし、本物の不具合を「また誤検知だろう」と見逃させる温床になります。しかも実行時にしか現れないため、発生してからの再現・特定が困難です。コードを書いた時点で非決定の起点を機械的に潰し、安定して信頼できるテストスイートを保てるようにします。
効果
- flaky の典型原因を実行前に列挙し、CI が赤くなってから再現に追われる時間を減らす。
- 各検出に「なぜ不安定か」と「どう直すか」が付き、修正まで最短で導く。
- 決定的層は鍵不要・同入力同出力なので、CIで非決定の混入を機械的に止められる。
インプット
- 対象実装コード
- テストコード
汎用LLMとの違い
どの構文・属性・モジュールを非決定とみなし、どの場合に対策済み(seed/mock)として抑制するかの検出カタログ・しきい値が bubo 独自の中核です。汎用LLMに「これ不安定?」と聞くと運次第なのに対し、構文木の規則照合で漏れなく拾い、保守的な抑制で誤検出を抑えます。
実際の入力と、返ってきた出力
同じコードを flake-forecast にそのまま渡した実際の出力です(要約ではありません)。
def compute_settlement_batch_id():
return datetime.now().strftime("%Y%m%d")
def pick_retry_delay():
return random.random() * 5
def fetch_exchange_rate(currency):
resp = requests.get(f"https://rates.example.com/{currency}")
return resp.json()["rate"]
def is_fee_waived(fee):
return fee == 0.1
verdict=warn。4件の非決定リスクを検出 - time_dependency(medium) — compute_settlement_batch_id の時刻依存 - uncontrolled_randomness(high) — pick_retry_delay のseed未固定 - external_io(high) — fetch_exchange_rate のmock無し外部HTTP呼び出し - float_equality(medium) — is_fee_waived の浮動小数点等値比較 recall=1.0(4件すべて的中)。清潔版(時刻/乱数/HTTPクライアントを注入可能にし、浮動小数を許容誤差比較に変更)では verdict: pass、誤検出0件です。
flake-forecastは、時刻・乱数・外部I/O・浮動小数比較といった4種の非決定性を、毎回同じ観点・同じ深刻度で機械的に検出し、CIのゲート条件(例: high以上0件)にできます。
社外秘のコードを、どう守るか
buboは入力を保存しません
ツールに渡したコード・仕様・データを、buboのサーバーは保存しません。bubo自身が学習に使うこともなく、処理はその場限りです。
AIに送るか・どこへ送るかは、あなたが握ります
標準のキーレス接続では、意味を読む処理は普段お使いのAIクライアントの中で実行されます。データの扱いは、お客様とそのプロバイダの既存のご契約のもとにあり、buboがAPIキーやコードをお預かりすることはありません。ご自身の契約するプロバイダを直接指定したい場合は、BYOK(Bring Your Own Key)として任意で設定できます。
AIに送らず動くツールも多くあります
多くのツールは決定的な静的解析だけで完結し、LLMに渡すのは必要な場面に限られます。AIに送る範囲を、あなた自身で絞り込めます。
ワンタイムコードは単回使用・有効期限7日・サーバーに平文保存はしません。発行したトークンは設定ファイルに直書きせず環境変数で参照します。既存のMCP設定がある場合も、壊さず冪等にマージします。
どう申し込み、どうつなぐのか
1. 面談を予約する
予約フォームから面談をお申し込みください。現在のQAの困りごとと、試したいツールをお聞かせいただきます。
2. 面談で適用先を一緒に決める
そろえたツールのうち、貴社の工程で効く順番をご一緒に見立てます。ワンタイムコードと接続コマンドは、面談後にあわせてお渡しします。
3. コード1つ、コマンド1行で接続
お受け取りしたワンタイムコードで、コマンドを1行実行(Windows / mac / Linux 各1行)。有効化・MCP設定(.mcp.json)生成・環境変数設定まで自動で完了します。あとはAIクライアント(Claude Code / Gemini CLI)を再起動するだけで、そのままQA方法論を呼び出せます。APIキーのご用意は不要です。ご自身の契約するLLMを使いたい場合は、BYOK(Bring Your Own Key)として任意で設定いただけます。