Ajouter des résultats des tests aux demandes de changement à l’aide de l’API de test

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 6 minutes de lecture
  • Ajoutez des résultats des tests aux DevOps demandes de changement à l’aide de l’aptitude de test de l’API DevOps : POST /devops/tool/{capability}. L’API est disponible pour tous les types de test pour divers outils connectés à Vélocité de changement DevOps.

    Pour en savoir plus sur l’API, reportez-vous à la section DevOps - POST /devops/tool/{capability}. Pour utiliser l’API dans Azure DevOps, GitHub et Jenkins, vous devez utiliser le format mentionné dans les sections respectives ci-dessous.

    Prérequis

    Rôle requis : sn_devops.admin

    Vous devez vous assurer que le type de test que vous souhaitez utiliser dans l’API est disponible en tant que type de test et Vélocité de changement DevOps qu’il est mappé avec l’outil d’orchestration respectif.

    1. Accédez à la Espace de travail de changement DevOps > Administration > Intégrations > Types de test.

      Vous pouvez également utiliser la navigation classique de l’interface utilisateur DevOps > Intégrations > Types de test.

    2. Vérifiez si le type de test est disponible dans la table Types de tests.

      Table des types de tests.

    3. Pour les types de test personnalisés, sélectionnez Nouveau et ajoutez le type de test à la liste.
      1. Dans le champ Type de test , entrez un nom pour votre type de test.
      2. Dans la liste Catégorie de test , sélectionnez la catégorie de votre type de test.
      3. Sélectionnez Enregistrer.
    4. Accédez à la Espace de travail de changement DevOps > Administration > Intégrations > Mappages de type de test.

      Vous pouvez également utiliser la navigation classique de l’interface utilisateur DevOps > Intégrations > Mappages de type de test.

    5. Vérifiez si le type de test est mappé à votre outil d’orchestration.

      Table de mappages de type de test.

    6. Si le mappage n’est pas disponible, sélectionnez Nouveau et créez le mappage.
      1. Dans la liste Type de test , sélectionnez le type de test que vous souhaitez mapper.
      2. Dans la liste Intégration d’outils , sélectionnez votre outil d’orchestration.
      3. Sélectionnez Enregistrer.

    Azure DevOps

    Pour Azure DevOps les pipelines, utilisez le format indiqué ici pour ajouter des résultats des tests aux demandes de changement pour différents types de tests.

    Format du suffixe et des paramètres de l’URL :
    /api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<test_type>
    • Le paramètre toolId doit être un ID d’outil valide provenant d’un outil connecté et configuré dans Vélocité de changement DevOps.
    • Le paramètre testType doit avoir un mappage de type de test dans Vélocité de changement DevOps.

    Dans le Body, vous devez transmettre les paramètres en fonction du type de test.

    Remarque :
    Pour la connexion générique, utilisez les éléments suivants :
    • Nom d’utilisateur : devops.integration.user
    • Mot de passe : <devops.integration.user password>

    Configuration du pipeline pour les tests de performances

    Exemples de paramètres pour le corps :
    {
      "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"
    }

    Exemple de configuration de pipeline Azure DevOps pour les tests de performance.

    Résumé du test de performances dans votre instance Now :

    Résumé du test de performance.

    Résumé du test joint à votre demande de changement DevOps :

    Résumé du test de demande de changement.

    Configuration du pipeline pour les autres tests fonctionnels et unitaires

    Exemples de paramètres pour le corps :
    {
      "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"
    }

    Exemple de configuration de pipeline Azure DevOps pour d’autres tests fonctionnels.

    Résumé du test joint à votre demande de changement DevOps :

    Résumé du test de demande de changement.

    Azure DevOps Pipeline YAML

    Exemple de 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'
    
              

    Pipeline YML Azure DevOps.

    Pipeline de mise en production

    Azure DevOps : pipeline de mise en production yml.

    GitHub

    Pour GitHub les pipelines, utilisez le format indiqué ici pour ajouter des résultats des tests aux demandes de changement pour différents types de tests.

    Configuration du pipeline pour les tests de performances

    Exemple de 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
    

    Exemple de configuration de pipeline GitHub pour les tests de performances.

    Configuration du pipeline pour les autres tests fonctionnels et unitaires

    Exemple de 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
    

    Exemple de configuration de pipeline GitHub pour d’autres tests fonctionnels.

    Jenkins

    Pour Jenkins les pipelines, utilisez le format indiqué ici pour ajouter des résultats des tests aux demandes de changement pour différents types de tests.

    Configuration du pipeline pour les tests de performances

    Exemple de 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}"
                        }
                    }
                }
            }
        }
    }

    Exemple de configuration de pipeline Jenkins pour les tests de performances.

    Configuration du pipeline pour les autres tests fonctionnels et unitaires

    Exemple de 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}"
                        }
                    }
                }
            }
        }
    }

    Exemple de configuration de pipeline Jenkins pour d’autres tests fonctionnels.

    Limites de l’API de test

    • La logique d’attente ne sera pas prise en charge.
    • Les scénarios réexécutés ne peuvent pas être gérés.