テストツールでAIを使ってAPIを移植

>100 Views

October 27, 26

スライド概要

profile-image

ユニークビジョン株式会社CTOです。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

テストツールで AIを使って APIを 移植 ユニークビジョン株式会社 青柳康平

2.

目次 1 2 3 4 5 目的 方針 開発方針 結果 まとめ 2

3.

目的 目的 方針 開発方針 結果 まとめ 古くからある APIで社内の標準的な技術要素とはずれている Ruby+Rails Rust + axum このAPIはRuby+Railsで構築されている 今回はRust + axumという フレームワークにした 社内ではRustかTypeScriptが現在の標準 直したいが、規模がそれなりに大きく、機能追加では無いので工数がかけにくい 121 約12,500行 約400例 約200例 エンドポイント Railsのコード(app/以下) リクエストスペック モジュールスペック 既存のテスト 3

4.

目的 目的 方針 開発方針 結果 まとめ 移植なので挙動は変えない 同じであることを、テストで確認したい Ruby+Rails PostgreSQLの ストアードプロシージャは変更しない = Rust + axum 外部システムや AWSの 呼び出しも同じ内容にする 4

5.

方針 目的 方針 開発方針 結果 まとめ AIを使って、人間の工数をなるべく使わず構築する 1 2 最初の土台は人間と伴走して 作る 人間の判断が必要なものを、あ らかじめ調査してクリアーにす る 人間の判断が必要なものがあったら、 それはスキップして次を開発する 3 残りのほとんどを自動実行で構 築する たまに人間が確認して、判断する 5

6.

方針 目的 方針 開発方針 結果 まとめ 人間の時間を使わない品質保証を目指す テストツールを作成して、 Railsでgreenだったもので確定し、 axumでもgreenにする テストと移植を分けて、 移植ではテストを変更しないことを 機械的に確認する 独立したサブエージェントによる レビューを実施する テストツールで確認できないものは、 Rustの単体テストを実施する 6

7.

開発方針 31本 作業書に分けて移植 目的 方針 開発方針 結果 まとめ 現行の Railsのコードやテストを参考に、リクエストを投 げてレスポンスを確認するテストツールを作成 (機能や、テストの土台などを まとめている) 1 2 3 Railsがgreenになる Rustに移植する Rustがgreenになる (ここでテストを確定 ) 7

8.

開発方針 目的 方針 開発方針 結果 まとめ テストツールは独立して作成 Rails テストツール Rustで実装。 移植先とも Railsとも別 Rust(移植先) リクエストスペック Railsのコード 新規 約650件 DBの結果 のテストケース 外部システムの 呼び出し AWSの 呼び出し方法 が正しいか確認 8

9.

結果 目的 方針 開発方針 結果 まとめ 開発時間 100時間 土台作り8時間 4件 139件 自動実行以降で人間の判 断が必要だったもの 事前に決めたもの 自動実行92時間 移植したもの 121 649件 911件 エンドポイント + rakeタスク 1本 テストツールの APIテスト Rustの単体テスト 既存のバグも発見 9

10.

まとめ 目的 人間があまりかかわらずに、移植することはできた 方針 開発方針 結果 まとめ 確認できていないこと 実際の画面操作 約650件のテストケースで Railsとaxumが同じ動作 であることが確認できた 人による動作確認 今後はE2Eなどを考慮した、より高い品質保証ができる方法を検討したい 10