
AIを使って既存コードからテストケースを自動生成
はじめに
ソフトウェア開発において、テストコードの重要性は広く知られています。
一方で実務では、次のような課題を感じる場面も少なくありません。
・テスト環境の準備に時間がかかる
・テスト作成が後回しになりがち
・仕様変更のたびにテスト修正コストが発生する
そこで今回は、環境構築を最小限に抑えつつ、AIでテスト観点を自動生成できるかをテーマに検証を行いました。
今回やったこと
今回行ったことは非常にシンプルです。
- 既存のJavaScript関数を1つ用意
- そのコードをAIに渡し、テストケースを生成
- ブラウザの開発者ツール(Console)上で動作確認
- 実務での有効性を評価
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はテストを「自動化する」だけでなく、テストを考える負担そのものを軽減するツールとしても有効だと感じました。
まずは小さな関数から、気軽に試してみるのがおすすめです。