Este projeto é um estudo sobre o framework de teste de carga k6. Para este estudo está sendo utilizada a api REQ|RES.
Como descrito no próprio site da ferramenta o k6 é uma ferramenta de teste de carga de código aberto, gratuito e centrado no desenvolvedor e extensível. Usando o k6, você pode testar a confiabilidade e o desempenho de seus sistemas e detectar regressões e problemas de desempenho.
As formas de instalação do k6 podem ser encontradas na página oficial do framework clicando aqui.
Após clonar o projeto para sua máquina execute os seguintes comandos:
npm install
k6 run index.js
├── data # Massa de dados
├── tests
│ ├── options # Arquivos de configurações. Ex: Arquivo de variável de ambiente
│ ├── routes # Rotas utilizadas nos testes
│ ├── scenarios # Cenários de testes
| | ├── auth
| | ├── user
- Dentro da pasta routes criamos um arquivo chamado
NomeDaRota + Request.js, exemplo createUserRequest.js - Dentro deste arquivo criamos uma classe que irá conter nossa requisição
- Criamos então uma constante
dataque recebe o corpo da requisição, quando existente. Neste caso utilizamos a funçãoJSON.stringify()para converter nossos valores JS para uma string - Uma constante
paramsque recebe o cabeçalho, quando existente - uma variável res que recebe a resposta da nossa requisição
POST - Nossa requisição post é formada pela URL (que importamos do nosso arquivo commonOptions) + as constantes necessárias criadas nos passos 3 e 4
Obs: A URL da requisição foi colocada nesse arquivo commonOptions para facilitar a manutenção e não termos que alterar arquivo por arquivo em caso de necessidade.
import http from 'k6/http';
import { CommonOptions } from "../options/commonOptions.js";
export class CreateUserRequester {
createUserRequester(name, job) {
const data = JSON.stringify({
name: name,
job: job
});
const params = {
headers: { 'Content-Type': 'application/json' }
};
let res = http.post(CommonOptions.url + '/api/users', data, params);
return res;
}
}
- Posteriormente criamos um arquivo de teste dentro da pasta scenarios, arquivo este que executaremos ao rodar o teste
- Importamos e inicializamos nosso arquivo criada no passo 1
- Utilizamos a função
group()para agrupar nossos casos de teste - Criamos uma variável, no exemplo
resrepa receber o retorno da requisição - E com o comando
check()realizamos validações no retorno recebido no passo 5
import { check, group } from 'k6';
import { CreateUserRequester } from '../../routes/createUserRequest.js';
const createUserRequester = new CreateUserRequester();
export default function () {
group('user', () => {
group('create user successful', () => {
let res = createUserRequester.createUserRequester('Maria', 'QA');
check(res, {
'success login': (r) => r.status === 201,
'mandatory parameters': (r) => r.body.includes('id')
});
})
})
}
Leave a Reply