AIを使って既存コードからテストケースを自動生成

はじめに

ソフトウェア開発において、テストコードの重要性は広く知られています。
一方で実務では、次のような課題を感じる場面も少なくありません。
・テスト環境の準備に時間がかかる
・テスト作成が後回しになりがち
・仕様変更のたびにテスト修正コストが発生する

そこで今回は、環境構築を最小限に抑えつつ、AIでテスト観点を自動生成できるかをテーマに検証を行いました。

 

今回やったこと

今回行ったことは非常にシンプルです。

  1. 既存のJavaScript関数を1つ用意
  2. そのコードをAIに渡し、テストケースを生成
  3. ブラウザの開発者ツール(Console)上で動作確認
  4. 実務での有効性を評価

Node.js やテストフレームワークは使用せず、あくまで「テスト観点の妥当性確認」にフォーカスしています。

また今回はChatGPTを利用しました。

対象となる既存コード

今回の検証では、以下のような関数を対象としました。

function calculateTotalPrice(price, quantity) {

    if (price < 0 || quantity < 0) {

        throw new Error("Invalid argument");

    }

    if (quantity >= 30) {

        return price * quantity * 0.7;

    }


    return price * quantity;

}

仕様は以下の通りです。

price または quantity が負数の場合はエラー

quantity が30以上の場合は30%割引

それ以外は通常計算

 

AIに与えたプロンプト

AIには、次のようなプロンプトを与えました。

以下のJavaScript関数に対して、
ユニットテストのテストケースを作成してテストを実行できるコードを作成してください

– 正常系
– 異常系
– 境界値

テストケースの内容が分かる形で出力してください。

【対象コード】
(ここに関数コードを貼り付け)

今回はテストコードそのものよりも、テスト観点の網羅性を重視しています。

 

AIが生成したテストケース

AIからは、以下のようなテストケースが生成されました。

・正常系

price=100, quantity=2 → 200

price=100, quantity=30 → 2100(割引適用)

・境界値

quantity=29

quantity=30

・異常系

price < 0

quantity < 0

これらをそのままブラウザのConsoleで実行し、結果を確認しました。

calculateTotalPrice(100, 2); // 200
calculateTotalPrice(100, 30); // 2100
calculateTotalPrice(100, 29); // 2900
calculateTotalPrice(-100, 1); // Error
calculateTotalPrice(100, -1); // Error
calculateTotalPrice(-100, -1); // Error

実際に使ってみた感想

・テスト観点を短時間で洗い出せる

・「何をテストすべきか」が明確になる

特に、既存コードに後付けでテストを考える場合に非常に有効だと感じました。

おわりに

・AIを活用することで、テスト観点を短時間で整理できる
・テスト作成の心理的ハードルを下げられる
というメリットが確認できました。

今後は、この観点をベースに「テストコードへ落とし込む」といった使い方も検討していきたいと考えています。

AIはテストを「自動化する」だけでなく、テストを考える負担そのものを軽減するツールとしても有効だと感じました。

まずは小さな関数から、気軽に試してみるのがおすすめです。

--------------------------
開発支援・技術研修のご要望・ご相談はこちらから
--------------------------
【この技術ブログを読んだエンジニアの皆様へ】
カサレアルブログをお読みいただき、ありがとうございます!

私たちは、常に新しい技術に挑戦し、ユーザーのニーズに応えるサービスを提供しています。
もし、当社の技術への情熱や、会社・チーム・社員の雰囲気に共感いただけたなら、
ぜひ私たちと一緒に働きませんか?
現在、株式会社カサレアルでは事業拡大に伴い、新たな仲間となるエンジニアを積極的に募集しています。

少しでも興味をお持ちいただけましたら、まずは弊社のことを知っていただけると嬉しいです。
▼採用サイト
https://www.casareal.co.jp/recruit/career
▼社員インタビュー
https://hrmos.co/pages/casareal/jobs/0000016
▼エンジニアの仲間になる! エントリーはこちらから
https://hrmos.co/pages/casareal/jobs

皆様のエントリーを心よりお待ちしています!

そろそろGitにしたい方へ、SVNとの構造の違いについて

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

コメント ※

名前 ※

メール ※

サイト