Home | Escopo | Processo | Design/Mockups | Configuração | Arquitetura | Gerência | Código | BD | Qualidade | Frontend | Backend |
---|
Descrição
Esta página visa apresentar os padrões de qualidade utilizados no projeto Globo Aplausos.
Sumário
Husky
O Husky é uma ferramenta utilizada para o gerenciamento de githooks, que são scripts personalizados que podem ser executados em diferentes etapas do ciclo de integração contínua do Git, como por exemplo antes de um commit ou antes de um push.
No projeto Globo Aplausos, utilizamos o Husky para validar o nome de branches, para que contenham o prefixo de feature ou fix, seguidas da estrutura de US-Número da User Story ou NOUS, em caso de branchs que desenvolvam alguma tarefa que não possui história. No backend, também validamos os testes unitários, que precisam passar para que seja possível dar o push na branch.
A validação de commits é realizada em ambos repositórios, na qual são rodados os scripts de lint e prettier, para que a formatação do código seja mantida durante o desenvolvimento.
Testes Unitários
A utilização de testes é algo essencial durante o desenvolvimento de software. No projeto Globo Aplausos, utilizamos testes unitários no Backend da aplicação para garantir a integridade de suas classes e módulos, além de garantir que as funcionalidades da API comportam-se de maneira esperada.
Para escrever os testes unitários em NestJS, utilizamos a ferramenta Jest, que nos possibilita criar os módulos, serviços e controlares da aplicação para que possamos testá-los diretamente, simulando chamadas a API.
Como escrever testes unitários?
Para escrever um teste unitário, primeiro deve-se identificar a classe que está sendo testada. O arquivo de testes deve seguir a nomenclatura da classe original, como por exemplo, para classe auth.service.ts
o nome do arquivo de testes será auth.service.spec.ts
, para que ele possa ser identificado pelo Jest. O arquivo também deve sempre estar próximo a classe que ele visa testar, mantendo-se sempre no mesmo nível de repositório.
Com o arquivo de testes criados, podemos começar a descrever nossos casos de teste, utilizando a seguinte estrutura:
describe('Nome da classe testada', () => {
- Declarar a classe a ser testada e suas dependências.
beforeEach(() => {
- Inicializa as classes.
});
describe('Caso de teste', () => {
it('Deve fazer tal coisa', async () => {
Testa alguma coisa...
});
});
});
Analisando a estrutura acima, o método beforeEach
será rodado antes de cada um dos casos de teste, como por exemplo inicializar as classes e dependências a serem testadas ou providenciar algum Mock.
Para declarar os casos de teste, seguimos a função de describe
, para criar os grupos que irão armazenar estes casos de testes, e a função it
para declarar um caso de teste.
Debugando um teste
Para debugar um teste, é necessário:
-
Instalar as extensões Jest e Jest Runner, para que seja possível executar rodar um teste individualmente.
-
Ativar o
debug auto attach toggle
do VSCode parasmart
oualways
. -
Executar o teste desejado, colocando breakpoints onde for necessário investigar.
Testes automatizados
Cypress é uma ferramenta de teste de software utilizada para realizar testes automatizados de interface de usuário e testes e2e em aplicações web. No projeto Globo Aplausos, utilizamos testes automatizados para validar o fluxo do usuário e as funcionalidades desenvolvidas no Backend e Frontend da aplicação.
Os testes automatizados do projeto Globo Aplausos podem ser encontrados dentro do repositório Globo Aplausos QA