Modul Complete Tree Comparison

Verwenden Sie das Modul Complete Tree Comparison, um Dateien mit baumstrukturierten Daten wie JSON- oder XML-Dateien zu vergleichen. Tricentis Data Integrity unterliegt keinen Einschränkungen bei der Dateigröße, sodass Sie große Bäume leicht vergleichen können.

Das Modul Complete Tree Comparison ist Teil der Untermenge Tosca Data Integrity Modules And Samples.tsu.

Verstehen, was Sie vergleichen können

Das Modul hilft Ihnen, Unterschiede in hierarchischen oder verschachtelten Daten zu erkennen. Sie können fehlende Knoten und Typunterschiede erkennen und melden. Sie können Folgendes vergleichen:  

  • JSON mit JSON. Diese Vergleiche verifizieren die strukturelle Ausrichtung und prüfen auf Wert- und Typinkongruenzen, z. B. Zeichenfolge vs. Zahl.

  • JSON mit XML. Diese Vergleiche berücksichtigen die hierarchischen Strukturen beider Formate, die auf einen Baum abgebildet werden. Attribute existieren nicht in JSON und Tosca behandelt jeden Wert als Zeichenfolge für den Vergleich.

  • XML mit XML. Diese Vergleiche verifizieren die strukturelle Ausrichtung und prüfen auf Wert- und Attributinkongruenzen.

Diese Tabelle erläutert wichtige Unterschiede zwischen JSON- und XML-Dateien für Vergleiche:

 

JSON

XML

Typen

JSON-Dateien können mehrere Datentypen enthalten, z. B. Zeichenfolgen, Zahlen, boolesche Werte, Arrays oder Objekte.

Bei Vergleichen von JSON mit JSON müssen die Struktur und alle Datentypen übereinstimmen. Wenn dies nicht der Fall ist, meldet Tosca sie als unterschiedlich im Typ.

XML-Dateien erlauben nur Zeichenfolgentypen.

Attribute

Es ist nicht möglich, Attribute in JSON zu definieren.

XML behandelt die meisten Daten als Text, aber Attribute und CDATA-Abschnitte können einen bestimmten Text haben.
Vergleiche von XML mit XML konzentrieren sich auf Struktur und Textinhalt. Tosca meldet Unterschiede in den Attributen.

Datenstruktur

Sowohl JSON als auch XML organisieren Daten hierarchisch. Tosca meldet fehlende Ziel- und Quellknoten.

Wert

Wenn ein Knoten den gleichen Pfad und Typ in Quelle und Ziel hat, z. B. "1" und 1, prüft Tosca, ob der Wert des Knotens übereinstimmt, und meldet das Ergebnis.

Modulattribute

Das Modul Complete Tree Comparison hat folgende Attribute:

Modulattribut

Beschreibung

Source

Geben Sie den absoluten Pfad zur Quelldatei an.

Target

Geben Sie den absoluten Pfad zur Zieldatei ein.

General Options

Geben Sie das Ziel der Reportdatei sowie die enthaltenen und ausgeschlossenen Pfade an.

Allgemeine Optionen

Unter General Options können Sie Folgendes definieren:

Modulattribut

Beschreibung

Optional

Report Path

Lokaler Dateipfad zum Ordner, in dem der Vergleichsreport gespeichert wird.

X

Paths to Exclude

Baumknoten, die während des Tests ignoriert werden sollen.

X

Paths to Include

Baumknoten, die während des Tests einbezogen werden sollen. Tosca ignoriert alle anderen Pfade.

X

Tests mit dem Modul erstellen

Um zwei JSON- oder XML-Dateien zu vergleichen, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie einen Testfall und fügen Sie das Modul Complete Tree Comparison hinzu.

  1. Definieren Sie Ihre Source- und Target-Dateien:  

    • Wählen Sie für jede Datei den richtigen Typ aus.

    • Legen Sie ihre absoluten Pfade unter jedem Value fest.

    Source und Target haben die gleiche Funktionalität, sodass Sie sie austauschbar verwenden können.

  2. Wählen Sie, ob Sie in den allgemeinen Optionen Folgendes verwenden möchten:

    • Der Report Path gibt den Ordner an, in dem Ihr Baum-Vergleichsreport gespeichert wird. Geben Sie diesen Wert mit einem lokalen Dateipfad ein. Nachdem Sie Ihren Test ausgeführt haben, können Sie den gespeicherten Report mit unserem Report Viewer öffnen. Wenn Sie diesen Wert leer lassen, speichert Tosca keinen Report.

    • Paths to Exclude gibt die Liste aller Pfade und Knoten an, die Sie aus dem Baumvergleich ausschließen möchten.

    • Paths to Include gibt die Liste aller Pfade und Knoten an, die Sie vergleichen möchten. Alle anderen Pfade werden ausgeschlossen.

    Paths to Include und Paths to Exclude gelten sowohl für Target als auch für Source. Die Verwendung beider Filter im selben Test wendet zuerst Paths to Include an und schließt dann aus, was im Ausschlussfilter definiert ist. Das Modul vergleicht die vollständige Baumdatei, wenn Sie beide Werte leer lassen.

    Die Knotenpfad-Syntax ist der vollständige Knotenpfad mit Unterstützung für Platzhalter, wie in den folgenden Beispielen gezeigt.

  3. Führen Sie Ihren Testfall aus.

