LoginSignup
19
17

AIコードジェネレーターとTDDって親和性高くない、、、?

Last updated at Posted at 2023-06-09

目的

先日、GitHub Copilotに関するオンラインセミナーを受けていたところ
「GitHub Copilotは、エディタ上で開かれているソースの内容も考慮してソースを推論する」という特徴を聞きました。
ふと、
「テストコードさえ書いたらその要件を満たすコードを勝手に生成してくれるのでは、、、?
なんて興味が湧いたので検証してみようと思います。
もし、期待通りになったらTDDが今後さらに熱を帯びるのではないでしょうか。

使用言語: python
テストフレームワーク: pytest

まずは簡単なコードで試す

関数名から推論されないように無機質な名前にしています。

class Functions:
    def function(a ,b):
        return a + b
    

class TestClass:
    
    def test_function1(self):
        assert Functions.function(4,5) == 9
    
    def test_function2(self):
        assert Functions.function(100,150) == 250
        
    def test_function3(self):
        assert Functions.function(-5, -10) == -15

上記の関数部分を消して、GitHub Copilotに推論させてみると、、

出た!!
image.png

掛け算に変えると変換も変わりますね。
image.png

絶対値を返すような足し算には対応できない
image.png

テストケースを増やしても変わらず、、、雲行きが、、、
image.png

問題の難易度を上げてみる

引数a,b,cに対してa*b-cの値を返すような関数を期待したテストケースを作成します。

image.png

それに対しての推論はこちら
image.png

う~ん、、、、(テストはもちろん全部誤っていた)

ちなみにChatGPT4に同じ質問したところ

image.png

それぞれのテストに通すための分岐が生成されているため、こちらの方が未来を感じますね。
※ミスり方がプログラミング初心者レベルなのが愛着が持てる

image.png

最後に

TDDを促進するような使い方はまだできなさそうな感じを受けました。
こういった使い方はまだまだ実用レベルには及ばないですね。
GitHub CopilotはChatGPT3.5ベースとのことなので、今後、Chat4ベース、もしくはそれ以上になってくるともっと有用性が増すと思うので、期待したいと思います。

19
17
2

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
19
17