Adicione resultados de teste a solicitações de mudança usando a API de teste

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 5 min. de leitura
  • Adicionar resultados de teste a. DevOps Solicitações de mudança usando a capacidade de teste da API DevOps - POST /devops/tool/ A API está disponível para todos os tipos de teste para várias ferramentas conectadas a. Velocidade de mudança para DevOps.

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

    Pré-requisitos

    Função necessária: sn_devops.admin

    Certifique-se de que o tipo de teste que você deseja usar na API esteja disponível como um tipo de teste no Velocidade de mudança para DevOps e que ele é 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.

      Tabela Tipos de teste.

    3. Para tipos de teste personalizados, selecione Novo e adicione o tipo de teste à lista.
      1. Em Tipo de teste , insira um nome para o seu tipo de teste.
      2. Em Categoria de teste , selecione a categoria do seu 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 sua ferramenta de Orquestração.

      Tabela de mapeamentos de tipo de teste.

    6. Se o mapeamento não estiver disponível, selecione Novo e criar o mapeamento.
      1. Em Tipo de teste , selecione o tipo de teste que você deseja mapear.
      2. Em Integração da ferramenta , selecione sua ferramenta de orquestração.
      3. Selecione Save (Salvar).

    Azure DevOps

    Para Azure DevOps pipelines, use o formato fornecido aqui para adicionar resultados de teste a solicitações de mudança para vários tipos de teste.

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

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

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

    Resumo do teste de desempenho em sua instância do Now :

    Resumo do teste de desempenho.

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

    Resumo do teste de 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"
    }

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

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

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

    Azure DevOps Pipeline YAML

    Pipeline de amostra:

    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

    yml do pipeline de lançamento do Azure DevOps.

    GitHub

    Para GitHub pipelines, use o formato fornecido aqui para adicionar resultados de teste a solicitações de mudança para vários tipos de teste.

    Configuração de pipeline para testes de desempenho

    Pipeline de amostra:

    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
    

    Configuração de pipeline do GitHub para testes de desempenho.

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

    Pipeline de amostra:
    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
    

    Configuração de pipeline do GitHub de amostra para outros testes funcionais.

    Jenkins

    Para Jenkins pipelines, use o formato fornecido aqui para adicionar resultados de teste a solicitações de mudança para vários tipos de teste.

    Configuração de pipeline para testes de desempenho

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

    Configuração de pipeline Jenkins de amostra para testes de desempenho.

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

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

    Configuração de pipeline Jenkins de amostra para outros testes funcionais.

    Limitações da API de teste

    • A lógica de espera não será resolvida.
    • Cenários de nova execução não podem ser manipulados.