目次


IBM Application Delivery Intelligence の検証

IDz HLL/WB から始まる DevOps

Comments

IBM Application Delivery Intelligence(以下、ADI)は、データ主導型の解析結果により、製品開発、デリバリー、メンテナンスのライフ・サイクルで継続的にプロセスを改善していくための意思決定を支援する、Jazz フレームワークで構築された Web ベースのツールです。

この記事では、日本で使用されている z/OS のプログラム開発支援ツール IBM Developer for z Systems HLL/WB Edition(以下、HLL/WB)で作成した COBOL ソースを IBM Developer for z Systems(以下、IDz)の単体テスト支援機能であるzUnit を用いてテストを行い、その結果を ADI で解析するシナリオの検証事例をご紹介します。

はじめに

近年、エンタープライズシステムの領域においても、DevOps を理解するフェーズから DevOps を実践していくフェーズに移りつつあります。DevOps の適用によって、ソフトウェア品質を向上させる、あるいはリリース期間を短縮する等の効果を得るためには、コストとリスクのバランスをとりつつプロセスを改善していくことが不可欠です。アジャイルの手法を取り入れた機能単位でのデリバリー、継続的なビルドやテスト、継続モニタリングは、DevOps の手段の一部ですが、これらを実践時に正しい方向に向かっているかを判断するためには下記の情報が必要となります:

-どのモジュールが最も変更されているか - リファクタリングや、テストの自動化をどこから始めるべきかの判断に必要

-既存のテストケースで、既存のコード、新規/変更部分のコードがどのくらいカバーされているか

-変更部分に対して、どのテストケースが実行されるか - テストの優先順位とリスクのバランスの判断に必要

ADI は、データ主導型の解析結果によりこれらの情報を提供し、製品開発、デリバリー、メンテナンスのライフ・サイクルで継続的にプロセスを改善していくための意思決定を支援する、Jazz フレームワークで構築された Web ベースのツールです。

この記事では、日本で使用されている z/OS のプログラム開発支援ツール HLL/WB で作成した COBOL ソースに対し IBM Developer for z Systems(以下、IDz)の単体テスト支援機能であるzUnit を用いてテストを行い、その結果を ADI で解析するシナリオの検証事例をご紹介します。

IBM Developer for z Systems HLL/WB Edition V14.0

HLL/WB は設計から開発局面での COBOL 及び PL/I のプログラムの開発を支援する開発ツールです。ここでは、顧客明細ファイルを読み込み、売り上げの計算を行う COBOL プログラムを日本語仕様書にて開発します。日本語仕様書では業務用語を使用したレコード設計やプログラミングがサポートされており、仕様書から、COPY 句と COBOL ソースが生成されます。これらの生成ファイルのビルドおよびテストを行うために、HLL/WB と IDz の連携機能を用いて、HLL/WB のビューから MVS に転送します。

図 1. HLL/WB での日本語仕様書開発

IBM Developer for z Systems V14.0

IDz のzUnit は、Enterprise COBOL と Enterprise PL/I のための、コード主導型単体テストフレームワークです。前節で生成し MVS にアップロードした COBOL ソースを元にzUnit テストケースを作成し、実行します。テストデータを作成するためのzUnit のテストケース・エントリー・エディターには、データ項目名として HLL/WB で使用した業務用語が表示されます。zUnit では、作成したテストデータからのドライバー生成、およびビルド実行を行うための JCL の生成機能が提供されており、エディターのメニューからテストケースの生成からテスト実行までをシームレスに実行可能です。

図 2. IDz zUnit のテストケース作成

zUnit のテスト実行では、設定した期待値との比較の結果に加えて、デバッグ実行やコード・カバレッジの取得もサポートされています。zUnit のテストケース単位でのコード・カバレッジの結果は、ADI にインポート可能な形式です。また、zUnit のテスト実行は Ant スクリプトを用いて自動ビルドに組み込むことが可能であり、継続的な自動テストによるプログラムの品質向上とデリバリーサイクルの短縮に貢献します。

図 3. コードカバレッジ結果

IBM z Systems Development and Test Environment V10.0

IBM z Systems Development and Test Environment(以下、zD&T)は、x86 のデスクトップまたはサーバー上で動作し、z/OS 開発環境およびテスト・プラットフォームを提供します。zD&T では特定の z/OS バージョンと z/OS 上で稼働するミドルウェア群がパッケージ化されているので、迅速に z/OS のテスト環境を準備することが可能であり、Could 上へのテスト環境のコピーもサポートされています。

今回はメインフレームの z/OS 環境を用意することなく、System x 上のzD&T を使用して検証を行いました。

図 4. zD&T

IBM Application Delivery Intelligence V1.0

このように開発、テストを行ったコードとテストのデータは、ADI に蓄積して解析し、最適化のための情報を引き出すことができます。

ADI のダッシュボートは、テスト・マネージャーが必要とするアプリケーション・レベルでのコード・カバレッジのトレンドのビューや、テスターに有用なテストを最適化するための情報を提供します。以下にダッシュボードの各ビューで提供される機能について説明します。

