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

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 5 Minuten Lesedauer
  • Fügen Sie Testergebnisse zu hinzu DevOps Change-Anforderungen mit der Testfunktion der DevOps-API – POST /devops/Tool/{Capability}. Die API ist für alle Testtypen für verschiedene mit verbundene Tools verfügbar DevOps Change-Geschwindigkeit.

    Weitere Informationen zur API finden Sie unter DevOps - POST /devops/tool/{capability}. Zur Verwendung der API in Azure DevOps, GitHub und Jenkins 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 verfügbar ist DevOps Change-Geschwindigkeit Und dass es dem jeweiligen Orchestration-Tool zugeordnet ist.

    1. Navigieren zu DevOps – Change-Arbeitsbereich > Administration > Integrationen > Testtypenan.

      Sie können auch die klassische UI-Navigation verwenden DevOps > Integrationen > Testtypenan.

    2. Überprüfen Sie, ob der Testtyp in der Tabelle „Testtypen“ verfügbar ist.

      Testtyptabelle.

    3. Wählen Sie für anwenderdefinierte Testtypen aus Neu Und fügen Sie der Liste den Testtyp hinzu.
      1. In Testtyp Geben Sie einen Namen für Ihren Testtyp ein.
      2. Von Testkategorie Wählen Sie die Kategorie Ihres Testtyps aus.
      3. Wählen Sie Speichern.
    4. Navigieren zu DevOps – Change-Arbeitsbereich > Administration > Integrationen > Testtyp-Zuordnungenan.

      Sie können auch die klassische UI-Navigation verwenden DevOps > Integrationen > Testtyp-Zuordnungenan.

    5. Überprüfen Sie, ob der Testtyp Ihrem Orchestration-Tool zugeordnet ist.

      Testtypzuordnungstabelle.

    6. Wenn die Zuordnung nicht verfügbar ist, wählen Sie aus Neu Und erstellen Sie die Zuordnung.
      1. Von Testtyp Wählen Sie den Testtyp aus, den Sie zuordnen möchten.
      2. Von Toolintegration Wählen Sie Ihr Orchestration-Tool aus.
      3. Wählen Sie Speichern.

    Azure DevOps

    Für Azure DevOps Pipelines verwenden Sie das hier angegebene Format, um Testergebnisse zu Change-Anforderungen für verschiedene Testtypen hinzuzufügen.

    Format für URL-Suffix und Parameter:
    /api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<test_type>
    • Der Parameter toolIdMuss eine gültige Tool-ID aus einem verbundenen und konfigurierten Tool in sein DevOps Change-Geschwindigkeit.
    • Der Parameter testTypeMuss eine Testtypzuordnung in haben DevOps Change-Geschwindigkeit.

    Innerhalb von Body, Sie müssen 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>

    Pipeline-Konfiguration 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"
    }

    Beispiel für eine Azure DevOps-Pipeline-Konfiguration für Leistungstests.

    Leistungstestzusammenfassung in Ihrer Now-Instanz :

    Leistungstestzusammenfassung.

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

    Zusammenfassung des Change-Anforderungstests.

    Pipeline-Konfiguration für andere Funktions- und Einheitentests

    Beispielparameter für den Textkörper:
    {
      "name":" Smoke Test summary",
       "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": $(Build. BuildNumber),
     "stageName": "Test API Job",
      "pipelineName": "TEST-CI-PIPELINE"
    }

    Beispiel für eine Azure DevOps-Pipeline-Konfiguration für andere Funktionstests.

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

    Zusammenfassung des Change-Anforderungstests.

    Azure DevOps YAML-Pipeline

    Beispiel-Pipeline:

    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'
    
              

    Azure DevOps-yml-Pipeline.

    Release-Pipeline

    Azure DevOps-Release-Pipeline yml.

    GitHub

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

    Pipeline-Konfiguration für Leistungstests

    Beispiel-Pipeline:

    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
    

    Beispiel für die GitHub-Pipeline-Konfiguration für Leistungstests.

    Pipeline-Konfiguration für andere Funktions- und Einheitentests

    Beispiel-Pipeline:
    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
    

    Beispiel für die GitHub-Pipeline-Konfiguration für andere Funktionstests.

    Jenkins

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

    Pipeline-Konfiguration für Leistungstests

    Beispiel-Pipeline:
    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}"
                        }
                    }
                }
            }
        }
    }

    Beispiel für die Jenkins-Pipeline-Konfiguration für Leistungstests.

    Pipeline-Konfiguration für andere Funktions- und Einheitentests

    Beispiel-Pipeline:
    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}"
                        }
                    }
                }
            }
        }
    }

    Beispiel für die Jenkins-Pipeline-Konfiguration für andere Funktionstests.

    Einschränkungen der Test-API

    • Wartelogik wird nicht berücksichtigt.
    • Szenarien der erneuten Ausführung können nicht verarbeitet werden.