1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIのハードルを下げたい!Advent Calendar 2023

Day 11

GPTsを活用したテスト駆動開発について

Last updated at Posted at 2023-12-10

はじめに

こんにちは!
この記事ではGPTsを用いてテスト駆動開発を行う方法について説明します。作成したGPTs『テスト駆動開発メンター』は、ユーザーがテスト駆動開発をステップ・バイ・ステップで進められるようサポートします。ソフトウェア開発のみならず、機械学習やデータ分析プロジェクトにおいてもテスト駆動開発を取り入れることは重要だと考えています。

テスト駆動開発とは
テスト駆動開発(TDD)は、ソフトウェア開発の手法の一つです。このアプローチでは、まず失敗するテストケースを書き、それをパスする最小限のコードを記述し、最後にコードをリファクタリングするという短い開発サイクルを繰り返します。この方法は、開発の初期段階でバグを発見しやすく、保守性の高いクリーンなコードを書くことを促進します。

image.png

「テスト駆動開発(TDD)とは?目的やメリット・デメリット、やり方を解説」より図を引用

GPTsとは
GPTsは、ChatGPTをカスタマイズできる機能で、2023年11月7日(日本時間)のOpenAI DevDayで発表されました。

メインに想定している読者様

この記事は、以下のような方をメインに想定して執筆しました。

  • GPTsやテスト駆動開発に興味がある方
  • テストコードの重要性を認識しているデータサイエンティスト
  • テスト駆動開発のサポートをする専属メンターが欲しい方

GPTsを用いてテスト駆動開発を行う

作成したGPTs『テスト駆動開発メンター』

本記事では、題材としてフィボナッチ数列を扱います。言語はPythonで、テストフレームワークはpytestを用います。

フィボナッチ数列とは
フィボナッチ数列とは、各項が前の2項の和である数列です。最初の2項は通常、0と1で、次の項は前の2項を足した数になります(例:0, 1, 1, 2, 3, 5, 8, ...)。

pytestとは
pytest はPython用のテストフレームワークで、Python標準の unittest フレームワークと同様に広く使用されています。直感的な構文と拡張性が特徴で、さまざまなテストに柔軟に対応できます。

Step1: レッド

テスト駆動開発の最初のステップは、失敗するテストケースを書くことです。このステップでは、まだ実装されていない機能のためのテストを書きます。例えば、フィボナッチ数列の第n項を計算する関数のテストを書くとします。

image.png

Step2: グリーン

次に、書かれたテストをパスするための最小限のコードを書きます。この段階では、コードの品質よりもテストの成功を優先します。フィボナッチ数列を計算する関数を実装し、テストがパスするようにします。

image.png

Step3: リファクタリング

最後のステップは、テストケースが通る状態を保ちながら、コードをリファクタリングすることです。ここでは、コードの品質を向上させ、保守性や可読性を高めることが目的です。例えば、重複を排除し、名前を適切に付けるなどのリファクタリングを行い、複雑なロジックを簡略化します。

image.png

以降は、またレッドステージに戻り、別の実装に移ります。

おまけ

テスト駆動開発の勉強に役に立った教材たちを簡単にまとめているので良かったらみてください~!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?