Slide 1

Slide 1 text

カバレッジを通すとはどういうことであって、 どういうことでないのか 2026/10/3 PHPカンファレンス愛媛2026

Slide 2

Slide 2 text

satak(さたけ) ・札幌在住 / 初めて愛媛に来ました ・株式会社teketのバックエンドエンジニア 電子チケット販売プラットフォームの開発してます ・カンファレンスが好き スタッフ: PHPカンファレンス小田原2026, フロントエンド・PHPカンファレンス北海道2026など ・カンファレンス初登壇 2 / 13

Slide 3

Slide 3 text

テスト、誰が書いていますか? 私の現場では、ほぼAIが書いている → カバレッジの数字は比較的簡単に上がる → でもその数字は、何を意味しているのか? 3 / 13

Slide 4

Slide 4 text

「カバレッジ100%です」「何の100%ですか?」 指標を明示しない「100%」は、ほとんど意味をなさない 本トークでは C0 = 命令網羅 / C1 = 分岐網羅 / C2 = 条件網羅 とします 4 / 13

Slide 5

Slide 5 text

例えばこんなすれ違い Aさん:「カバレッジ100%です」 Bさん:(C0 のつもりで聞いていた) Aさん:(実は C2 だった) 100%という数字だけでは、2人は同じものを見ていない 5 / 13

Slide 6

Slide 6 text

if ($a && $b) { ... } C0(命令網羅) → if文を通ったか C1(分岐網羅) → 分岐の両側を通ったか C2(条件網羅) → 各条件の真偽を確かめたか 同じ一行でも、「通った」の中身が違う 6 / 13

Slide 7

Slide 7 text

例えばこんな割引判定 if ($amount >= 5000 && $isMember) { ... } (6000, true) と (4000, false) で C0 も C1 も 100% でも (6000, false) は 誰も確かめていない &&(かつ) が ||(または) に化けても、この2件のテストはグリーンのまま通る 人が書いてもAIが書いても、C1 100%はこの2件で達成できてしまう 7 / 13

Slide 8

Slide 8 text

カバレッジを通す ≠ 仕様の正しさを証明する 教えてくれること どこを通ったか 教えてくれないこと そのテストが何を守っているか/仕様が正しいか/バグがないか 8 / 13

Slide 9

Slide 9 text

じゃあ、C2を使えば安心? C2・カバレッジ100%でも 「仕様通りに動く」ことの証明にはならない ・網羅は「調べ尽くした」ことであって「正しい」ことではない ・大事なのは「完璧な指標」を選ぶことではなく、 選んだ指標が何を守っているかチーム内で認識をそろえること 9 / 13

Slide 10

Slide 10 text

そういえばこれまでの現場のほとんどで、 カバレッジのルールが無かった 違和感はあったが、一人でルール化するのは簡単ではなかった😥 10 / 13

Slide 11

Slide 11 text

最近、自分が主導する機会を得た metric: C1 floor : 70% C0 では緩すぎる。C2 はいきなり現場に持ち込むには重い。 70% は目標ではなく、下回ったら立ち止まる床。 ※ これが正解ということではなく、私の現場での判断 11 / 13

Slide 12

Slide 12 text

議論を始める前に「どの指標の100%か」を揃えよう 指標がずれたまま数字だけ比べても、認識が揃わず議論にならない 割引判定の例でも、先に「何の100%か」を揃えていれば、 見落としているケースに気づけたかもしれない AIがテストを書く今、 揃えた指標はそのままAIへの指示になる 12 / 13

Slide 13

Slide 13 text

さいごに 「カバレッジを通す」とは チームで決めた指標に対して、 どこまで検証できているかを確認すること。 「カバレッジを通す」とは、 テストが何を守っているかの保証ではない。 AIが書いたテストならなおさらそう。 大切なのは「100%か?」ではなく「その数字は何を守っているか?」 13 / 13