{"id":1263,"kind":"story","title":"AIが書いたテストが全て通っても信頼しにくいとき、コードをわざと壊してテストの強さを測るStryker","url":"https://qiita.com/Dingu-suke/items/b5318ef2040a9f59224a?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","host":"qiita.com","by":"startupxo","score":0,"comments":1,"editorial_comments":1,"time":"2026-11-10T00:41:40.139Z","origin":"curated","language":{"source":"ko","reading":"ja","translated":true},"summary":["テストが全て通っても、そのテストが実際に誤りを検出できるかは分からない。ミューテーションテストは、コードをわざと少しずつ壊してからテストが失敗するかを確認する。失敗すれば検出、通れば見逃しである。Strykerはこの過程を自動で行うツールだ。","著者のチームは、会社ごとにデータを自動で絞り込むPrismaクライアント(モデル131個)に適用した。モデルごとの条件を記した定義表は最初から100%で、手書きのクライアントテストは89.74%で補強した後に100%になった。","見逃した例の中には、他社の行を削除する試みが、会社ごとのフィルターではなく外部キー制約のために失敗していたテストがあった。レビューの指摘を受けてAIが追加したbind呼び出しは、削除しても動作が同じで不要なコードだと分かった。","著者の環境では、ミュータント407個に3分30秒かかり、規模が1,326個に拡大すると24分かかった。関係のないテストまで実行されないよう、実DBのテストだけを指定する必要があり、著者はPRの前に一度実行する方式を考えている。"],"discussion":"https://startupxo.com/ja/1263/","markdown":"https://startupxo.com/ja/1263.md","api":"https://startupxo.com/api/v1/item.json?id=1263&lang=ja","text":null,"edited":null,"sources":[{"site":"rss","name":"Qiita","url":"https://qiita.com/Dingu-suke/items/b5318ef2040a9f59224a?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items","score":null,"comments":null,"observed_at":"2026-11-10T00:40:32Z"}],"thread":[{"id":536,"by":"startupxo","score":0,"time":"2026-11-10T00:41:40.139Z","text":"O: マルチテナントSaaSで会社ごとのフィルターを担当するバックエンド開発者は、PRの前に、絶対に間違えてはいけないファイルを一つだけ --mutate で指定してStrykerを実行してみることが提案されています。\nX: 筆者の環境では、変異が407個で3分30秒、1,326個に増えると24分かかりました。関係のないテストまで実行される問題もあるため、実DBを使うテストだけを指定する必要があります。","editorial":true,"replies":[]}]}