Hitachi System Information Capture システム検証支援 テスト結果収集機能（Jenkins連携版）

解説・文法・操作書

3021-3-736

前書き

対象製品

P-2C65-4314 Hitachi System Information Capture - Data Store for Evidence 01-02（適用OS：Windows Server 2012 R2 Standard）

P-2C65-4214 Hitachi System Information Capture - Evidence Collector for Databases 01-02（適用OS：Windows Server 2012 R2 Standard）

P-9W65-4211 Hitachi System Information Capture - Evidence Collector for Databases 01-02（適用OS：Red Hat Enterprise Linux Server 6 (64-bit x86_64)、Red Hat Enterprise Linux Server 7）

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

HITACHI、およびHiRDBは、株式会社 日立製作所の商標または登録商標です。

Linuxは、Linus Torvalds氏の日本およびその他の国における登録商標または商標です。

Microsoft、Internet Explorer、Windows、およびWindows Serverは、米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。

Red Hatは、米国およびその他の国でRed Hat, Inc. の登録商標もしくは商標です。

RSAおよびBSAFEは、米国EMC コーポレーションの米国およびその他の国における商標または登録商標です。

その他記載の会社名、製品名などは、それぞれの会社の商標もしくは登録商標です。

Hitachi System Information Capture - Data Store for Evidenceは、米国EMC コーポレーションのRSA BSAFEソフトウェアを搭載しています。

