DevOps Toolintegration testen
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.
- 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:
Sie können den Standardtesttyp ändern, indem Sie ändern [sn_devops.default_test_type] DevOps user. |
| Funktionell |
|
| Performance | Laden |
Testtypzuordnung
Die Testtypzuordnung verbindet den Testtyp und die Entität, die mit dem Tool DevOps getestet werden ( Modul)
Eine genaue Testtypzuordnung stellt sicher, dass der Testtyp in den Ergebnissen der Testzusammenfassung immer wie beabsichtigt angezeigt wird.
| Feld | Beschreibung | |
|---|---|---|
| Testtyp |
|
|
| ID der DevOps-Entität | Tabellenname | DevOps Tabellenname, der die mit den Testergebnissen verknüpfte Entität enthält (in der Nutzlast des Testberichts).
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. |
|
Transformieren einer Test-Rohnutzlast
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.
| Entscheidungstabelle | Zweck | Konfiguration |
|---|---|---|
| DevOps-Test-Subflow-Richtlinie | Um automatisch einen anwenderdefinierten Subflow aufzurufen, der die vom Tool empfangene Rohnutzlast transformiert. Entscheidungseingaben:
|
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:
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:
|
Erstellen Sie für jeden Testtyp in der Leistungstestphase eine Entscheidung, um den Testtyp festzulegen. Lasttest:
JUnit-Test:
|
Testzusammenfassungsergebnisse
- -Modul (Testzusammenfassungen und Leistungstestzusammenfassungen).
- DevOps-Change-Anforderung – Zugehörige Liste „Testergebnisse“.
- DevOps Pipeline-UI Qualitätskachel.
Erwartete Nutzlast der Standard-JSON-Benachrichtigungsfähigkeit – Test-Tool
{
"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.{
"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.