見出し画像

【IBM Bob】5250画面のテスト自動化ツール「5250TestUnit」を作ってみた

はじめに

こんにちは、IDELIBです。
皆様は、IBM i(旧AS/400)のRPGやCOBOLの5250端末アプリケーション開発のテストはどのように実施されていますでしょうか?

開発やプログラム修正のたびに、エミュレータを立ち上げて「手動でキーを叩き、画面を目視で確認するテスト」が主流だと思います。

「5250画面だから、テスト自動化なんて無理……」

と諦める必要はありません!

今回、5250画面操作の自動化から画面アサーション(テキスト検証)、さらにデータベースの事後検証までをワンストップで行うCLIツール「5250TestUnit」を開発しました。

5250TestUnitでできること

このツールは、5250アプリケーションのテストを以下の3ステップでスマートに行います。

  1. ソースコードの解析(analyze) Bobを活用しIBM iからDSPF(画面情報)やRPG、参照DBテーブルのメタ情報を自動解析。

  2. テストケースの自動生成(generate) Bobを活用し解析結果と実際のデータベースのサンプルデータから、テストシナリオ(JSON)のひな形を自動構築。

  3. テストの自動実行と検証(run) 裏側で5250セッションを起動し、キー入力、画面テキストのアサート、そして「値が正しくDBに書き込まれたか」のSQL検証までを全自動で実行。

技術的なアプローチのポイント

IBM Bobが中心となり、本ツールは TypeScript (Node.js)Java (HACL ECL API) のハイブリッド構成で開発しています。

  • TypeScript:軽快なCLIインターフェースや、ソースコード解析、テストシナリオ(JSON)のパースを担当。

  • Java:IBM純正の強固なエミュレータ制御ライブラリ(HACL)を用いて、実機とのTN5250通信や正確なキー送信・画面キャプチャを担当。


また、実行結果は JUnit XML形式 でも出力し、GitHub ActionsなどのCI/CDパイプラインに組み込んで「プログラムをコミットしたら裏で自動テストが走り、Slackに成否が届く」というDevOpsな環境にも配慮しています。

詳しい技術仕様はこちら!

SessionDriverの制御技術、DBVerifierを用いた検証方法、トラブルシューティングなどの詳細な技術解説は、GitHub Pages にて公開しています。
仕様を深く知りたい方は、ぜひこちらの技術解説書をご覧ください!

👉 [5250TestUnit 技術解説書(GitHub Pages)はこちら]

まとめ

IBM iが持つ優れた堅牢性や資産を活かしつつ、開発手法やテストプロセスだけを現代的なスピード感にアップデートする。
このツールが、そんな「DevOps」の一助になればと思って開発を進めています。まだプロトタイプではありますが、基本的な主要ロジックは一気通貫で動作確認が取れていますので、今後はテストケースを増やしながら精度を上げる予定です。

最後までお読みいただき、ありがとうございました。 もし参考になりましたら、「スキ」やシェアをしていただけると励みになります!
また、「こんなことはできないのか?」といった疑問がございましたら、お気軽にコメント欄へお願いいたします。
お仕事のご依頼 (仕事依頼) もお待ちしております!


いいなと思ったら応援しよう!

IDELIB | 現場の“困った”を一緒に解決するSE チップもらえるなんて思っていないけど、もしいただけたらすごくうれしいです