---
sourceDocument: Xanadu IT Service Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/de-DE/xanadu/it-service-management

 Release :

    - xanadu

ft:locale :

    - de-DE

ft:publication_title :

    - Xanadu IT Service Management

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

# Fügen Sie Change-Anforderungen mithilfe der Test-API Testergebnisse hinzu

# Fügen Sie Change-Anforderungen mithilfe der Test-API Testergebnisse hinzu {#ariaid-title1}

* Freigeben Version: Xanadu
* 
* Aktualisiert 1. August 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 5 Minuten Lesedauer

Fügen Sie Change-Anforderungen von DevOps mithilfe der Testfunktionalität der API „DevOps -- POST /devops/tool/{capability}" Testergebnisse hinzu. Die API ist für alle Testtypen für verschiedene mit DevOps Change-Geschwindigkeitverbundene Tools verfügbar.
Weitere Informationen zur API finden Sie unter [DevOps - POST /devops/tool/{capability}](https://www.servicenow.com/docs/access?context=devops-api&version=xanadu&pubname=xanadu-api-reference&section=devops-POST-tool&ft:locale=en-US). Um die API in Azure DevOps, GitHub und Jenkins zu verwenden, müssen Sie das in den entsprechenden Abschnitten unten erwähnte Format verwenden.
Voraussetzungen

Erforderliche Rolle: sn_devops.admin

Sie müssen sicherstellen, dass der Testtyp, den Sie in der API verwenden möchten, als Testtyp in DevOps Change-Geschwindigkeit verfügbar ist und dem entsprechenden Orchestration-Tool zugeordnet ist.  
1. Navigieren zu DevOps -- Change-ArbeitsbereichAdministrationIntegrationenTesttypenan.

   Sie können auch die klassische UI-Navigation verwenden DevOpsIntegrationenTesttypenan.
2. Überprüfen Sie, ob der Testtyp in der Tabelle Testtypen verfügbar ist.

3. Wählen Sie bei anwenderdefinierten Testtypen Neu, und fügen Sie den Testtyp der Liste hinzu.  
   1. Geben Sie im Feld Testtyp einen Namen für Ihren Testtyp ein.
   2. Wählen Sie in der Liste Testkategorie die Kategorie Ihres Testtyps aus.
   3. Wählen Sie Speichern.
   {#test-api-tools__ol_cv3_m5v_kbc}
4. Navigieren zu DevOps -- Change-ArbeitsbereichAdministrationIntegrationenTesttyp-Zuordnungenan.

   Sie können auch die klassische UI-Navigation verwenden DevOpsIntegrationenTesttyp-Zuordnungenan.
5. Überprüfen Sie, ob der Testtyp Ihrem Orchestration-Tool zugeordnet ist.

6. Wenn die Zuordnung nicht verfügbar ist, wählen Sie Neu, und erstellen Sie die Zuordnung.  
   1. Wählen Sie in der Liste Testtyp den Testtyp aus, den Sie zuordnen möchten.
   2. Wählen Sie in der Liste Toolintegration Ihr Orchestration-Tool aus.
   3. Wählen Sie Speichern.
   {#test-api-tools__ol_vty_hvv_kbc}
{#test-api-tools__ol_drl_ksv_kbc}

## Azure DevOps {#test-api-tools__section_q33_xyk_kbc}

Verwenden Sie für Azure DevOps Pipelines das hier angegebene Format, um Change-Anforderungen für verschiedene Testtypen Testergebnisse hinzuzufügen.  
Format für URL-Suffix und Parameter:

    /api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<test_type>

* Der Parameter toolId muss eine gültige Tool-ID aus einem verbundenen und konfigurierten Tool in DevOps Change-Geschwindigkeitsein.
* Der Parameter testType muss eine Testtypzuordnung in DevOps Change-Geschwindigkeithaben.
{#test-api-tools__ul_yps_xxm_lbc}

In Bodymüssen Sie die Parameter basierend auf dem Testtyp übergeben.  
Hinweis:  
Verwenden Sie für die generische Verbindung Folgendes:

* Anwendername: devops.integration.user
* Passwort:\<devops.integration.user password\>
{#test-api-tools__ul_izs_yfg_mbc}

Pipelinekonfiguration für Leistungstests  
Beispielparameter für den Textkörper:

    {
      "name": "Perf. tests DEMO5",
      "duration": 0,
      "maximumVirtualUsers": 10,
      "throughput": "5/min",
      "maximumTime": 10000,
      "minimumTime": 5000,
      "averageTime": 7000,
      "ninetyPercent": 8000,
      "standardDeviation": 2,
    "startTime": "2023-12-14T23:31:31z",
      "finishTime": "2023-12-14T23:40:32z",
      "buildNumber": $(Build.BuildNumber),
      "stageName": "Test API Job",
      "pipelineName": "TEST-CI-PIPELINE"
    }

Zusammenfassung des Leistungstests in Ihrer Now-Instanz:

Testzusammenfassung, die an Ihre DevOps-Change-Anforderung angehängt ist:

Pipelinekonfiguration für andere Funktionstests und Komponententests  
Beispielparameter für den Textkörper:

    {
      "name":" Smoke Test summary",
       "duration":0.0,
       "passedTests":1,
       "failed Tests":1,
       "skipped Tests":1,
       "blockedTests":1,
       "total Tests":4,
      "startTime": "2023-12-14T23:31:31z",
      "finishTime": "2023-12-15T23:31:31z",
      "buildNumber": $(Build. BuildNumber),
     "stageName": "Test API Job",
      "pipelineName": "TEST-CI-PIPELINE"
    }

Testzusammenfassung, die an Ihre DevOps-Change-Anforderung angehängt ist:

## Azure DevOps YAML-Pipeline {#test-api-tools__section_qxh_x2l_kbc}

Beispielpipeline:  

    stages:
      - stage: BashScript
        jobs:
          - job: 'bash'
            steps:
            - script: echo Hello, world!
              displayName: 'BashScript'

            
      - stage: TestAPI
        dependsOn: BashScript
        jobs:
          - job: 'RESTTestAPI'
            # dependsOn: BashScript
            pool: server
            steps:
            - task: InvokeRESTAPI@1
              displayName: 'Invoke REST API: POST'
              inputs:
                connectionType: 'connectedServiceName'
                serviceConnection: 'v01 - generic connection'
                method: 'POST'
                body: |
                  {
                                "name": "Performance test summary kl2",
                                "duration": 0,
                                "maximumVirtualUsers": 10,
                                "throughput": "5/min",
                                "maximumTime": 10000,
                                "minimumTime": 5000,
                                "averageTime": 7000,
                                "ninetyPercent": 8000,
                                "standardDeviation": 2,
                                "startTime": "2023-12-14T23:31:31z",
                                "finishTime": "2023-12-14T23:40:32z",
                                "buildNumber": $(Build.BuildId),
                                "stageName": "TestAPI/RestTestAPI",
                                "pipelineName": "TESTYMLPipeline"
                              }
                urlSuffix: '/api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<test_type>'
                waitForCompletion: 'false'

              
Release-Pipeline

## GitHub {#test-api-tools__section_agm_wyk_kbc}

Verwenden Sie für GitHub Pipelines das hier angegebene Format, um Change-Anforderungen für verschiedene Testtypen Testergebnisse hinzuzufügen.

Pipelinekonfiguration für Leistungstests

Beispielpipeline:  

    name: Test API Call Perf

    on: 
      workflow_dispatch:

    jobs:
      post_api_call_perf:
        runs-on: ubuntu-latest
        
        steps:
        - name: Checkout Repository
          uses: actions/checkout@v2

        - name: post_api_call_perf
          run: |
            apiUrl="https://<your_instance>.service-now.com/api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolId>&testType=<performance_test_type>"
            requestBody='{"toolId": "<devops_ToolId>", "buildNumber": '${{ github.run_number }}' , "workflow": "Test API Call Perf", "repository": "<your_GitHub_repository>", "stageName":"post_api_call_perf","pipelineName":"Test API Call Perf", "testType": "Load", "buildNumber": '${{ github.run_number }}', "buildId": '${{ github.run_id }}' , "attemptNumber" : '${{ github.run_attempt }}', "name": "GitHub Test Summary - Performance 1.0","duration": 0.0,"maximumVirtualUsers": 10,"throughput": "5/min","maximumTime": 1000,"minimumTime": 5000,"averageTime": 7000,"startTime": "2023-12-14T23:31:31z","finishTime": "2023-12-14T23:31:31z","ninetyPercent": 8000, "standardDeviation": 2.0 }'
            auth="devops.integration.user:<password> in base64 encoded"
            authHeader="Basic $auth"
            response=$(curl -X POST -H "Content-Type: application/json" -H "Authorization: $authHeader" -d "$requestBody" $apiUrl)
            exitCode=$?
            
            if [ $exitCode -eq 0 ]; then
              echo "API call successful!"
              echo "Response: $response"
            else
              echo "API call failed!"
              echo "Response: $response"
              exit 1
            fi

Pipelinekonfiguration für andere Funktionstests und Komponententests  
Beispielpipeline:

    name: Test API Call

    on: 
      workflow_dispatch:

    jobs:
      post_api_call:
        runs-on: ubuntu-latest
        
        steps:
        - name: Checkout Repository
          uses: actions/checkout@v2

        - name: post_api_call
          run: |
            apiUrl="https://<your_instance>.service-now.com/api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<test_type>"
            requestBody='{"toolId": "<devops_ToolID>", "buildNumber": '${{ github.run_number }}' , "workflow": "Test API Call", "repository": "<your_GitHub_repository>", "stageName":"post_api_call","pipelineName":"TestAPICall", "testType": "Smoke", "buildNumber": '${{ github.run_number }}', "buildId": '${{ github.run_id }}' , "attemptNumber" : '${{ github.run_attempt }}', "testSummaries": [{"name": "GitHub Test Summary - smoke","passedTests": 1,"failedTests": 1,"skippedTests": 1,"ignoredTests": 0,"blockedTests": 1,"totalTests": 4,"startTime": "2023-12-14T23:31:31z","endTime": "2023-12-14T23:31:31z","duration": 0.0,"testType": "Smoke", "suites": []}] }'
            auth="devops.integration.user:<password> in base64 encoded"
            
            authHeader="Basic $auth"
            response=$(curl -X POST -H "Content-Type: application/json" -H "Authorization: $authHeader" -d "$requestBody" $apiUrl)
            exitCode=$?
            
            if [ $exitCode -eq 0 ]; then
              echo "API call successful!"
              echo "Response: $response"
            else
              echo "API call failed!"
              echo "Response: $response"
              exit 1
            fi

## Jenkins {#test-api-tools__section_pfd_5yk_kbc}

Verwenden Sie für Jenkins Pipelines das hier angegebene Format, um Change-Anforderungen für verschiedene Testtypen Testergebnisse hinzuzufügen.

Pipelinekonfiguration für Leistungstests  
Beispielpipeline:

    pipeline {
        agent any
        stages {
            stage('POST API Call') {
                steps {
                    script {
                        def apiUrl = 'https://<your_instance>.service-now.com/api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<performance_test_type>'
                        def requestBody = [
                            name: "Performance Load tests jenkins",
                            duration: 0.0,
                            maximumVirtualUsers: 10,
                            throughput: "6/min",
                            maximumTime: 1000,
                            minimumTime: 300,
                            averageTime: 700,
                            ninetyPercent: 600,
                            standardDeviation: 2.0,
                            startTime: "2023-12-14T23:31:31z",
                            finishTime: "2023-12-14T23:40:32z",
                            buildNumber: env.BUILD_NUMBER,
                            stageName: "POST API Call",
                            pipelineName: "KLPerformanceTestPipeline"
                        ]
                        def auth = "<password>" // devops.integration.user:<password> in base64 encoded.
                        def authHeader = "Basic " + auth
                        def response = httpRequest(
                            contentType: 'APPLICATION_JSON',
                            httpMode: 'POST',
                            requestBody: groovy.json.JsonOutput.toJson(requestBody),
                            url: apiUrl,
                            customHeaders: [[name: 'Authorization', value: authHeader]]
                        )

                        if (response.status == 200 || response.status == 201) {
                            echo "API call successful!"
                            echo "Response: ${response.content}"
                        } else {
                            error "API call failed with status ${response.status}"
                        }
                    }
                }
            }
        }
    }

Pipelinekonfiguration für andere Funktionstests und Komponententests  
Beispielpipeline:

    pipeline {
        agent any
        
        stages {
            stage('POST API Call') {
                steps {
                    script {
                        def apiUrl = 'https://<your_instance>.service-now.com/api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<test_type>'
                        def requestBody = [
                            name: "Smoke tests",
                            duration: 0.0,
                            passedTests: 1,
                            failedTests: 1,
                            skippedTests: 1,
                            blockedTests: 1,
                            totalTests: 4,
                            startTime: "2023-12-14T23:31:31z",
    	                    finishTime: "2023-12-15T23:31:31z",
                            buildNumber: env.BUILD_NUMBER,
                            stageName: "POST API Call",
                            pipelineName: "TestPipelineKL"
                        ]
                        
                        def auth = "<password>" // devops.integration.user:<password> in base64 encoded.
                        def authHeader = "Basic " + auth
                        
                        def response = httpRequest(
                            contentType: 'APPLICATION_JSON',
                            httpMode: 'POST',
                            requestBody: groovy.json.JsonOutput.toJson(requestBody),
                            url: apiUrl,
                            customHeaders: [[name: 'Authorization', value: authHeader]]
                        )
                        
                        if (response.status == 200 || response.status == 201) {
                            echo "API call successful!"
                            echo "Response: ${response.content}"
                        } else {
                            error "API call failed with status ${response.status}"
                        }
                    }
                }
            }
        }
    }

## Einschränkungen der Test-API {#test-api-tools__section_nym_dz4_kbc}

* Wartelogik wird nicht berücksichtigt.
* Wiederholungsszenarien können nicht behandelt werden.
{#test-api-tools__ul_g1r_2z4_kbc}

