このセクションでは、SOAtest を使って Java アプリケーションに対して実行時エラー検出を実施する方法について説明します。
このセクションの内容:
Parasoft Jtest のインストールが必要SOAtest は、Parasoft Jtest との統合によって、Java の実行時エラー検出と Java イベント モニタリングの機能を提供します。Java の広範なテストと解析のプラクティスを容易にします。 SOAtest の実行時エラー検出あるいは Java イベント モニタリングの機能を使用する前に、必ず 1) Jtest がインストール済みであること、および 2) SOAtest の "Jtest Connect" ライセンス オプションが有効であることを確認してください。 Jtest の入手については、テクマトリックス (株) の Parasoft 製品カスタマーセンター ( [email protected] ) にお問い合わせください。 この製品間機能を使用するには、Jtest と SOAtest を p2 updatesite アーカイブを介してインストールする必要があります (詳細については「Eclipse p2 更新サイトからのインストール」を参照)。 |
SOAtest では、機能テストまたは侵入テストを実行するときに、実行時エラー検出を行うことができます。
実行時エラー検出は、アプリケーションの実行中に発生する重大な欠陥を検出します。欠陥は、今までに例のない正確さでレポートされます。これは、実行時 ( たとえばファイルの上書き時) にだけ姿を現す欠陥を効率的に特定するために、また、アプリケーションのクラッシュ、パフォーマンスの低下、予測不能な動作の根本的原因を突き止めるために非常に重要です。
SOAtest は、レポートされたエラーと、エラーの検出時に実行されていた機能テストとを関連付けます。この違反と機能テストの関連付けによって、ユーザーはレポートされたエラーを辿って、アプリケーションに対する特定のユースケースを突き止めることができます。
検出されるエラー カテゴリには以下のものが含まれます。
アプリケーションをモニタリングするには、アプリケーション サーバーを実行しているマシンに適切な jar ファイルをコピーし、その jar ファイルを使用するようにアプリケーション サーバーを設定する必要があります。以下の操作を行います。
サーバーは通常と同じように起動します。ただし、指定したパッケージ クラスがインストゥルメントされる点が異なります。
テストの実行中にアプリケーションの内部動作に対する可視性を得るには実行時エラー検出のためにアプリケーションを設定する際、アプリケーションのモニタリングも準備しています。これは、機能テストの実行中にアプリケーションの内部動作に対する可視性を提供します。テストの失敗原因の特定が向上するだけでなく、回帰テストでのユース ケース検証条件も充実させることができます。たとえば、EJB メソッド呼び出しまたは別のシステムへのリモート呼び出しが、期待されるパラメーターを使って実施されていることを検証できます。 このモニタリングを行うには、以下の操作を行います。
詳細については、「Java アプリケーションのモニタリング」 を参照してください。 |
以下の起動時パラメーターが必要です。
パラメーター | 説明 |
---|---|
soatest | 実行時エラー検出を設定するために必要です。 |
port=[port_number] | モニタリングするプログラムとの応答に使用するポート番号を指定します。5050 から 5099 の値を指定してください。 |
instrument= [class_name.method_name(jni_sig)] | チェックする完全修飾メソッドの接頭辞を指定します。たとえば com.abc.util.IOUtil.method と指定すると、 IOUtil.java 中のメソッドで、 method で開始するすべてのメソッドがインストゥルメントされます。com.abc. と指定すると、それらのメソッドがインストゥルメントされるほか、完全修飾名が com.abc. で開始するクラスのすべてのメソッドもインストゥルメントされます。具体的なクラス名を指定できます。必須。 |
独自のクラス ローダー ( つまり Eclipse、JBoss、および Tomcat) を定義するアプリケーションの場合、ブートのクラスパスに insure.jar を追加する必要があります。そのようなアプリケーションをモニタリングするには、起動構成の VM 引数に次の行を追加する必要があります。-javaagent:"<path_to_jar>\insure.jar=soatest,port=<port>",instrument=<my.package.prefix> -Xbootclasspath/a<path_to_jar>\insure.jar
例:-javaagent:"/home/user/parasoft/insure.jar=soatest,port=5060",instrument=com.mycompany.onlinestore -Xbootclasspath/a:/home/user/parasoft/insure.jar
ほかの ( スタンドアロンの) Java アプリケーションの場合、ブートのクラスパスに insure.jar を追加する必要はありません。例:java -javaagent:"C:\Program Files\Parasoft\insure.jar=soatest,port=5050",instrument=com.mycompany.myapp
実行時エラー検出を実施するには、テスト コンフィギュレーションをカスタマイズし、チェックするアプリケーションと検出するエラーを指定する必要があります。 次の操作を行います。
アプリケーションで実行時エラー検出を実施するには、次の操作を行います。
検出されたエラーが次のように表示されます。
同じ詳細情報がレポートでも提供されます。
SOAtest は、レポートされたエラーと、エラーの検出時に実行されていた機能テストとを関連付けます。この違反と機能テストの関連付けによって、ユーザーはレポートされたエラーを辿って、アプリケーションに対する特定のユースケースを突き止めることができます。
このセクションでは、SOAtest の実行時エラー検出で使用するために一般的な Web アプリケーション サーバーを設定する方法について説明します。
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig)] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
"-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor directory]/insure.jar"
-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
SOAtest は、WSAD 5.1 IDE から起動される WebSphere 5.1 ローカル テスト環境サーバーのための追加の JVM 引数を自動的に設定します。 実行時エラー検出のために他のすべての WebSphere 5.x サーバーを設定するには、以下の操作を行います。
-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor
directory]/insure.jar
set JAVA_OPTIONS=-javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_name.method_name(jni_sig) ] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
コマンドラインから JBossService.exe を使って JBoss を起動する場合、次の操作を行います。
set JAVA_OPTS=-Dprogram.name=%PROGNAME% -Xms128m -Xmx512m "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -javaagent:[eventmonitor directory]/insure.jar=soatest,port=[port number],instrument=[class_name.method_name(jni_sig)],trace=[class_ name.method_name(jni_sig)] -Xbootclasspath/a:[eventmonitor directory]/insure.jar
たとえば、Showcase というアプリケーションの場合、 "%JAVA%" %JAVA_OPTS% "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -classpath "%JBOSS_CLASSPATH%" org.jboss.Main %*
を呼び出す代わりに次の行を追加します。
rem install Showcase (routes system.out and system.err to the runtimeerrordetection directory) JBossService.exe -install Showcase "%JAVA_HOME%\jre\bin\server\jvm.dll" "-Djava.class.path=%JBOSS_CLASSPATH%" %JAVA_OPTS% -start org.jboss.Main -stop org.jboss.Main -params %* -method systemExit -out C:\runtimeerrordetection\stdoutJBOSS.log -err C:\runtimeerrordetection\stderrJBOSS.log -overwrite rem start the Showcase service net start Showcase |
注意サービスのインストールは一度だけ実行するべきです。理想としては、run.bat ファイルには start コマンドだけを記述します。インストールはコマンドラインから実行できます。サービスがすでにインストール済みの場合、適切な VM 引数を使って再度インストールする必要があります。次のコマンドを使ってサービスを停止またはアンインストールできます。 net stop Showcase JBossService.exe –uninstall Showcase |
通常と同じようにアプリケーション トランザクションを実行し、モニタリングが動作しているかどうかを検証します。
注意start、stop、install および uninstall コマンドは、run.bat だけでなくコマンドラインからも実行できます。 |