DevOps Toolintegration testen

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 5 Minuten Lesedauer
  • Mit der Testtool-Integration können Sie Testergebnisse in DevOps für Jenkins, Azure DevOps, GitHub, GitHub Enterprise, und GitLab anzeigen (Einheiten-, Funktions- und Leistungstests).

    Für GitLab und Jenkins wird nur die Integration des JUnit-Testtyps unterstützt.

    Hinweis:
    Verwenden Sie für andere Testtypen den Endpunkt DevOps - POST /devops/tool/{capability} der DevOps-API.
    • Mit TestNG ausgeführte und veröffentlichte Selenium-Tests werden vom Plugin Jenkins für ServiceNow DevOpsgemeldet.
    • Die Kategorisierung von Testtypen wird unterstützt.
    • Zusätzliche Testergebnisse, die von Tools wie Apache JMeter gemeldet werden, können in DevOps mithilfe von anwenderdefinierten Workflow-Studio -Subflows verarbeitet werden (keine Pipeline-Änderungen erforderlich).
    Kategorie Testtyp
    Einheit

    JUnit (Standard)

    NUnit

    XUnit

    Komponententest

    Hinweis:
    • Für GitLab und Jenkins wird nur die Testtypintegration JUnit unterstützt.
    • Für ADO, GitHub und GitHub Enterprise werden die Testtypintegrationen JUnit, NUnit, XUnit und Unit unterstützt.

    Sie können den Standardtesttyp ändern, indem Sie ändern [sn_devops.default_test_type] DevOps user.

    Funktionell
    • Integration
    • Regression
    • Rauch
    • System
    • Anwenderakzeptanz
    Performance Laden

    Testtypzuordnung

    Die Testtypzuordnung verbindet den Testtyp und die Entität, die mit dem Tool DevOps getestet werden (DevOps > Integrationen > Testtyp-Zuordnungen Modul)

    Testtypzuordnungen

    Eine genaue Testtypzuordnung stellt sicher, dass der Testtyp in den Ergebnissen der Testzusammenfassung immer wie beabsichtigt angezeigt wird.

    Feld Beschreibung
    Testtyp
    • JUnit
    • Nunit
    • Xunit
    • Komponententest
      Hinweis:
      • Für GitLab und Jenkins wird nur die Testtypintegration JUnit unterstützt.
      • Für ADO, GitHub und GitHub Enterprise werden die Testtypintegrationen JUnit, NUnit, XUnit und Unit unterstützt.
    • Integration
    • Regression
    • Rauch
    • System
    • Anwenderakzeptanz
    • Laden
    ID der DevOps-Entität Tabellenname

    DevOps Tabellenname, der die mit den Testergebnissen verknüpfte Entität enthält (in der Nutzlast des Testberichts).

    • Schritt [sn_devops_step]
    • -Pipeline [sn_devops_pipeline]
    Hinweis:
    Nur DevOps Schritt- und Pipeline-Tabellen werden unterstützt.
    Dokument

    Name der in der ausgewählten Tabelle angegebenen Entität.

    Zum Beispiel der Name des Schritts, der Pipeline, des Artefakts oder des Pakets.

    Testdateipfade

    (Jenkins nur Tests)

    Pfad zur generierten Testergebnisdatei auf dem Server Jenkins.

    Dies ist nützlich, damit Testberichte mit Attributen, die nicht der JUnit- oder TestNG-Implementierung entsprechen, wie z. B. JMeter, weiterhin von DevOpsgenutzt werden können.

    Trennen Sie mehrere Dateien durch ein Komma.

    Hinweis:
    Sie müssen den Subflow Workflow-Studio verwenden, um eine Test-Rohnutzlast zu transformieren.
    Toolintegration

    Tool, das den Test ausführt.

    DevOps-Tabelle

    TabelleDevOps, die dem Tabellennamen in der Einstellung für die DevOps-Entitäts-ID entspricht.

    Abbildung : 1. DevOps Zuordnung des Testtyps
    DevOps-Testtypzuordnung
    Abbildung : 2. Beispiel-YAML-Datei für ADO-Komponententest
    Beispiel-YAML-Datei für ADO-Komponententest
    Abbildung : 3. Beispiel-YAML-Datei für GitHub-Komponententest
    Beispiel-YAML-Datei für GitHub-Komponententest

    Transformieren einer Test-Rohnutzlast

    Sie können einen Rohtestbericht (einen Bericht mit Attributen, die nicht der JUnit- oder TestNG-Implementierung entsprechen), wie z. B. JMeter, umwandeln, indem Sie die Entscheidungstabelle der DevOps-Test-Subflow-Richtlinie so konfigurieren, dass sie einen anwenderdefinierten Subflow aufruft (Entscheidungstabellen > Entscheidungstabellen Modul).
    Hinweis:
    Sie müssen den anwenderdefinierten Subflow Workflow-Studio erstellen, der die Test-Rohnutzlast transformiert.

    Wenn in einer Leistungsphase mehr als ein Testtyp vorhanden ist, können Sie die Entscheidungstabelle für die DevOps-Testtyprichtlinie verwenden, um den Testtyp für jeden Test zu konfigurieren, damit die Nutzlasten der Testergebnisse korrekt transformiert werden.

    Abbildung : 4. DevOps Entscheidungstabellen
    DevOps-Entscheidungstabellen
    Tabelle : 1. DevOps Entscheidungstabellen
    Entscheidungstabelle Zweck Konfiguration
    DevOps-Test-Subflow-Richtlinie

    Um automatisch einen anwenderdefinierten Subflow aufzurufen, der die vom Tool empfangene Rohnutzlast transformiert.

    Entscheidungseingaben:

    • Testergebnis-Nutzlast
    • Testtyp

    Erstellen Sie eine Entscheidung, die den anwenderdefinierten Subflow angibt, der beim Empfang der Rohnutzlast aufgerufen werden soll.

    Legen Sie die Bedingungen so fest, dass sie Felder enthalten, die in der Rohnutzlast enthalten wären.

    Um beispielsweise den anwenderdefinierten Subflow für Jenkins BZ Performance Test aufzurufen:

    Bedingungen:
    • Der Testtyp ist Last

      (Last ist der Testtyp, der für Leistungstests konfiguriert ist.)

    • Testergebnis-Nutzlast enthält Durchsatz
    • Testergebnis-Nutzlast enthält Gleichzeitigkeit

    Antwort: Flow: Jenkins BZ-Leistungstest

    DevOps-Testtyprichtlinie

    Zum automatischen Festlegen von Testtypen, wenn in einer Leistungstestphase mehr als ein Testtyp konfiguriert ist.

    Dies ist erforderlich, damit die Ergebnisse für den zweiten Testtyp korrekt umgewandelt werden.

    Wenn beispielsweise ein Lastleistungstest und ein JUnit-Leistungstest im selben Schritt DevOps zugeordnet sind, werden die JUnit-Testergebnisse erst dann richtig formatiert, wenn eine Entscheidung erstellt wird.

    Entscheidungseingaben:
    • Schritt
    • Testergebnis-Nutzlast
    • Toolintegration
    • Pipeline

    Erstellen Sie für jeden Testtyp in der Leistungstestphase eine Entscheidung, um den Testtyp festzulegen.

    Lasttest:
    • Bedingungen:
      • Schritt ist Leistungstests
      • Testergebnis-Nutzlast enthält Durchsatz
      • Testergebnis-Nutzlast enthält Gleichzeitigkeit
    • Antwort: TestType: Laden

    JUnit-Test:

    • Bedingungen:
      • Schritt ist Leistungstests
      • Testergebnis-Nutzlast enthält keinen Durchsatz
      • Testergebnis-Nutzlast enthält keine Gleichzeitigkeit
    • Antwort: TestType: JUnit

    Abbildung : 5. DevOps mehrere Leistungstesttypen
    Leistungstesttypen für mehrere DevOps
    Abbildung : 6. DevOps mehrere Testtypzuordnungen
    DevOps-Testtypzuordnungen
    Abbildung : 7. DevOps Entscheidungstabellen-Entscheidung
    Entscheidung in DevOps-Entscheidungstabelle

    Testzusammenfassungsergebnisse

    Sie können auf folgende Weise Testzusammenfassungsergebnisse anzeigen.
    Abbildung : 8. DevOps Beispiel für eine Zusammenfassung des Leistungstests
    Zusammenfassung des DevOps-Leistungstests

    Erwartete Nutzlast der Standard-JSON-Benachrichtigungsfähigkeit – Test-Tool

    Funktional:
    { 
    "name": "CorpSite-selenium#55", 
    "duration": 78.802, 
    "passedTests": 4, 
    "failedTests": 0, 
    "skippedTests": 0, 
    "blockedTests": 0, 
    "totalTests": 4, 
    "startTime": "2020-06-30T18:12:31Z", 
    "finishTime": "2020-06-30T18:12:31Z", 
    "passingPercent": 100, 
     
     
    // Use Artifact OR Package OR Build + Stage + PipelineName Attributes 
    
    Send only one Attribute combination. For example, send Attributes of either  Artifact or Package, or the combination of Build + Stage + PipelineName.
    
    If you send more than one Attribute, priority is given in the following order and the low priory one is ignored. For example, if you send attribute for both packages and artifacts, then attribute of package is considered and the attribute of artifacts is ignored.
    
    1.packages
    2.artifcats
    3.buildNumber + stageName + pipelineName
    
    "packages": [{"name": "CorpSite-pkg1"}], 
    "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], 
    "buildNumber": "55", 
    "stageName": "test", 
    "pipelineName": "CorpSite-selenium", 
    } 
    
    Notes:
    - The pipelineName attribute value must be same as the value in the Orchestration pipeline field of the Pipeline [sn_devops_pipeline] table.
    - The stageName attribute value must be same as the value in the Orchestration stage field of the Step [sn_devops_step] table.
    Leistung:
    { 
    "name": "Performance Tests", 
    "url": "http://abc.com", 
    "startTime": "2020-06-30T18:12:31Z", 
    "finishTime": "2020-06-30T18:12:31Z", 
    "duration": 78.802, 
    "maximumVirtualUsers": "", 
    "throughput": "", 
    "maximumTime": "", 
    "minimumTime": "", 
    "averageTime": "", 
    "ninetyPercent": "", 
    "standardDeviation": "", 
     
    // Use Artifact OR Package OR Build + Stage + PipelineName Attributes 
    
    Send only one Attribute combination. For example, send Attributes of either  Artifact or Package, or the combination of Build + Stage + PipelineName.
    
    If you send more than one Attribute, priority is given in the following order and the low priory one is ignored. For example, if you send attribute for both packages and artifacts, then attribute of package is considered and the attribute of artifacts is ignored.
    
    1.packages
    2.artifcats
    3.buildNumber + stageName + pipelineName
    
    "packages": [{"name": "CorpSite-pkg1"}], 
    "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], 
    "buildNumber": "55", 
    "stageName": "test", 
    "pipelineName": "CorpSite-Performance", 
    } 
    
    Notes:
    - The pipelineName attribute value must be same as the value in the Orchestration pipeline field of the Pipeline [sn_devops_pipeline] table.
    - The stageName attribute value must be same as the value in the Orchestration stage field of the Step [sn_devops_step] table.