SEPを使用せずにRDiのコード・カバレッジを実行する
前回の記事では、テストがどの程度完了したかを確認するのに使用できる、RDiのコード・カバレッジ ツールについて概要を説明しました。その記事では、サービス エントリー ポイント(SEP)を使用してコード・カバレッジを実行する方法も紹介しました。続編となる本記事では、このツールに関する詳細情報をいくつか補足してから、コード・カバレッジ セッションを実行する別の方法を紹介します。
コード・カバレッジを実行する別の方法の説明に進む前に、前回の記事で触れなかったいくつかの詳細情報を補足しておきます。
前回の記事で、コード・カバレッジはデバッグ エンジンを使用すると述べました。その際、述べなかったことは、プログラムのテスト データが収集されるためには、xxxLEメンバーの場合は、「Debug View」オプションで「*Source」、「*List」、または「*All」のいずれかを使用して、プログラムがデバッグ用にコンパイルされている必要があるということです。非ILE言語メンバーは、*SRCDBGまたは*LSTDBGのいずれかを使用する必要があります。
また、これもデバッグ接続との関連ですが、コード・カバレッジを実行する前に、必ず、「IBM iデバッグ」設定ページの「実動ファイルを更新する(Update production files)」オプションをチェックしておくようにしてください。デバッグの際にそのオプションを指定する必要がある場合は、コード・カバレッジでもそうする必要があり、ここで設定しておけば、設定し忘れるのを簡単に防げます。この設定値がコード・カバレッジにもデバッグにも適用されることは分かりにくいかもしれませんが、実際に適用されます。
複数のテスト実行結果をマージしたレポート
アプリケーションのすべての機能をカバーするために、同じプログラムに対して複数回テストを実行することが必要となる場合もあります。個々のテスト実行のレポートを見たときは、カバレッジが十分でないことが示されるのはお決まりですが、複数のテスト実行で、全部でどれくらいのコードをカバーしたかは、どのようにすれば分かるのでしょうか。すべてをまとめたレポートを生成するには、「コード・カバレッジ結果」ビューで、複数の結果エントリーを選択(Ctlキーを押したままクリック)してから、選択したエントリーを右クリックして「開く」を選択します。エディター ビューに表示されるレポートは、選択したすべてのエントリーのカバレッジ データがマージされたものになります。
手動構成を使用してコード・カバレッジを実行する
前回の記事では、サービス エントリー ポイント(SEP)を使用してコード・カバレッジを実行する方法を説明しました。今回は、手動で作成した構成を使用してコード・カバレッジを実行する方法について見て行きます。
手動構成を使用する方法でコード・カバレッジを実行する必要があるのは、どうしてでしょうか。SEPの使用には、いくつかの制限事項があります。最も重要なものは、初期プログラムはILE言語プログラムでなければならないことです(つまり、CLPやRPG400であってはなりません)。SEP用にCLPまたはRPG400プログラムを呼び出すだけのCLLEまたはRPGLEプログラムを作成することができます。
その代わりとして、自動的にプログラムを呼び出す構成を手動で作成することもできます。デバッグでもコード・カバレッジでも、手動で作成した構成を使用する方法を好む人もいるようです。私の場合、デバッグの際は、たいていSEPを使用しますが、コード・カバレッジでは手動構成を使用することが多いように思います。これは、変更を行った後で何度も同じプログラム グループをテストする必要があるからです。そのため、私のコード・カバレッジ構成はデバッグ構成に比べてより頻繁に再利用しがちであり、一方、デバッグ構成は1回使用するだけになりがちです。
それでは、手動で作成した構成でのコード・カバレッジのテストについて見て行きましょう。以下に、全体の流れを示します。その後で、ステップごとに詳しく見て行きます。
- 分析したいプログラムから、バッチまたは対話式構成のいずれかを開始します。
- 構成ダイアログで、必要に応じて、その構成に意味のある名前を付け、分析する追加のプログラムがあれば追加します。
- 分析対象となるプログラムが含まれるアプリケーションを開始するコマンドを指定します。
- 構成を保存します。プログラムは自動的に実行されるようになります。対話式構成の場合は、テストを実行する前に対話式ジョブをRDiセッションに関連付ける必要があります。
- プログラムの実行が完了すると、「コード・カバレッジ結果」ビューが表示され、レポートがエディター ウィンドウに表示されます。
- 対話式構成では、対話式ジョブをRDi接続から解放することが必要になる場合があります。
ステップ1: デバッグ用にRDiで独自の構成を作成する場合、以前の記事で説明したように、私は「デバッグ (プロンプト)」>「IBM iジョブ」オプションを使用する方を選びます。ただし、その記事で説明したその「ジョブ」オプションは、コード・カバレッジにはないため、今後のテストでは、構成をデバッグ用ほど柔軟には作成できないでしょう。それでも、「対話式」または「バッチ」構成のいずれかを作成することはできます。テストする最初のプログラム名を右クリック(以前にSEPでそうしたように)して、「コード・カバレッジ (プロンプト)」、次いで、「バッチ」または「対話式」のいずれかを選択します。私のプログラムには表示装置ファイルがあるため、「対話式」を選択します。
ステップ2: 下の図のようなダイアログが表示されます。後でその構成を識別しやすくするために、必要に応じて、構成名を変更することができます。必要な場合は、ダイアログの1つ目のタブでプログラムまたはサービス プログラムを追加できます。データがカバレッジ分析用に収集されるのは、ここでリストされるプログラムまたはサービス プログラムだけです。
ステップ3: このダイアログを閉じる前に、「開始方法(How To Start)」というラベルが付いたタブをチェックして、テストを実行するのに使用する最適のコマンドが含まれていることを確認します。構成を使用するときには、このコマンドが、自動的にテストのためにプログラムを呼び出すのに使用されます。デフォルトは、対話式構成では初期プログラムを呼び出すシンプルなCALLステートメントです。バッチ構成では、CALLステートメントを含むSBMJOBコマンドです。必要に応じて、コマンドを変更することができます。
ステップ4: 分析対象となるプログラムと、テスト プロセスを開始するコマンドを確認できたら、「適用」ボタンを押して構成を保存し、次いで「カバレッジ」を押してテストを開始します。バッチ ジョブの場合は、前のステップで指定した内容に基づいて、ジョブがサブミットされ、コマンドが実行されます。対話式構成の場合は、次のメッセージが表示される場合があります。"No interactive job associated with this connection. Associate an interactive job with this connection to continue."(この接続に関連付けられている対話式ジョブがありません。続行するには、この接続に対話式ジョブを関連付けてください。)
おそらく、このメッセージや、対話式ジョブをRDiに関連付けるプロセスは、ご経験があるのではないかと思います。これを行うには、対話式の「グリーン スクリーン」ジョブへ移動して、RDi接続の名前(その接続名はメッセージに示されています)を使用して、STRRSESVRコマンドを入力するだけです。一時的に「RSE Communications Server」画面が表示され、続いて、構成で指定したコマンドを使用してプログラムが呼び出されます。そこからは、必要に応じてテストされるプログラムと対話して、テストを実行するだけです。データがカバレッジ分析用に収集されるのは、コード・カバレッジ構成にリストされたプログラムだけであることに注目してください。
ステップ5: 分析しているプログラムが終了すると「コード・カバレッジ結果」ビューが表示され、サマリー レポートがエディター ウィンドウに表示されます。レポートで任意のプログラムをダブルクリックして、ソース レベル詳細を表示します。また、「コード・カバレッジ結果」ビューには、実行結果のエントリーが表示されます。複数のテスト実行にまたがるマージされたレポートを表示したい場合は、「コード・カバレッジ結果」ビューから複数のエントリーを選択し、コンテキスト メニューから「開く」を選択します。
ステップ6: テスト用に対話式ジョブを関連付けた場合は、ここで、そのジョブをRDi接続から解放する必要があります。これを行うには、「リモート・システム」ビューで「Objects」サブシステムを右クリックし(「Objects」は接続名のすぐ下にあります)、コンテキスト メニューから「Release Interactive Job」を選択します。
作成した手動構成は保存されています。次回、同じプログラム セットで別のテスト実行を行うときには、RDiで「実行」メニューから「コンパイル済みコード・カバレッジの構成」を選択することができます。保存済みのバッチおよび対話式構成をリストから選択し、「カバレッジ」ボタンを押して新たなテスト実行を開始します。
そのほかのコード・カバレッジの実行方法
ここまで、SEPまたは手動のRDi構成のいずれかを使用してコード・カバレッジ セッションを開始する方法を見てきました。このほかに3つ目のオプションがあります。すなわち、CLコマンドを使用してコード・カバレッジ セッションを開始する方法です。その方法と、どのような場合に使用したらよいかについて、今後の記事で説明する予定です。