ChatGPTの手:コードスニペット生成とテストケース作成
前回の記事「ChatGPTの目:コード解析とバグ修正」に続き、今回はChatGPTでどのようにコードスニペットを生成し、テストケースを作成するかについて解説します。
コードスニペット生成
コードスニペットは、特定のタスクを実行するための短いソースコードの断片です。このセクションでは、ChatGPTにどのようなプロンプトを入力すると、求めるコードスニペットが生成できるかについて説明します。
具体的な例として、「文字列が全角カタカナかどうかを正規表現で判定する。長音記号"ー"は全角カタカナと判定する。半角カタカナは全角カタカナに含めない。」というケーススタディを取り上げます。
以下の条件を満たすコードスニペットを作成してください。
#プログラミング言語:[コードスニペットを作成したいプログラミング言語名]
#コードスニペットの内容:
[作成してもらいたいソースコードを明確に指示する。必要に応じて具体例を記載する。]
以下の条件を満たすコードスニペットを作成してください。
#プログラミング言語:PHP
#コードスニペットの内容:
文字列が全角カタカナかどうかを正規表現で判定する。長音記号"ー"は全角カタカナと判定する。半角カタカナは全角カタカナに含めない。
以下のPHPコードスニペットは、文字列が全角カタカナかどうかを正規表現で判定します。長音記号"ー"も全角カタカナと判定しますが、半角カタカナは全角カタカナに含めません。
<?php
function isKatakana($str) {
return preg_match("/^[ァ-ヶー]+$/u", $str);
}
$str = "カタカナ";
if (isKatakana($str)) {
echo $str . "は全角カタカナです。";
} else {
echo $str . "は全角カタカナではありません。";
}
?>
このコードは、与えられた文字列が全角カタカナのみで構成されているかどうかを判定します。全角カタカナのみであれば true を、そうでなければ false を返します。この関数を使用して、任意の文字列が全角カタカナかどうかを確認することができます。全角カタカナであれば、メッセージ “は全角カタカナです。” が表示され、そうでなければ “は全角カタカナではありません。” が表示されます。このコードスニペットを適宜調整して、ご自身のニーズに合わせてご利用ください。ただし、このコードはUTF-8エンコーディングを前提としています。他のエンコーディングを使用している場合は、適切に調整する必要があります。
このコードは短く、明確な命名規則が用いられており、そのため読みやすいです。また、正規表現は一般的に広く使われているため、多くの開発者が理解できます。また「ヵ月」や「ヶ谷」といった一部の地名や固有名詞に使われる「ヵ」と「ヶ」も全角カタカナと判定しているところがポイントです。
この「ヵ」と「ヶ」全角カタカナに含めたくない場合は『「ヵ」と「ヶ」は全角カタカナに含めないでください。』と追加の指示をしてください。
テストケース作成
このセクションでは、ChatGPTにどのようなプロンプトを入力すると、求めるテストケースが作成できるかについて説明します。具体的な例として、コードスニペット生成で作成された「isKatakana」関数のテストケースを作成するとともにテストコードを作成します。
1.以下のプログラミング言語で記述されたソースコードを検証するテストケースを作成してください。
2.テストケースは文章でケースと期待値をCSV形式で出力してください。
2.1.テストケースの項目は以下とします。
No,テストケース,観点,入力値,期待値
3.テストの観点は テストケースに含める観点 を全て含めてください。
4.最後に全てのテストケースを実施するためのテストコードを出力してください。
#プログラミング言語:[テストケースを作成したいプログラミング言語名]
#テストケースに含める観点:[テストケースに含める観点]
#テストケース
#テストコード
#ソースコード
[テストケースを作成したいソースコード]
1.以下のプログラミング言語で記述されたソースコードを検証するテストケースを作成してください。
2.テストケースは文章でケースと期待値をCSV形式で出力してください。
2.1.テストケースの項目は以下とします。
No,テストケース,観点,入力値,期待値
3.テストの観点は テストケースに含める観点 を全て含めてください。
4.最後にテストケースを実施するためのテストコードを出力してください。
#プログラミング言語:PHP
#テストケースに含める観点:同値クラス分割、境界値分析、NULL値、空文字、半角空白、全角空白、半角カタカナ
#テストケース
#テストコード
#ソースコード
function isKatakana($str) {
return preg_match("/^[ァ-ヶー]+$/u", $str);
}
以下は、指定された観点を含むテストケースとその期待値、そしてテストコードです。
テストケース
No,テストケース,観点,入力値,期待値
1,正常な全角カタカナ,同値クラス分割,"カタカナ",true
2,半角カタカナ,半角カタカナ,"カタカナ",false
3,境界値(空文字),境界値分析,"",false
4,NULL値,NULL値,NULL,false
5,半角空白を含む全角カタカナ,半角空白,"カタ カナ",false
6,全角空白を含む全角カタカナ,全角空白,"カタ カナ",false
テストコード
function test_isKatakana() {
assert(isKatakana("カタカナ") == true);
assert(isKatakana("カタカナ") == false);
assert(isKatakana("") == false);
assert(isKatakana(NULL) == false);
assert(isKatakana("カタ カナ") == false);
assert(isKatakana("カタ カナ") == false);
}
test_isKatakana();
このテストコードは、各テストケースをisKatakana関数に適用し、結果が期待値と一致することを確認します。一致しない場合、エラーメッセージが表示されます。このテストコードを実行することで、isKatakana関数の正確性を確認できます。ただし、このテストコードはあくまで一例であり、実際のテスト環境によっては適切に動作しない場合があります。必要に応じて適宜修正してください。また、テストケースは網羅的ではないため、必要に応じて追加してください。
以上がChatGPTがコードスニペットの生成とテストケースの作成を行う方法についての解説です。ChatGPTを活用することで、開発者はより効率的にコードを書き、テストを行うことができます。
次回予告
次回は「ChatGPTの心:コードリファクタリング」を解説します。お楽しみに!