Airtestでテストコードを生成してみた

Posted on:2023-01-17

単体テストとか機能を作るときにやっておくと余計なバグを出さないようにすることができます。
しかし、テストと言われて設計とか何を考慮すればいいのか?なかなかコード書く前にできなかったります。

どこから始める?

E2Eとか単体テストや結合テストなど、テストも様々ですがまずは単体テストが基本です。
単体テストを行っておくと結合テストのときに余計なバグが起きなかったり、おきた場合でも原因を突き止めやすいのが単体テストを行う理由です。

単体テストってどうやるの?

テストツールはありますが、JavaScriptベースの場合は Jest を利用することが一般的です。
しかし、いきなり単体テストを〜っていわれてもどうやるの?なにがゴールなの?という感じになるかなと思います。

Airtestを利用してみた

今日知ったので、メモ程度に残しておきます。
Airtestというテストコードを生成してくれるサービスがありました。

C#, C++, Go, Java, JavaScript, PHP, Python, R Lang, Ruby, and Swiftが対象のようです。

最近業務はGoとかJavaとかJavaScriptなんですが、このツールがいいのはTypeScriptも入っているのが良かったです。

生成してみた

ジェネレート

const num:number = (a, b) => a * b

このような ab を掛け算した関数を用意してジェネレートしました。

describe("num", () => {
  it("should return the product of two numbers", () => {
    expect(num(2, 3)).toBe(6);
    expect(num(12, 4)).toBe(48);
    expect(num(-2, 4)).toBe(-8);
  });
});

ジェネレートするとこのように Jest のコードでテストコードを生成してくれます。
きちんとマイナスまでフォローして生成してくれるのはありがたいですね。

<video src="/assets/post/20230117/02.mp4" controls></video>

何回か実行するとランダムにそれっぽい感じでテストコードを生成してくれます。

また、型注釈できちんと書くと number だったら数字を返すテストコードを数字だけにフォーカスして生成してくれるようです。 ※型推論だとランダムでした。

まとめ

知ってから数時間なんで、複雑なコードの検証してないですが業務でちょっと使えるツールとして活用したいと思いました。