---
sourceDocument: Gestion des services IT Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/xanadu/it-service-management

 Release :

    - xanadu

ft:locale :

    - fr-FR

ft:publication_title :

    - Gestion des services IT Xanadu

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

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

# Ajouter des résultats des tests aux demandes de changement à l'aide de l'API de test {#ariaid-title1}

* Rversion finale: Xanadu
* 
* Mis à jour 1 août 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 6 minutes de lecture

Ajoutez des résultats des tests aux demandes de DevOps 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 tests des différents outils connectés à Changements de vélocité DevOps.
Pour en savoir plus sur l'API, reportez-vous à la section [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). 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 Changements de vélocité DevOps qu'il est mappé avec l'outil d'orchestration respectif.  
1. Accédez à la Espace de travail de changement DevOpsAdministrationIntégrationsTypes de tests.

   Vous pouvez également utiliser la navigation classique de l'interface utilisateur DevOpsIntégrationsTypes de test.
2. Vérifiez si le type de test est disponible dans la table 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.
   {#test-api-tools__ol_cv3_m5v_kbc}
4. Accédez à la Espace de travail de changement DevOpsAdministrationIntégrationsMappages de type de test.

   Vous pouvez également utiliser la navigation classique de l'interface utilisateur DevOpsIntégrationsMappages de type de test.
5. Vérifiez si le type de test est mappé à votre outil d'orchestration.

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.
   {#test-api-tools__ol_vty_hvv_kbc}
{#test-api-tools__ol_drl_ksv_kbc}

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

Pour Azure DevOps les pipelines, utilisez le format donné 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 Changements de vélocité DevOps.
* Le paramètre testType doit avoir un mappage de type test dans Changements de vélocité DevOps.
{#test-api-tools__ul_yps_xxm_lbc}

Dans le Body, vous devez transmettre les paramètres en fonction du type de test.  
Remarque :  
Pour la connexion générique, utilisez ce qui suit :

* Nom d'utilisateur : devops.integration.user
* Mot de passe : \<devops.integration.user password\>
{#test-api-tools__ul_izs_yfg_mbc}

Configuration du pipeline pour les tests de performance  
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"
    }

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

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

Configuration du pipeline pour d'autres tests fonctionnels et unitaires  
Exemples de paramètres pour le corps :

    {
      "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"
    }

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

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

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 de mise en production

## GitHub {#test-api-tools__section_agm_wyk_kbc}

Pour GitHub les pipelines, utilisez le format donné 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 performance

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

Configuration du pipeline pour d'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

## Jenkins {#test-api-tools__section_pfd_5yk_kbc}

Pour Jenkins les pipelines, utilisez le format donné 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 performance  
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}"
                        }
                    }
                }
            }
        }
    }

Configuration du pipeline pour d'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}"
                        }
                    }
                }
            }
        }
    }

## Limites de l'API de test {#test-api-tools__section_nym_dz4_kbc}

* La logique d'attente ne sera pas prise en charge.
* Impossible de gérer les scénarios de réexécution.
{#test-api-tools__ul_g1r_2z4_kbc}

