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 が追加されます。この例では、 HillCrescent は両方とも同じ住所に属しています。