1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

「AIにコードを書いてもらえる時代に、テストなんて必要?」と思っていませんか?実はAIが生成するコードほどテストが重要です。本記事ではTDD(テスト駆動開発)の考え方と、なぜテストが必要なのかを初学者向けに短く整理します。

1. なぜテストが必要なのか

人間もAIも「バグを埋め込む」

どんな熟練エンジニアも、AIも、書いたコードが完全に正しいとは言い切れません。特にAIが生成したコードは「見た目は正しそうだが、エッジケースで壊れる」ことが頻繁にあります。

テストがない場合に起きること

状況 問題
機能を追加したら別の機能が壊れた 気づかずにリリースしてしまう
AIに修正を依頼したら元の動作が変わった 元の正しい動作が何かわからない
半年後に自分のコードを直す どこを変えると何が壊れるか不明

テストは「コードが期待通りに動くという証明書」です。

2. TDDとは

TDD(Test-Driven Development=テスト駆動開発)は「先にテストを書いてから実装する」開発手法です。

Red → Green → Refactor の3ステップ

① Red      : まず失敗するテストを書く(実装がまだないので当然失敗)
② Green    : テストが通る最低限のコードを書く
③ Refactor : コードをきれいにする(テストが通ることを確認しながら)

この3ステップを小さく繰り返します。

具体例:足し算関数をTDDで作る

① Redフェーズ(テストを先に書く)

# test_calc.py
def test_add():
    assert add(1, 2) == 3  # addはまだ存在しないので当然失敗する

② Greenフェーズ(最低限の実装)

# calc.py
def add(a, b):
    return a + b

③ Refactorフェーズ

今回はシンプルなので不要。複雑なロジックではここでコードを整理します。

3. AI時代にTDDが特に有効な理由

場面 TDDのメリット
AIにコード生成を依頼する 生成前にテストを書いておけば、出力が正しいかをすぐ判定できる
AIに修正を依頼する 既存のテストが通り続ければ、動作が壊れていないと確認できる
バイブコーディング(AI全任せ) テストがないと何を信頼すればいいかわからない

AIはコードの「生成速度」は上げてくれますが「正しさの保証」はしてくれません。その保証を担うのがテストです。

4. TDDのメリット・デメリット

メリット デメリット
バグを早期発見できる テストを書く分の工数がかかる
リファクタリングが安心してできる テスト設計を間違えると意味がないテストになる
仕様がテストコードとして残る 慣れるまでは「先にテスト」という発想に戸惑う

最初から100%のTDDを目指さなくても大丈夫です。「重要な関数にテストをつける」習慣から始めると無理なく続けられます。

まとめ

項目 ポイント
なぜテストが必要か 人間もAIもバグを埋め込む。テストは動作の証明書
TDDの流れ Red(テスト失敗)→ Green(実装)→ Refactor(整理)
AI時代における価値 AIの出力の正しさを検証する手段として特に有効

さいごに

テストコードがあることで、プログラム改修後のデバッグ確認が容易になります。ただし、改修を行なう度にテストコードの追加等の手間はかかってしまいます。

次回はPythonのテストフレームワーク「pytest」の基本的な使い方を解説します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?