Beispiele

Lassen Sie uns die folgenden Dateien für einen Test verwenden.

Source.json ist unsere Quelldatei, die sich unter C:\Examples\Tree Comparison\Sources\source.json befindet:

Kopieren
{
  "library": {
    "books": [
      {
        "title": "The Hobbit",
        "price": 14.99,
        "genre": "Fantasy"
      },
      {
        "title": "Pride and Prejudice",
        "price": 10.25,
        "genre": "Romance"
      }
    ],
    "magazines": [
      {
        "title": "National Geographic",
        "price": 5.99,
        "genre": "Science"
      },
      {
        "title": "Time",
        "price": 4.50,
        "genre": "News"
      },
      "END"
    ]
  }
}

Target.json ist unsere Zieldatei, die sich unter C:\Examples\Tree Comparison\Targets\target.json befindet:

Kopieren
{
  "library": {
    "books": [
      {
        "title": "The Hobbit 2",
        "price": 14.99,
        "genre": "Fantasy"
      },
      {
        "title": "Pride and Prejudice",
        "price": 10.99,
        "genre": "Romance"
      }
    ],
    "magazines": [
      {
        "title": "National Geographic",
        "price": 5.99,
        "genre": "Science"
      },
      {
        "title": "Time",
        "price": 4.50,
        "genre": "News"
      },
    ]
  }
}

Tosca vergleicht die Dateien folgendermaßen:  

  • Es gleicht das Wurzelelement library ab.

  • Es vergleicht die untergeordneten Knoten books und magazines.

  • Es meldet den Knoten book[0] aufgrund des Knotens title als nicht übereinstimmend: The Hobbit <> The Hobbit 2.

  • Es meldet den Knoten book[1] aufgrund des Knotens price als nicht übereinstimmend: 10.25 <> 10.99.

  • Es meldet zusätzliche Knoten wie END als fehlend in der Zieldatei.

  • Es meldet den Rest der Knoten als übereinstimmend.

Pfade ausschließen oder einschließen

Hier sind einige Beispiele für die Verwendung von Paths to Include und Paths to Exclude beim Vergleich der obigen Dateien:

  • Um nur Bücher zu vergleichen, setzen Sie Paths to Include auf library.books[*].

  • Um nur die Preise zu vergleichen, setzen Sie Paths to Include auf library.books[*].price; library.magazines[*].price.

  • Um nur bestimmte Werte zu vergleichen, setzen Sie Paths to Include auf library.books[0].title; library.magazines[1].price.

  • Um nur Buchpreise zu vergleichen, setzen Sie Paths to Include auf library.books[*].price.

  • Um das erste Magazin aus dem Vergleich auszuschließen, setzen Sie Paths to Exclude auf library.magazines[0].

  • Um alle Titel und Preise aus dem Vergleich auszuschließen, setzen Sie Paths to Exclude auf library.books[*].price; library.magazines[*].price; library.books[*].title; library.magazines[*].title; oder Paths to Include auf library.books[*].genre; library.magazines[*].genre.

Wenn Sie das letzte Filterbeispiel verwenden und das Attribut END aus Source.json entfernen, werden beide Dateien in Struktur und Wert gleich.

Baumvergleichstestfall mit Filter

Vergleich zwischen JSON und XML

Sie können diese Source1.json-Datei auch vergleichen:  

Kopieren
{
  "person": {
    "name": "Alice",
    "age": 30,
    "contacts": [
      {"contact": "alice@example.com"},
      {"contact": "123-456-7890"},  
      ]
  }
}

Mit Target1.xml:

Kopieren
<person>
    <name>Alice</name>
    <age>30</age>
    <contacts>
        <contact>alice@example.com</contact>
        <contact type="phone">123-456-7890</contact>
    </contacts>
</person>

Ähnlich wie im vorherigen Beispiel führt Tosca Folgendes aus:  

  • Es gleicht das Wurzelelement person ab.

  • Es vergleicht die untergeordneten Knoten name, age und contacts.

Für diesen Vergleich zwischen JSON und XML führt Tosca außerdem Folgendes aus:

  • Es ordnet das Array contacts in der JSON-Datei dem Element contacts in der XML-Datei zu. Die einzelnen Objekte im JSON-Array werden den Kontaktelementen in der XML-Datei zugeordnet.

  • Es meldet Attribute wie phone als fehlend in der JSON-Datei.

Wenn Sie das Attribut type="phone" aus der Datei Target1.xml entfernen, sind beide Dateien in Struktur und Wert gleich.