![[アップデート] AWS Transform for mainframe の機能が拡張されたので自動テスト生成機能をつかってみた #AWSreInvent](https://images.ctfassets.net/ct0aopd36mqt/33a7q65plkoztFWVfWxPWl/a718447bea0d93a2d461000926d65428/reinvent2025_devio_update_w1200h630.png?w=3840&fm=webp)
[アップデート] AWS Transform for mainframe の機能が拡張されたので自動テスト生成機能をつかってみた #AWSreInvent
いわさです。
AWS Transform を使うとメインフレームのアプリケーションコードから仕様書を作成したり、あるいはコードのモダナイゼーションを行うことが出来ました。(旧:Amazon Q Developer の Transform 機能)
AWS re:Invent 2025 期間中にアナウンスされましたが、この AWS Transform のメインフレーム向け機能が拡張されました。.NET と同じ感じですね。
メインフレームでは新たに、AI を使ってアーキテクチャを再考するための機能と、テストスクリプトを自動作成する機能が追加されました。
今回 COBOL コードを対象にテスト生成を行ってみたのでその様子を紹介します。
ジョブの作成
AWS Transform 自体の開始方法は割愛します。
.NET や Custom と同様です。
新しいジョブを作成する際にジョブタイプを指定できますが、ここで「Mainframe Modernization」を選択します。

続いてメインフレームモダナイゼーションの中でもいくつかのジョブ計画のテンプレートから選択することが出来ます。
今回はテストの生成を行いたかったので 6 を入力しました。

そうすると、ジョブプランがまずサイドメニューに展開されます。
このジョブプランの流れとしては以下です。

アプリケーションコードを解析して、テストケースとスクリプトを作成する感じですね。
ジョブプランの先頭で「キックオフ」というものがありますが、ジョブの入力・出力のオブジェクトを扱う S3 バケットや AWS アカウントとの接続を行います。

アプリケーションコードについては Zip 化して S3 バケットにアップロードしておく必要がありました。
個別のソースコードファイルだとダメなのと、.NET などのように Git リポジトリでの対応も出来ません。

アプリケーションの分析
S3 バケットの設定とアプリケーションのアップロードが出来てればまずはコードの分析やビジネスロジックの抽出などから始まります。

まずはアプリケーションの対象ファイルを指定します。

コード解析後にビジネスロジックの抽出を行うステップです。
スコープ(アプリケーションレベル、ファイルレベル)を決めて対象ファイルを選択します。

さらに、ドメインを分解していきます。
事前にドメインを定義し、そこに各ロジックの割当を行います。今回は適当なドメインを新規作成し、そこに抽出対象をすべて入れました。



テストケースの作成
ここからテストケース作成に入っていきます。
まずはテスト計画の作成からです。
自動でテストスコープなどの定義をしてくれるのでそのまま進みつつ、各ファイルのレビュー行います。OKであればそのまま進めます。


続いてテストデータを用意するスクリプトも作成してくれるので進めます。
対象テストケースを選択してテストデータ生成用スクリプトのテンプレートを格納した S3 パスを指定します。テンプレートは以下の「download samples」から取得できます。今回はそのままアップロードしています。

収集スクリプトが生成されるのでレビューしましょう。デフォルトだと S3 の CORS の問題でプレビュー出来ないので、その場合は S3 バケットの CORS 設定を見直してみてください。



最後に、テスト自動実行スクリプトの生成までしてくれるのでそれを作成して完了です。

最終的には実行スクリプトからテストケース、テストデータまですべて指定した S3 バケットに出力されます。
これを使ってテストする感じみたいです。
さいごに
本日は AWS Transform for mainframe の機能が拡張されたので自動テスト生成機能をつかってみました。
先日の Windows フルスタックのやつと違って、S3 バケットのコードをベースに S3 バケットに成果物を作成するので、既存環境やリポジトリを汚してしまうリスクがなさそうで、お試ししやすいのではないでしょうか。
また、AWS Transform はまだエラーが出てうまくいかなかったり時間がかかりすぎることがあったのですが、この機能は比較的サクッと使いやすい機能だなと思いました。








