Adicionar resultados de testes a solicitações de mudança usando a API de teste

  • Versão de lançamento: Australia
  • Atualizado 12 de mar. de 2026
  • 5 min. de leitura
  • Adicione resultados de testes a DevOps solicitações de mudança usando a capacidade de teste da API DevOps - POST /devops/tool/{capability}. A API está disponível para todos os tipos de teste de várias ferramentas conectadas a Velocidade de mudança para DevOps.

    Para mais informações sobre a API, consulte DevOps - POST /devops/tool/{capability}. Para usar a API em Azure DevOps, GitHub e Jenkins, use o formato mencionado nas respectivas seções abaixo.

    Pré-requisitos

    Função necessária: sn_devops.admin

    O tipo de teste que quer usar na API deve estar disponível como um tipo de teste em Velocidade de mudança para DevOps e deve ser mapeado com a respectiva ferramenta de orquestração.

    1. Navegar até Espaço de mudança de DevOps > Administração > Integrações > Tipos de teste.

      Você também pode usar a navegação de IU clássica DevOps > Integrações > Tipos de Teste.

    2. Verifique se o tipo de teste está disponível na tabela Tipos de teste.

      Testar tabela de teste.

    3. Para tipos de teste personalizados, selecione Novo e adicione o tipo de teste à lista.
      1. No campo Tipo de teste, insira um nome para o tipo de teste.
      2. Na lista Categoria de teste, selecione a categoria do tipo de teste.
      3. Selecione Save (Salvar).
    4. Navegar até Espaço de mudança de DevOps > Administração > Integrações > Mapeamentos de tipo de teste.

      Você também pode usar a navegação de IU clássica DevOps > Integrações > Mapeamentos de tipo de teste.

    5. Verifique se o tipo de teste está mapeado para a ferramenta de orquestração.

      Testar Mapeamentos de tipo de teste.

    6. Se o mapeamento não estiver disponível, selecione Novo e crie o mapeamento.
      1. Na lista Tipo de teste, selecione o tipo de teste que você deseja mapear.
      2. Na lista Integração de ferramentas, selecione a ferramenta de orquestração.
      3. Selecione Salvar.

    Azure DevOps

    Para pipelines do Azure DevOps, use o formato fornecido aqui para adicionar resultados de testes às solicitações de mudança de tipos de testes diferentes.

    Formato para sufixo de URL e parâmetros:
    /api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolID>&testType=<test_type>
    • O parâmetro toolId deve ser um ID de ferramenta válido de uma ferramenta conectada e configurada em Velocidade de mudança para DevOps.
    • O parâmetro testType deve ter um mapeamento de tipo de teste em Velocidade de mudança para DevOps.

    Dentro do Body, você deve passar os parâmetros com base no tipo de teste.

    Nota:
    Para a conexão genérica, use o seguinte:
    • nome de usuário: devops.integration.user
    • senha: <devops.integration.user password>

    Configuração de pipeline para testes de desempenho

    Parâmetros de amostra para o corpo:
    {
      "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"
    }

    Exemplo de configuração de pipeline do Azure DevOps para testes de desempenho.

    Resumo do teste de desempenho na instância do Now:

    Resumo do teste de desempenho.

    Resumo de teste anexado à solicitação de mudança do DevOps:

    Resumo de teste da solicitação de mudança.

    Configuração de pipeline para outros testes funcionais e de unidade

    Parâmetros de amostra para o corpo:
    {
      "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"
    }

    Exemplo de configuração de pipeline do Azure DevOps para outros testes funcionais.

    Resumo de teste anexado à solicitação de mudança do DevOps:

    Resumo de teste da solicitação de mudança.

    Azure DevOps Pipeline YAML

    Amostra 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 do Azure DevOps.

    Pipeline de versão

    Pipeline de versão yml do Azure DevOps.

    GitHub

    Para pipelines do GitHub, use o formato fornecido aqui para adicionar resultados de testes às solicitações de mudança de tipos de testes diferentes.

    Configuração de pipeline para testes de desempenho

    Amostra 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
    

    Exemplo de configuração de pipeline do GitHub para testes de desempenho.

    Configuração de pipeline para outros testes funcionais e de unidade

    Amostra 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
    

    Exemplo de configuração de pipeline do GitHub para outros testes funcionais.

    Jenkins

    Para pipelines do Jenkins, use o formato fornecido aqui para adicionar resultados de testes às solicitações de mudança de tipos de testes diferentes.

    Configuração de pipeline para testes de desempenho

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

    Exemplo de configuração de pipeline do Jenkins para testes de desempenho.

    Configuração de pipeline para outros testes funcionais e de unidade

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

    Exemplo de configuração de pipeline do Jenkins para outros testes funcionais.

    Limitações da API de teste

    • A lógica de espera não será atendida.
    • Não é possível processar cenários de reexecução.