Gerando relatórios de saída com K6🏋️‍♂️
Tags: testing, performance, k6, qa
Published: 2023-05-24 00:41:06

O processo de testes de performance compreende várias etapas, e uma delas é a geração de artefatos que sirvam a diferentes propósitos, com destaque para a comprovação dos resultados obtidos.

Os relatórios também desempenham um papel fundamental ao fornecer dados para alimentar dashboards ou ferramentas de monitoramento.

Neste tutorial, exploraremos a geração de relatórios de teste em diversos formatos utilizando o k6.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ilnobumlyena8guaglnx.png)

## Mão na massa👩‍💻

### Pré-requisitos📑
- [K6 instalado](https://k6.io/docs/get-started/installation/)

###Script de exemplo📚
Nesse tutorial utilizaremos um script de exemplo, que faz uma requisição a API do K6 para listagem de crocodilos cadastrados:

```
import http from "k6/http";

export default function() {
      http.get("https://test-api.k6.io/public/crocodiles");
}
```

### Gerando relatório em formato HTML📋

O processo de geração de artefatos de saída em formato HTML é simples, conforme abordado no curso de teste de performance com K6, podemos utilizar a o modulo remoto `k6-reporter`.

Precisamos apenas realizar alguns ajustes no script de exemplo para que o modulo seja importado na fase de inicialização, e o relatório seja gerado na fase de desmontagem.

Após os ajustes, nosso script devera ficar da seguinte forma: 

```
import http from "k6/http";
import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";

export default function() {
      http.get("https://test-api.k6.io/public/crocodiles");
}

export function handleSummary(data) {
  return {
    "relatorio.html": htmlReport(data),
  };
}
```

> para mais detalhes sobre o modulo, você pode estar consultando a seguinte documentação: [k6-report-doc](https://github.com/benc-uk/k6-reporter)

### Gerando relatório em formato JSON 📋

A geração de relatórios em formato JSON é um processo bastante simples. Existem algumas maneiras de realizar essa tarefa, uma delas é modificar o nosso script de exemplo de modo que o relatório com os dados dos testes seja gerado durante a fase de desmontagem.

Para geração de relatório em formato JSON nosso script ficara da seguinte forma:

```
import http from "k6/http";

export default function() {
      http.get("https://test-api.k6.io/public/crocodiles");
}

export function handleSummary(data) {
  return {
    'relatorio.json': JSON.stringify(data),
  };
}
```

Ao executar nosso script com o comando `k6 run script.js` teremos como saída um relatório  formato JSON.

Outra forma possível de gerar um relatório é informar via CLI, o formato de saída esperado.

Para gerar um relatório em formato JSON, basta utilizar o seguinte comando:

```
k6 run --out json=resultado.json script.js
```

> O flag `--out` informa para o K6 que queremos gerar um relatório de saída após execução, seguido do formato `json` e do nome do arquivo de saída `resultado.json`

### Gerando relatório em formato CSV 📋

Para gerar um relatório em formato CSV, o processo é bastante semelhante ao abordado anteriormente na geração de relatórios em formato JSON via CLI. O comando necessário para essa tarefa é o seguinte:

```
k6 run --out csv=resultado.csv script.js
```

> Observem que continuamos com a flag `--out`, no entanto nossa saída agora é em formato CSV.

### Gerando relatório em formato XML 📋

Quando se trata de execução via pipeline, um dos formatos de relatório mais comuns solicitados é o XML.

Para gerar um relatório em formato XML, é necessário utilizar um módulo remoto do K6 da `jslib.k6`.

Após os ajustes, nosso script de exemplo ficara da seguinte forma:
```
import http from "k6/http";
import { jUnit } from 'https://jslib.k6.io/k6-summary/0.0.2/index.js';


export default function() {
      http.get("https://test-api.k6.io/public/crocodiles");
}

export function handleSummary(data) {
    return {
      'relatorio.xml': jUnit(data),
    };
}
```
Após executamos o script acima, teremos como saída um relatório de nome relatorio.xml.

## Conclusão💖

Podemos perceber que o K6 oferece a possibilidade de gerar relatórios de execução em vários formatos diferentes, e temos a opção de especificar a geração desses relatórios por meio da CLI usando a flag `--out`.😄

Quanto aos módulos externos, como o `Junit XML` e o `K6 HTML Report`, é apenas uma questão de tempo até que esses módulos se tornem recursos nativos da ferramenta.😎

Gostou do conteúdo e quer saber mais sobre testes de performance com K6? Então não deixe de conferir meu curso na Udemy:

- [Teste de performance com K6](https://www.udemy.com/course/teste-de-performance-com-k6/?referralCode=95CCD8BC9F22A2A96BDA) ✨