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.
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
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:
Antes de começar, certifique-se de ter o seguinte instalado em sua máquina:
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.
A imagem abaixo dos documentos do Xray mostra casos de teste com chaves CALC-01 e CALC-02.
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 });
O script gera um arquivo JSON compatível com Xray, salvo no mesmo diretório do script.
git clone https://github.com/skingori/k6-json-xray.git
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
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.
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
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
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