"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como integrar kith Xray/Jira

Como integrar kith Xray/Jira

Publicado em 2024-11-08
Navegar:662

Neste artigo, demonstrarei uma maneira simples de integrar k6 com XRAY/Jira.

Algum tempo atrás, recebi a tarefa de escrever um teste de desempenho para uma API que deveria lidar com um grande número de solicitações. Por esse motivo, precisávamos de uma boa ferramenta que fosse mais rápida de usar e mais fácil para qualquer engenheiro de controle de qualidade contribuir.
Tendo usado o impacto de carga no passado, eu estava bastante familiarizado com o K6. Estas são as principais razões pelas quais escolhemos o k6 em vez de outras ferramentas de teste de desempenho:

  • Usa Javascript: A maioria dos QA/Desenvolvedores da minha equipe estavam familiarizados com javascript, portanto, não havia necessidade de aprender um novo idioma

  • Código aberto: Isso significa que nenhum pagamento é necessário para usar a ferramenta e a comunidade está ativa

  • CI/CD: Integrar k6 com nossos pipelines de CI/CD foi simples

Posso continuar com as vantagens de escolher o k6, mas escreverei um novo post para falar especificamente sobre isso.

Depois de concluir nossa estrutura de teste, queríamos ter os resultados dos testes no Jira. Como já estávamos usando o XRAY, precisávamos de uma solução para converter o relatório JSON k6 para o formato X-ray. Não consegui nenhuma solução que funcionasse com o nosso caso.

Alça K6Resumo()

K6 possui um recurso essencial que pode ser usado para obter todas as métricas. Essas opções são stdout, XML e JSON.

Para isso, só precisamos criar um script para pegar o objeto de dados da função handleSummary.

Abaixo está o script para converter o objeto de dados de k6 para um relatório simples no formato XRAY:

script k6-XRAY

Como configurar o script auxiliar do gerador para integração k6 e Xray

Clone o repositório no local desejado:
De preferência, crie uma pasta dentro do projeto principal.

Exemplo:
ajudante, src, relatório

Isso ajudará você a gerenciar bem as importações sem problemas:

Pré-requisitos

Antes de começar, certifique-se de ter o seguinte instalado em sua máquina:

  • Node.js
  • npm
  • k6

Uso

Se seus testes k6 estiverem organizados em grupos e cada título de grupo corresponder a um caso de teste no Xray, você poderá usar o script gerador para criar um arquivo JSON compatível com o Xray.

Exemplo

A imagem abaixo dos documentos do Xray mostra casos de teste com chaves CALC-01 e CALC-02.

How to integrate kith Xray/Jira

Em seu script de teste k6, você pode nomear os títulos dos grupos como CALC-01 e CALC-02. O script procurará esses nomes de grupos e atribuirá os resultados do teste aos respectivos casos de teste no Xray.

group('CALC-01', function() {
  // test code
});
group('CALC-02', function() {
  // test code
});

Saída

O script gera um arquivo JSON compatível com Xray, salvo no mesmo diretório do script.

Clonar o repositório

git clone https://github.com/skingori/k6-json-xray.git

Como configurar o script

Usaremos a função handleSummary fornecida por k6 e textSummary de nosso script Generator.js para gerar o arquivo JSON. A função handleSummary recebe um objeto de dados, que passamos para getSummary para modificá-lo em um formato compatível com Xray.

Leia mais sobre k6 HandleSummary aqui

Abra seu script de execução e adicione as seguintes linhas:

import { getSummary } from "./generator.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

Estou usando ./generator.js diretamente, pois estava na mesma pasta do meu script. Vamos supor que você estava usando o helper, deveria ser:

import { getSummary } from "./helper/generator.js";

Adicione o final do seu código, adicione a função handleSummary:

export function handleSummary(data) {
    return {
        stdout: textSummary(data, { indent: " ", enableColors: true }),
        "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2)
    };
}

Nossa função getSummary converterá o objeto de dados para o formato esperado de raio-x e salvará a saída no arquivo summary.json

Por que estamos usando textSummary?

Para ter uma saída impressa no console, precisamos importar textSummary da biblioteca de utilitários K6 JS

Mas isso pode não se aplicar a todos se você não precisar de nenhum relatório stdout, não precisará importar o textSummary

Exemplo
import http from 'k6/http';
import { sleep, group, check } from 'k6';
import { getSummary } from "./generator.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

export const options = {
    vus: 10,
    duration: '30s',
};

export default function() {
    group('CALC-01', function() {
        const resp = http.get('http://test.k6.io');
        check(resp, {
            'status is 200': (r) => r.status === 200,
        });
        sleep(1);
    });

    group('CALC-02', function() {
        const resp = http.get('http://test.k6.io');
        check(resp, {
            'status is 200': (r) => r.status === 200,
        });
        sleep(1);
    });
};

export function handleSummary(data) {
    return {
        stdout: textSummary(data, { indent: " ", enableColors: true }),
        "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2)
    };
}

Nota: você pode eliminar stdout: textSummary(data, { indent: " ", enableColors: true }), line se não quiser importar textSummary

handleSummary funciona por padrão e geralmente é chamado no final do ciclo de vida do teste.

Executando o script

Para executar o script, use o seguinte comando:

k6 run script.js -e TEST_PLAN_KEY="CALC-2345" -e TEST_EXEC_KEY="CALC-0009"

TEST_PLAN_KEY e TEST_EXEC_KEY são usados ​​para identificar o plano de teste e a execução do teste no Xray.

Leia mais sobre o plano de teste e as chaves de execução de teste aqui

Saída

O script acima produzirá o seguinte relatório em summary.json

{
  "info": {
    "summary": "K6 Test execution - Mon Sep 09 2024 21:20:16 GMT 0300 (EAT)",
    "description": "This is k6 test with maximum iteration duration of 4.95s, 198 passed requests and 0 failures on checks",
    "user": "k6-user",
    "startDate": "2024-09-09T18:20:16.000Z",
    "finishDate": "2024-09-09T18:20:16.000Z",
    "testPlanKey": "CALC-2345"
  },
  "testExecutionKey": "CALC-0009",
  "tests": [
    {
      "testKey": "CALC-01",
      "start": "2024-09-09T18:20:16.000Z",
      "finish": "2024-09-09T18:20:16.000Z",
      "comment": "Test execution passed",
      "status": "PASSED"
    },
    {
      "testKey": "CALC-02",
      "start": "2024-09-09T18:20:16.000Z",
      "finish": "2024-09-09T18:20:16.000Z",
      "comment": "Test execution passed",
      "status": "PASSED"
    }
  ]
}

Para obter mais detalhes sobre k6 e raios-X, consulte a documentação:
Documento K6
Documento RAIO X

Veja também - Como criar e gerenciar casos de teste com Xray e Jira um artigo legal escrito por Sérgio Freire

E como sempre, sinta-se à vontade para entrar em contato comigo!

LinkedIn
E-mail
Github

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/skingori/how-to-integrate-k6-with-xrayjira-5g1g?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3