This product includes software developed by the Apache Software Foundation (http://www.apache.org/).

This product includes software developed by Ben Laurie for use in the Apache-SSL HTTP server project.

Portions of this software were developed at the National Center for Supercomputing Applications (NCSA) at the University of Illinois at Urbana-Champaign.

This product includes software developed by the University of California, Berkeley and its contributors.

This software contains code derived from the RSA Data Security Inc. MD5 Message-Digest Algorithm, including various modifications by Spyglass Inc., Carnegie Mellon University, and Bell Communications Research, Inc (Bellcore).

Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England. The original software is available from ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

This product includes software developed by Ralf S. Engelschall <rse@engelschall.com> for use in the mod_ssl project (http://www.modssl.org/).

This product includes software developed by IAIK of Graz University of Technology.

This product includes software developed by Daisuke Okajima and Kohsuke Kawaguchi (http://relaxngcc.sf.net/).

This product includes software developed by the Java Apache Project for use in the Apache JServ servlet engine project (http://java.apache.org/).

This product includes software developed by Andy Clark.

マイクロソフト製品のスクリーンショットの使用について

マイクロソフトの許可を得て使用しています。

発行

2017年1月 3021-3-736

著作権

All Rights Reserved. Copyright (C) 2017, Hitachi, Ltd.

Copyright (c) 2001-2016 Python Software Foundation; All Rights Reserved.

Copyright &copy; 1995-2001 Corporation for National Research Initiatives; All Rights Reserved.

Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved.

はじめに

マニュアルの目的

このマニュアルは、Hitachi System Information Captureのテスト結果収集機能について説明したものです。

対象読者

このマニュアルは、Hitachi System Information Captureのテスト結果収集機能を利用して、次の作業をする方を対象にしています。

テストを実行してテスト結果を収集する方

テスト結果を参照する方

対象読者に必要な知識を次に示します。

OSに関する基本的な知識

Jenkinsに関する基本的な知識

システムの開発環境および言語

システムの周辺環境（DB、ネットワークなど）および標準仕様

このマニュアルで使用する製品名

このマニュアルで使用する製品名を次に示します。

製品名

正式名称

HSIC

HSIC-ECD

Hitachi System Information Capture - Evidence Collector for Databases

HSIC-DSE

Hitachi System Information Capture - Data Store for Evidence

Internet Explorer

Windows® Internet Explorer®

Linux

Red Hat Enterprise Linux Server 6（64-bit x86_64）

Red Hat Enterprise Linux Server 6（64-bit x86_64）

Red Hat Enterprise Linux Server 7

Red Hat Enterprise Linux Server 7

Windows

Windows Server 2012 R2 Standard

Microsoft® Windows Server® 2012 R2 Standard 日本語版

このマニュアルで使用する英略語

このマニュアルで使用する英略語を次に示します。

英略語

英字での表記

FTP

File Transfer Protocol

HTTP

Hyper Text Transfer Protocol

JDBC

Java Database Connectivity

JSP

Java Server Pages

URL

URI Uniform Resource Locator

このマニュアルで使用するKB（キロバイト）などの単位表記

1KB（キロバイト）、1MB（メガバイト）、1GB（ギガバイト）、1TB（テラバイト）はそれぞれ1,024バイト、1,024²バイト、1,024³バイト、1,024⁴バイトです。

1　テスト結果収集機能の概要

テスト結果収集機能の概要について説明します。

1.1　テスト結果収集機能とは

テスト結果収集機能は、Javaアプリケーションのテスト実施時の結果（エビデンス）の収集作業を省力化し、テスト作業を効率的に実施するための支援ツールです。

テスト結果収集機能は、Javaアプリケーションが実行したSQLなどのエビデンス収集を容易に実施する機能を提供します。

また、エビデンスをサーバで一括管理することで、次のことを支援します。

プロジェクト内で、テスト状況および問題点を共有する

プロジェクト管理者とメンバのコミュニケーションを円滑にする

テスト結果収集機能は、次の2つのプログラムから構成されます。

Hitachi System Information Capture - Data Store for Evidence（以降、HSIC-DSEと表記します）

レポジトリサーバにエビデンスを蓄積して、エビデンスを一括管理します。レポジトリサーバは、エビデンスの蓄積・一括管理のために使用するサーバです。

Hitachi System Information Capture - Evidence Collector for Databases（以降、HSIC-ECDと表記します）

Javaアプリケーションが実行したSQLなどのエビデンスを収集します。

1.1.1　HSIC-DSEの機能

HSIC-DSEは、クラウド環境でJenkinsと連携し、テストサーバからエビデンスを収集します。

Jenkinsは、テスト実施者からpull requestを受けると、テストサーバ上で規模解析、静的コード解析、ビルド、テストなどのジョブを実行します。

テストが終わると、JenkinsとHSIC-DSEが連携してエビデンスを収集します。HSIC-DSEは、収集したエビデンスをレポジトリサーバに蓄積します。エビデンスは、キー（ユーザID、テストID、実行時刻など）を基に検索して参照できます。

HSIC-DSEの概要を次の図に示します。

図1‒1　HSIC-DSEの概要

1.1.2　HSIC-ECDの機能

HSIC-ECDは、アプリケーションサーバに組み込んで使用します。Javaアプリケーションが実行するSQLがエビデンスの取得対象です。また、SQL以外にもJavaアプリケーションの任意のメソッド実行時の引数などの情報をエビデンスとして取得できます。

HSIC-ECDを使用すると、テスト対象のJavaアプリケーションを改造しなくても、Javaアプリケーションが実行したSQL、更新系SQL実行前後のデータを取得できます。

HSIC-ECDは、Javaアプリケーションが実行したSQLの前後にSELECT文を実行して実行前後のデータを自動的に取得します。これによって、SQL実行結果をエビデンスとして取得するための次に示す作業が不要となり、テスト効率が向上します。

手動でSQLを実行する作業

専用のスクリプトを記述してSQLを実行する作業

HSIC-ECDの概要を次の図に示します。

図1‒2　HSIC-ECDの概要

クラウド開発環境でHSIC-ECDを使用すると、HSIC-ECDが出力したエビデンスをHSIC-DSEが収集・蓄積します。

1.2　HSIC-ECDによるSQL情報の出力

HSIC-ECDは、Javaアプリケーションが実行したSQL情報をファイル（HSIC-ECDエビデンスファイル）に出力します。

表1‒1　HSIC-ECDによるSQL情報の出力

機能名

説明

SQL出力機能

サーブレット/JSPからデータベースへアクセスしたSQLをHSIC-ECDエビデンスファイルに出力します。

SQL更新前後情報出力機能

SQL出力機能で出力したSQLが更新系SQLの場合、更新前後のデータベースの情報をHSIC-ECDエビデンスファイルに出力します。

SQL参照情報出力機能

SQL出力機能で出力したSQLがSELECT文の場合、SELECT文で参照した情報をHSIC-ECDエビデンスファイルに出力します。

1.2.1　SQL出力機能

SQL出力機能は、サーブレット/JSPを使用して作られたJavaアプリケーションが実行するSQLをHSIC-ECDエビデンスファイルに出力します。これによって、Javaアプリケーションが正しいSQLを実行しているか容易に確認できます。

HSIC-ECDは、JDBCドライバを使用してサーブレット/JSPが実行したSQLの実行メソッドをフックし、そのSQLをHSIC-ECDエビデンスファイルに出力します。

SQL出力機能の概要を次の図に示します。

図1‒3　SQL出力機能の概要

対応JDBCドライバ

SQL出力機能が対応しているJDBCドライバを次の表に示します。

表1‒2　対応JDBCドライバ

DB名とバージョン

JDBCドライバのファイル名

HiRDB V9

pdjdbc4.jar

SQLの出力契機

SQL出力機能が出力する契機は、次の表に示すインターフェースおよびメソッドを使用してSQLが実行されたときです。

表1‒3　インターフェースおよびメソッドのサポート状況

インターフェース名

メソッド名

サポート状況

java.sql.Statement

execute(String sql)

○

executeQuery(String sql)

○

executeUpdate(String sql)

○

java.sql.PreparedStatement

execute()

○

executeQuery()

○

executeUpdate()

○

java.sql.Statementから継承されたメソッド

継承元と同じ

java.sql.CallableStatement

java.sql.Statementから継承されたメソッド

継承元と同じ

java.sql.PreparedStatementから継承されたメソッド

継承元と同じ

（凡例）

○：サポートしています。

対応しているsetter

対応しているsetterを次の表に示します。

表1‒4　対応しているsetter

インターフェース名

メソッド名

サポート状況

（HiRDB）

java.sql.PreparedStatement

setBigDecimal(int parameterIndex, BigDecimal x)

○

setBoolean(int parameterIndex, boolean x)

○

setByte(int parameterIndex, byte x)

○

setBytes(int parameterIndex, byte[] x)

○

setDate(int parameterIndex, Date x)

○

setDate(int parameterIndex, Date x, Calendar cal)

○

setDouble(int parameterIndex, double x)

○

setFloat(int parameterIndex, float x)

○

setInt(int parameterIndex, int x)

○

setLong(int parameterIndex, long x)

○

setNull(int parameterIndex, int sqlType)

○

setShort(int parameterIndex, short x)

○

setString(int parameterIndex, String x)

○

setTime(int parameterIndex, Time x)

○

setTime(int parameterIndex, Time x, Calendar cal)

○

setTimestamp(int parameterIndex, Timestamp x)

○

setTimestamp(int parameterIndex, Timestamp x, Calendar cal)

○

java.sql.CallableStatement

java.sql.PreparedStatementから継承されたメソッド

継承元と同じ

（凡例）

○：サポートしています。

注意事項

SQL実行中に例外が発生した場合は、実行したSQLを出力できないことがあります。

アプリケーションサーバが自動で定期的に実行するSQLは、HSIC-ECDエビデンスファイルに出力しません。

エスケープ句を使用した場合、エスケープ処理後のSQLを出力することがあります。

1.2.2　SQL更新前後情報出力機能

SQL更新前後情報出力機能は、Javaアプリケーションが更新系SQLを実行したときに、更新前後のデータベースの情報をファイルに出力します。

更新前情報の取得対象となるSQLは、UPDATE文とDELETE文です。

更新後情報の取得対象となるSQLは、UPDATE文とINSERT文です。

SQL更新前後情報出力機能の概要を次の図に示します。

図1‒4　SQL更新前後情報出力機能の概要

注意事項

カーソルを使用して更新（Resultsetクラスのupdaterメソッド）した場合、SQLの更新前後情報はHSIC-ECDエビデンスファイルに出力されません。

UPDATE文に対する制限事項

次に示す句を使用したUPDATE文の場合、SQL更新前後情報を取得しません。

WHERE CURRENT OF句

SET ROW句

ADD句

DELETE句

NEXT VALUE式

INSERT文に対する制限事項

次に示す句を使用したINSERT文の場合、SQL更新前後情報を取得しません。

(ROW)を指定した行挿入

NEXT VALUE式

DELETE文に対する制限事項

DELETE文の検索条件に現在時刻を取得するファンクションを使用している場合は、正しいSQL更新前後情報を取得できません。

また、次に示す句を使用したDELETE文の場合、SQL更新前後情報を取得しません。

WHERE CURRENT OF句

NEXT VALUE式

1.2.3　SQL参照情報出力機能

SQL参照情報出力機能は、JavaアプリケーションがSELECT文を実行したときに、SELECT文で参照した情報をHSIC-ECDエビデンスファイルに出力します。

制限事項

次に示す句を使用したSELECT文の場合、SQL参照情報を取得しません。

WRITE文

NEXT VALUE式

2　テスト結果の参照

HSIC-DSEにアクセスして、レポジトリサーバに登録されているテスト結果を参照する操作について説明します。

2.1　HSIC-DSEへのアクセスに使用するWebブラウザ

HSIC-DSEへのアクセスに使用するWebブラウザは、Internet Explorerを使用してください。

アクセスする際、次に示すバージョンより古いInternet Explorerを使用した場合、画面が正しく表示されないおそれがあります。

バージョン: 11.0.9600.18314

更新バージョン: 11.0.31(KB3154070)

古いバージョンのInternet Explorerを使用している場合は、バージョンアップしてからHSIC-DSEにアクセスしてください。

2.2　HSIC-DSEへのアクセス

テスト結果を参照するために、HSIC-DSEへアクセスします。

Jenkinsのジョブの実行結果に表示されたURLをWebブラウザのアドレスバーに入力して、HSIC-DSEへアクセスしてください。

HSIC-DSEにアクセスすると、次の画面が表示されます。

図2‒1　HSIC-DSEへのアクセス時に表示される画面

2.3　テスト結果の検索

検索条件を入力し、テスト結果を検索します。

入力できる検索条件を次に示します。

テストID

登録者（pull request送信者のユーザID）

登録日時（pull requestをJenkinsが受けた日時）

それぞれの検索条件は、AND条件で検索します。

検索条件を入力しなかった項目は、検索条件として使用しません。

［検索］ボタンをクリックすると、検索条件で絞り込んだテスト結果の一覧が画面に表示されます。

図2‒2　検索条件で絞り込んだときの表示例

HSIC-DSEでは、テストID＋登録者IDごとに最新のエビデンスを保存しています。同一のテストID＋登録者IDのテストを複数回実施した場合は、最新のエビデンスだけが表示されます。

2.4　テスト結果の参照

ファイル一覧からテスト結果のファイルを選択し、テスト結果の内容を確認します。

テスト結果の［表示］ボタンをクリックすると、テストID＋登録者ごとのテスト結果のファイルの一覧を表示する画面が出力されます。

図2‒3　テスト結果のファイルの一覧の表示例

ファイル名をクリックするとテスト結果のファイルをダウンロードできます。ダウンロードして内容を確認してください。

テスト環境でHSIC-ECDを使用してテストを実行している場合は、テスト結果のファイル一覧にHSIC-ECDエビデンスファイル（テスト対象のJavaアプリケーションが実行したSQL、SQLの更新前後情報）も表示します。

3　テスト結果収集機能のファイル

テスト結果収集機能のファイルについて説明します。

3.1　HSIC-ECDエビデンスファイル

HSIC-ECDエビデンスファイルの形式について説明します。

ファイル名

HSIC-ECDエビデンスファイルのファイル名を次に示します。

evidence.txt

出力契機

出力契機にHSIC-ECDエビデンスファイルがない場合は、新たにファイルを作成して出力します。

HSIC-ECDエビデンスファイルがすでにある場合は追加書きします。

HSIC-ECDエビデンスファイルの出力契機および出力内容を次の表に示します。

表3‒1　HSIC-ECDエビデンスファイルの出力契機

出力契機

出力内容

サーブレット/JSPでSQLを実行したとき

実行したSQL情報

サーブレット/JSPでUPDATE文を実行したとき

SQL更新前情報、SQL更新後情報

サーブレット/JSPでINSERT文を実行したとき

SQL更新後情報

サーブレット/JSPでDELETE文を実行したとき

SQL更新前情報

サーブレット/JSPでSELECT文を実行したとき

SQL参照情報

HSIC-ECD内でエラーが発生した場合

エラーメッセージ

出力形式

HSIC-ECDエビデンスファイルの出力形式を次に示します。

yyyy/mm/dd hh:mm:ss.zzz XX..XX
tt..tt
tt..tt
  :

yyyy/mm/dd ：年月日

hh:mm:ss.zzz：時分秒ミリ秒

精度は、Linuxの場合は約1ミリ秒、Windowsの場合は約10ミリ秒です。

XX..XX：出力契機を表すコード

tt..tt：出力契機ごとの出力内容

出力される内容は次のとおりです。

実行したSQL情報

SQL更新前情報

SQL更新後情報

SQL参照情報

エラーメッセージ

文字コードはUTF-8で出力します。

実行したSQL情報

出力契機を表すコードとして、SQL実行前は「SQL START」、SQL実行後は「SQL END」を出力します。

「SQL START」と「SQL END」の間の行に、Javaアプリケーションが実行したSQLを出力します。

「SQL END」の行の下に空行を出力します。

Javaアプリケーションが実行するSQLで例外が発生した場合は、「SQL END」の行は出力しません。

Javaアプリケーションが実行するSQLにバインド変数が使用されている場合は、次に示す規則で変換して出力します。

setterで設定したバインド変数の値を、toString()で文字列に変換して出力します。

setterがsetString()、setTime()、setDate()、setTimestamp()の場合は、''で囲んで出力します。

setDate()などのjava.util.Calendarを引数とするsetterは、引数のCalendarオブジェクトに設定したタイムゾーンに合わせた日時を出力します。

文字列化できない型や値は、<>で囲んで出力します。

例1：null → <null>

例2：byte[] → <byte[]>

HSIC-ECDが対応していないsetterを使用した場合は、バインド変数の値に変換しないで、バインド変数名をそのまま出力します。

HSIC-ECDが対応しているsetterは、「1.2.1　SQL出力機能」の対応しているsetterの説明を参照してください。

実行したSQL情報の出力例を次に示します。

2015/04/19 18:37:52.590 SQL START
UPDATE "schema1"."table1" SET column1 = DEFAULT, column2 = 100 WHERE column3 =
'商品1'

2015/04/19 18:37:52.590 SQL END

SQL更新前情報

SQL更新前情報は、実行したSQL情報の前に出力します。

出力契機を表すコードとして「before update」を出力します。

次の行にHSIC-ECDが更新前情報を取得するために実行したSQLを出力します。

その次の行から、HSIC-ECDが取得した結果を次のように出力します。

結果は、toString()メソッドで文字列に変換して、要素を空白区切りで出力します。

データ型が、CHAR、VARCHAR、NCHAR、NVARCHAR、MCHAR、MVARCHAR、DATE、TIME、TIMESTAMPの場合は、''で囲んで出力します。

結果がnull値の場合は、<null>と出力します。

抽象データ型、BLOB型の場合は、<>で型を囲んで出力します。

最後の行の後ろには空行を出力します。

HSIC-ECDが制限事項とする構文が使用されていた場合は、KFSF50002-Wメッセージを出力します。

HSIC-ECDが更新前情報を取得するために実行したSQLでエラーが発生した場合は、KFSF50001-Eメッセージを出力します。

SQL更新前情報の出力例を次に示します。

2015/04/19 18:37:52.550 before update
SELECT column1, column2 WHERE column3 = 'xxx'
AAA <null>

SQL更新後情報

SQL更新後情報は、実行したSQL情報の後ろに出力します。

出力契機を表すコードとして「after update」を出力します。

次の行にHSIC-ECDが更新後情報を取得するために実行したSQLを出力します。

その次の行から、HSIC-ECDが取得した結果を次のように出力します。

結果は、toString()メソッドで文字列に変換して、要素を空白区切りで出力します。

データ型が、CHAR、VARCHAR、NCHAR、NVARCHAR、MCHAR、MVARCHAR、DATE、TIME、TIMESTAMPの場合は、''、で囲んで出力します。

結果がnull値の場合は、<null>と出力します。

抽象データ型、BLOB型の場合は、<>で型を囲んで出力します。

最後の行の後ろには空行を出力します。

HSIC-ECDが制限事項とする構文が使用されていた場合は、KFSF50002-Wメッセージを出力します。

HSIC-ECDが更新後情報を取得するために実行したSQLで例外が発生した場合は、KFSF50001-Eメッセージを出力します。

HSIC-ECDがSQL更新後情報取得のために実行したSQLや、Javaアプリケーションが実行するSQLで例外が発生した場合は、SQL更新後情報は出力しません。

SQL更新後情報の出力例を次に示します。

2015/04/19 18:37:53.020 before update
SELECT column1, column2 WHERE column3 = 'xxx'
BBB 100

SQL参照情報

SQL参照情報は、実行したSQL情報の後ろに出力します。

出力契機を表すコードとして「result set」を出力します。

次の行にHSIC-ECDが参照情報を取得するために実行したSQLを出力します。

その次の行から、HSIC-ECDが取得した結果を次のように出力します。

結果は、toString()メソッドで文字列に変換して、要素を空白区切りで出力します。

データ型が、CHAR、VARCHAR、NCHAR、NVARCHAR、MCHAR、MVARCHAR、DATE、TIME、TIMESTAMPの場合は、''で囲んで出力します。

結果がnull値の場合は、<null>と出力します。

抽象データ型、BLOB型の場合は、<>で型を囲んで出力します。

最後の行の後ろには空行を出力します。

HSIC-ECDが制限事項とする構文が使用されていた場合は、KFSF50002-Wメッセージを出力します。

HSIC-ECDがSQL参照情報を取得するために実行したSQLで例外が発生した場合は、KFSF50001-Eメッセージを出力します。

SQL参照情報の出力例を次に示します。

2015/04/19 18:37:49.370 result set
SELECT column1, column2 WHERE column3 = 'xxx'
AAA null

エラーメッセージ

HSIC-ECDが実行したSQLで例外が発生した場合などに出力する情報です。

出力契機を示すコードとして「HSIC msg」を出力します。

次の行からエラーメッセージテキストを出力します。最後の行の後ろには空行を出力します。

エラーメッセージの出力例を次に示します。

2015/04/19 18:37:49.370 HSIC msg
KFSFxxxxx-E ‥

索引

H

HSIC-DSEの機能[1]

HSIC-DSEへのアクセス[1]

HSIC-DSEへのアクセスに使用するWebブラウザ[1]

HSIC-ECDエビデンスファイル[1], [2]

HSIC-ECDエビデンスファイルの出力契機[1]

HSIC-ECDエビデンスファイルの出力形式[1]

HSIC-ECDによるSQL情報の出力[1]

HSIC-ECDの機能[1]

S

SQL更新前後情報出力機能[1]

SQL参照情報出力機能[1]

SQL出力機能[1]

て

テスト結果収集機能[1]

テスト結果の検索[1]

テスト結果の参照[1]