JaSST'24 Tokyo 2日目 / C7-1 生成AIを使ったテスト記述の最適化と生産性向上

yocaji
·

※発表を聞きながら取っていたメモを元にしているため、誤りがあるかもしれません。あくまで個人のメモということでご了承いただければと思います。修正が必要な場合はDiscordのid:yocajiまでお知らせいただければ幸いです。

登壇者

  • 山本 イアンさん

    • LegalOn Technologies

    • SET

当時の状況

  • 受託システムの開発

    • 2023年2月頃

    • スケジュールがタイト

    • 手動テストがやっと

    • APIテストメインの自動化にこぎつける

自動化リソース確保の鍵が生成AIだった

1Try目の課題

  • リソース不足

  • 生成AI導入がその後に繋がらない

  • どう書けばAIがテストコードを生成しやすいか

2Try目

自動化対象

  • 結合テスト中心

    • APIテスト

    • バッチ処理のテスト

    • AWS S3などの外部サービスとの連携のテスト

収穫

  • コメントが大事

    • DocStringを入力してテスト名を入力する

  • テストの流れを再現できたことが重要

  • 大きな補完の仕組みを確立することが大事

より効率的に

  • 次を予測しやすいテストの書き方

    • テストケースの順番を統一する

  • 複雑なテストは先に書いた方が補完が効きやすい(右からやる)

    • 単数系→複数形

    • 任意オプションなし→あり

    • ハッピーパス→網羅的なパス

    • ページネーションなし→あり

  • ケースの分岐はコメントを使って紐づける

    • それぞれのフィクスチャにコメントをつける

    • タグをつけるイメージで記述する

    • 適切なコメントは生成の精度向上だけでなく分岐先の処理の生成にも役立つ

  • 小さな補完ではAIの死角をクリアにする情報を出す

過剰な最適化を避ける

  • ルーティング情報は埋もれがち

  • クレデンシャル情報は生成が途中で途切れる

    • テスト用の変数を用意する

  • コピペや手入力の方が早くはないか、代替案を持っておく

補完ツールの選び方

  • 大きな補完がしやすいか

  • 一定のコメントに対応したスニペットを安定して保管するか

  • ダッシュボードが提供されているか

  • エディタと連携しやすいか

まとめ

  • 大きな補完を最適化する

  • AIの視点に立ってコードの改善ポイントを

  • プロンプトや改善手法も資産

感想

テストコードを作成するために生成AIをどう使うか、具体的な実践例を知ることができる貴重な発表でした。小さく補完させるよりも、どうやって大きな塊で生成させるかということと、細部は違ったとしても全体の流れが合っていることが大事という考え方を知ることができたのが収穫でした。