JSON/XMLファイル
JSON/XML ファイルのキャッシュ データベースモジュールへのロードを使用して、JSON または XML ファイルをSQLiteデータベースにロードします。
この機能の典型的な使用例は次のとおりです:
-
JSONまたはXMLファイル内のコンテンツ(例えば、一般的に何件のレコードが存在するか、または特定のタイプのレコードが何件存在するか)を検証します。
-
上記のユースケースを支援し、完全な柔軟性を提供するために、コンテンツはSQLでクエリできるデータベースに読み込まれます。これにより、メタデータフィールドテストや行ごとの比較など、データ整合性のあらゆる種類の標準テストを実行することができます。
Tosca Commander 内の設定ダイアログ (see chapter "設定 - Tricentis データ整合性") で SQLiteキャッシュデータベースのパスを設定します。
JSON/XMLファイルのキャッシュデータベースモジュールへのロード
JSON/XMLファイルのキャッシュデータベースモジュールへのロードには以下の属性が含まれます。
|
モジュール属性 |
説明 |
オプション |
|---|---|---|
|
ファイル名 |
読み込むJSONまたはXMLファイルの完全なファイルパスとファイル名を入力します。 |
|
|
ファイル形式 |
ファイルのファイル形式を定義します。サポートされている形式はJSONとXMLです。 |
|
|
JPath/XPath |
JPath または XPath式を定義して、XML または JSON ファイルの要素や属性をナビゲートします。ファイルサイズが大きく、ファイルの特定のサブノードをフィルタリングしたい場合、JPath/XPathを定義することができます。 XPathを定義した場合、名前のスペースはサポートされません。 |
X |
|
テーブル接頭辞 |
同じ名前の既存テーブルが上書きされないようにするには、テーブル接頭辞を指定します。この接頭辞は、作成されるすべてのテーブルに使用されます。 |
X |
テストステップのJSON/XML ファイルのキャッシュデータベースモジュールへのロード
テーブルを作成するためのロジック
XML ファイルをキャッシュデータベースに読み込んだ後、ファイルの内容は以下の方法でテーブルに変換されます:
-
子ノードを持つファイル内のすべてのノードは、テーブルに変換されます。
-
値ノードであるすべての子ノードは、親テーブルの列になります。値ノードが、親ノードに複数回現れるか、属性を持つ場合は、独自のテーブルが存在します。
-
タグがn個の異なる親ノードの下で異なる場所に表示される場合、外部キー列は以下の形式となります:主キーの ___id 形式外部キーのParent1TableName___id
-
XPathを指定すると、 Entity と呼ばれる人工的なルートで囲まれ、有効なXMLになります。その結果、 Entity テーブルが作成されます。
-
もし、値ノードがその親ノードに存在しない場合、値は NULL となります。存在していても、テキストがない場合、空の文字列になります。もし値ノードがnullの値の場合、値は <null> になります。
この例では、欠落ノード(NULL)とnull値を持つ値ノード(<null>)の違いを確認できます。
例えば、ファイルにこのようなコンテンツがあるとします:
{
Items:
[
{
"Id" : 1,
"Name" : "Bill",
"Position" : "Manager"
},
{
"Id" : 2,
"Name" : "Kirsten",
},
{
"Id" : 3.
"Name" : "Jeff",
"Position" : null
]
}結果のテーブルの位置列は以下のようになります:
-
Id 1 の値は Manager です。
-
Id 2 の値は NULL です。
-
Id 3 の値は <null> です。
-
-
キャッシュデータベースに読み込んだコンテンツを SQL でクエリするには、子テーブルの外部キーを使用して(例)子テーブルと親テーブルを結合します。
このクエリにはSQL文が含まれます:
SELECT * FROM address
JOIN person ON address.Person___id = Person.___id
以下の例では、住所の3つの値ノードを含む XMLファイルの構造を確認できます。
<Person>
<Name>John</Name>
<Address>
<Street>Hill</Street>
<City>Sydney</City>
<Country>AUS</Country>
</Address>
<Address>
<Street>Street 2</Street>
<City>City 2</City>
<Country>HG</Country>
</Address>
</Person>
___id 列は各テーブルの主キーとして作成されます。住所ノードには、通り名、都市、および国の3つの値ノードがあります。
SQLite用のDB ブラウザの住所テーブル
|
実際のテーブルがどのようにリンクされているかを表示したい場合は、 SchemaCrawler を使用できます。 |
例: JSON/XMLファイルをキャッシュデータベースモジュールにロードするの操作
この例では、ファイル Person Table.xml をキャッシュデータベースに読み込みます。
XMLファイルの読み込み
XMLファイルには、人、住所、通り名テーブルに変換する繰り返し値ノードが含まれています。
<Person>
<Name>Kolmogorov</Name>
<Address>
<Street>Hill</Street>
<Street>Crescent</Street>
<City>Sydney</City>
<Country>AUS</Country>
</Address>
</Person>
スクラッチブックでテストケースを実行した後、次の結果が得られます。
スクラッチブックの結果
スクラッチブックの Loginfo 列には、実行結果と作成されたテーブル(人、住所、通り名)が表示されます。
インストールしたSQLite用のDB ブラウザで、読み込んだデータベースを開き、作成されたテーブルを見ることができます:
SQLite用のDB ブラウザの人テーブル
SQLite用のDB ブラウザの住所テーブル
SQLite用のDBブラウザの通り名テーブル
例に示されているように、 ___id 列はテーブルの主キーとして作成されます。住所ノードには、2 つの通り名値ノードがあります。これらは繰り返されるため、通り名ノード用に別のテーブルが作成されます。通り名テーブルを住所テーブルにリンクするために、外部キー Address___id が追加されます。この例では、 Hill と Crescent は両方とも同じ住所に属しています。