DEV Community

takuya
takuya

Posted on • Edited on

AI時代に手動APIテストが破綻する理由10選

「人の目で確認すれば大丈夫」という幻想

先月、僕のチームで起きた出来事です。

ChatGPTでAPIコードを生成して、いつものように手動でテストしていました。「AIが作ったコードでも、最後は人がチェックすれば問題ない」そう思っていたんです。

ところが、ある日突然、手動テストが完全に破綻しました

APIの変更スピードが速すぎて、テストが全然追いつかない。気づいたら、「確認したつもり」のAPIが本番で次々とエラーを起こすという最悪の事態に。

「なんで今まで大丈夫だったのに、急にダメになったんだろう?」

その答えが分かったとき、問題は僕のスキルじゃなくて、時代構造そのものが変わったことだと理解しました。

この記事では、僕が実際に体験した「手動APIテストの破綻」から学んだ10の教訓を共有します。

もしあなたも「まだ手動で大丈夫」と思っているなら、この話は他人事じゃないかもしれません。

僕が体験した破綻の瞬間

1. AIのコード生成速度に人間が追いつけない現実

これが一番ショックでした。

ChatGPTに「ユーザー管理APIを作って」と頼むと、5分でエンドポイント10個分のコードが出てくる。でも、それを手動でテストしようとすると、1日かかっても終わらない

  • エンドポイントが30分で5個増える
  • リクエスト構造が1時間で3回変わる
  • 影響範囲の確認だけで半日潰れる

「あれ?なんで僕だけこんなに遅いんだろう」って思ったけど、問題は僕のスキルじゃなくて、構造そのものだったんです。

2. AI生成コードの「罠」にハマった話

AIが作ったAPIって、見た目はめちゃくちゃ完成度が高いんですよ。

// ChatGPTが生成したAPI(一見完璧に見える)
app.post('/api/users', async (req, res) => {
  const { name, email } = req.body;
  const user = await User.create({ name, email });
  res.json({ success: true, user });
});
Enter fullscreen mode Exit fullscreen mode

「おお、動いた!完璧じゃん!」って思って、手動で正常系だけテストして終了。

でも後で分かったんですが、

  • 空文字列の処理が抜けてる
  • メールアドレスの重複チェックなし
  • エラーレスポンスの形式がバラバラ

手動テストだと「動いたからOK」で終わっちゃうんですよね。境界値とか異常系とか、面倒だから後回しにしがち。

3. テストケースの更新地獄

これも辛かった。

AIでAPI仕様をガンガン変更していくと、テストケースの更新が全然追いつかない

  • 月曜日:仕様書更新
  • 火曜日:実装変更
  • 水曜日:「あれ?テストケースどうなってる?」
  • 木曜日:「何をテストしてるか分からない」

結果として、古いテストケースで新しいAPIをテストするという意味不明な状況に。

4. 人によってテスト結果が変わる問題

チーム開発で一番困ったのがこれ。

  • 僕:「このAPIは正常に動作します」
  • 同僚A:「エラーが出ました」
  • 同僚B:「レスポンスが遅いです」

同じAPIなのに、テストする人によって結果が違う

手順書を作っても、

  • 環境の違い
  • 確認ポイントの違い
  • データの作り方の違い

で結果が変わってしまう。これじゃあ品質保証になりません。

破綻の根本原因を分析してみた

5. テスト結果が「消える」問題

手動テストの結果って、どこに残ります?

  • 僕のローカル環境のPostman
  • Slackの「動きました!」メッセージ
  • 手書きのメモ

全部一時的なんですよね。次の日には「あれ?昨日何をテストしたっけ?」状態。

AIで開発スピードが上がるほど、この「消える」問題が致命的になります。

6. CI/CDから完全に取り残される

これも痛かった。

チームではGitHub ActionsでCI/CDを回してるんですが、手動テストだけ完全に蚊帳の外

  • コードはプッシュで自動デプロイ
  • でもAPIテストは手動
  • 結果として「デプロイ後に問題発覚」

「テストは最後に時間があったらやる作業」になってしまいました。

7. 複数API連携のテストが現実的じゃない

AIが作るAPIって、単体じゃなくて複数のAPIが連携する前提のものが多いんです。

  • ユーザー登録 → 認証 → プロフィール更新
  • 商品検索 → カート追加 → 決済処理

これを手動で毎回テストするのは、現実的じゃない

8. 「テスト設計」が属人化する悪循環

一番怖いのがこれ。

AIがコードを書く → 人がテスト設計を考える → 特定の人しか全体を把握していない

僕が休んだら、誰もAPIテストができない状況になってしまいました。

分断された開発フローの問題

9. 仕様・テスト・実装がバラバラ

これが破綻の最大の原因だったと思います。

  • 仕様書:Notion
  • テスト:Postman
  • 実装:AI生成コード

全部別々の場所にあるから、整合性が取れない

仕様が変わっても、テストケースの更新を忘れる。実装が変わっても、仕様書の更新を忘れる。

この分断を解消するために、最終的にAPI仕様とテストを同じ場所で管理できるツールApidogとか)に移行しました。

実際、Apidogを使い始めてから、

  • 仕様変更 → テストケース自動更新
  • テスト実行 → 結果が履歴として残る
  • CI/CD連携 → 自動化テストが回る

という流れができて、「どこを、何を確認しているのか分からない」状況はかなり減りました

10. 「確認できてるつもり」の恐怖

一番危険だったのは、安心感でした。

「人が見てるから大丈夫」「触って動いたから問題ない」

でも実際は、人が全部を見ること自体が不可能になってたんです。

手動テストは「安心材料」のつもりだったけど、実は「盲点」になってました。

手動テストを完全否定するわけじゃない

誤解してほしくないんですが、手動テスト自体が悪いわけじゃありません

今でも、

  • 新機能の初期検証
  • UIとの連携確認
  • ユーザビリティのチェック

では手動テストが重要です。

ただし、手動テストを「メイン」にし続ける構造が破綻するんです。

実際、僕も以前は仕様書・テスト・実行結果がそれぞれ別の場所に分かれた状態で運用していました。最初は手動でも回りますが、API変更が増えた途端に「確認しているつもり」だけが残る状態になります。

僕が見つけた解決策:一元化された前提

結局、以下を同じ前提で管理することが重要でした:

  • API仕様
  • テストケース
  • モックデータ
  • 実行結果

最近では、これらをAPI仕様を中心にまとめて管理するアプローチが取られることも増えています。

例えば、API定義とテストを同じ前提で扱えるツール(Apidogなど)を使うことで、AI生成コードとのズレを早期に検知しやすくなるケースもあります。

※あくまで一例であり、重要なのは「構造として破綻しない仕組み」を持つことです。

まとめ:変えるべきは「前提」そのもの

AI時代に見直すべきなのは、

  • 手動か自動か
  • どのツールを使うか

じゃありません。

「人が全部確認できる」という前提そのものです。

僕も最初は抵抗がありました。でも、その前提を手放したとき、APIテストのやり方も自然と変わっていきました

もしあなたも「手動テストの限界」を感じているなら、一度立ち止まって考えてみてください。

問題は個人のスキルじゃなくて、時代構造そのものが変わった結果かもしれません。

Top comments (0)