ビルド・ビュー

ここでは、前節で作成したzUnit のテストケースが各ビルドで実行されているものとします。ADI によって提供される情報は、全てのビルドのコード・カバレッジのデータと変更されたコードのデータの解析結果から作成されます。図 5 は、各ビルドとそのコード・カバレッジのリストです。手動ビルドのプロセスの場合、テスト・マネージャーがビルドを手動で追加し、各テスターが必要なコード・カバレッジを手動でアップロードできます。また、次回行われるビルドに対応する空の定義を手動で追加し変更したファイル名を指定すれば、それ以前のビルドの情報を元に、変更されたファイルのテストを最適化するための情報を得ることができます。

自動ビルドのプロセスでは、RTC Builds Data Provider を使用することにより、各自動ビルドごとに実行されたテストで生成されるコード・カバレッジの値が蓄積されます。

図 5. ビルド・ビュー

アプリケーション解析・ビュー

ADI では、従来のコード・カバレッジのツールが提供していた最新のコード・カバレッジのデータに加えて、全てのビルド履歴を通してのコード・カバレッジのトレンドや、直前のビルドと比較した際のコード変更やテストカバレッジが、ダッシュボードで提供されます(図 6)。図 6 の各トレンドのグラフにおいて、折れ線の頂点にカーソルをあわせると、各ビルドにおけるコード・カバレッジや実行行の総数とテストでカバーされた行数との対比等が表示されます。これらの情報を元に、テスト・マネージャーがアプリケーション全体の品質をチェックし、早期にアクションをとることができます。

図 6. アプリケーション解析ビュー

ビルド解析・ビューとテスト実行の最適化

以下の図 7 は、コード・カバレッジが 100%である 11 月 12 日のビルドのソース CLCTPCTB に関する分析データです。

このビルドでは、実行コードが 10 ステップ追加されていますが、テストのカバレッジは 100%のままで追加のテストケースは特に必要ないことがわかります。Historical Tests to Run にはこのアプリケーションの 7 テストケースの中で、実際にこのソースのテストに影響を与えている 5 ケースが示されています。ビルド・ビューで前述したように、変更されたソース・ファイルの情報を手動ビルド定義に追加すると、Historical Tests to Run により変更したソース・ファイルのみに関連するテストケースが特定され、ビルド前に行う確認テストの効率化に役立ちます。

また、Minimal Tests to Run には同じカバレッジを得るための最小のテストケースのリストが表示されます。このリストは、例えばリグレッション・テストにおけるテストの労力を削減するために利用可能です。

図 7. ビルド解析・ビュー

図 8 は、翌日 11 月 13 日のビルドに関する分析データです。このビルドではカバレッジが低くなっており、特に CLCTPCTB においては、カバレッジが 64%となっています。更新および追加されたロジックに対して、全体 45 のうち 29 しかテストでカバーされていないので、前回のビルドと同じカバレッジを得るためには、残りの 16 のコードをカバーするテストケースの追加及び更新が必要であることがわかります。

図 8. 分析データ

ビルドの比較

複数のビルドを比較してカバレッジの傾向をみることもできます。図 9 では、ソース・ファイルごとのビューで最新の 3 つのビルド(11月12日、11月13日、11月17日)が比較されています。CLCTPCTB で 11 月 12 日に 100%であったカバレッジが、11 月 13 日では、36%下がって 64%に、さらに 11月17日のビルドでは 11%下がって 53%になっています。また、右端の Warning のマークによって、これらのビルドで必要とされているカバレッジを満たしていないことが明らかになっています。

図 9. ビルドの比較

ファイル解析・ビュー

テスターがテストケースの追加/更新を行う際に役立つ、さらに細かいレベルでの情報も提供されます(図 10)。変更された実行ステップの情報及びテストの最適化に有用な情報は、各 COBOL の SECTION 単位でも参照することができます。

図 10 ファイル解析・ビュー

まとめ

この記事では、HLL/WB の日本語仕様書作成からソース生成、zD&T 環境を使用した IDz zUnit でのテストケース作成、テスト実行、コードカバレッジ取得、ADI でのテスト結果の分析までの流れをご紹介しました。

エンタープライズ DevOps の世界において、最初のボトルネックはテストフェーズです。現在ほとんどのテストが手動で行われており、多くの組織がテスト自動化を望みますが、既存のリソースの何処にフォーカスし何処から自動化を始めるかを検討する段階で行き詰まってしまう現状があります。ADI V1.0 では、コード・カバレッジと変更されたコードの情報をベースに、重要な洞察と履歴データによる傾向分析を提供し、継続的ビルドとテストの最適化を支援します。

ADI V1.0.2 では、Application Discovery から得られる複雑性と品質に関するメトリックを、 OMEGAMON for CICS から得られるトランザクションのパフォーマンスと使用データ、およびターゲットとなるアプリケーション正常性の分析に関するコード・カバレッジ・データと相互に関連付けられるようにもなっています。

参考文献


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps, Rational
ArticleID=1041357
ArticleTitle=IBM Application Delivery Intelligence の検証
publish-date=12222016