Take's Software Engineer Blog

TOEIC200点&プロマネな私が社内公募を経て、ソフトエンジニア&英語部門へ異動して奮闘していく話をしていきます

ChatGPTを使い簡単に単体テストコードを作る方法(CppUTest環境)

ChatGPTによる単体テストコード作成方法

 

ChatGPTというAIツールの紹介が最近話題になっています。

これまでに、ChatGPTを利用した動作作成・ブログ作成などを当ブログでは紹介してきました。

今回ソフトウェアエンジニア向けに、単体テストコードを作る方法を紹介します。

テスト駆動は流行っていますが、テストコードから作ることは面倒です。誰もやりたがりません。

面倒な作業をChatGPTを利用し作ってもらうことで、私たちがコードの作成に集中できるようにすることが目的です。

今回の記事では、Cpputest環境をベースにした作り方を紹介するので、職場で使ってもらえるとうれしいです。

 

 

ChatGPTを利用した単体テストコード作成方法

  • Cpputestの環境を準備する
  • 実装したいコードを記述する
  • ChatGPTを使い単体テストコードを実装してもらう

 

Cpputestの環境を準備する

Cpputestの環境構築については、以下のブログが参考になります。

今回下記使い方に従いEclipseで環境構築しています。

yukblog.net

 

実装したいコードを記述する

今回使用するサンプルは、

入力引数として与えた2つの数の差分を計算する関数です。
入力引数と計算結果の値に制限を設けており、いずれかの値が-100以下になると、

例外処理として1を返します。また、いずれの値も-100以下にならなければ、引き算を計算して、最後に0を返します

 

unsigned int Minus(
    int data1,
    int data2,
    int *ans)
{
    int min = -100;
    *ans = data1 - data2;
    if ((min >= data1) || (min >= data2) || (min >= *ans))
    {
        return 1;
    }
    return 0;
}

ChatGPTを使い単体テストコードを実装してもらう

次にChatGPTを使います。

必要な指示としては、テストするテストコードとテスト観点を入力しましょう

テスト観点は、複数ありますが、ブラックボックスとして同値テスト・境界値テスト、ホワイトボックステストとしてカバレッジ率を満たすような指示を記載しています。

この記載に従って、コードを勝手に作ってくれるので、どんなテストが必要かどうかの知識は別途書籍等で学んでください。

ChatGPTによる単体テストコード生成

観点ごとにテストコードを出力してくれるので、あとはコピペするだけです。

ブラックボックステスト、ホワイトボックステストを指示を別にしたほうが良いです。

多すぎると途中で切れてしまうことがあるためです。

ブラックボックステスト

ホワイトボックステスト

という形で、ホワイトボックステスト、ブラックボックステストを書いてもらい7つのテストコードを生成することができました。

業務においては、各自の満たす要件が異なるため、もっとテスト観点を増やす必要があるかもしれません。

以前に比べてChatGPTを利用すると単体テストを簡単に生成することができたと思います。名前の命名もしているので、TEST1~4とか何をしているのか不明であることも避けられますし、基本的なサンプルコードとして使うのはありだと思っています。

div #breadcrumb div{ display: inline;font-size:13px;}