Dia da Automação, ou como construímos a camada de autotestes

Com que frequência, ao trabalhar em equipe, você encontra uma situação em que parte das tarefas de automação de teste entra no backlog e permanece no teste manual para sempre? Somos constantemente confrontados com esse problema, e as razões são sempre diferentes:

  • não teve tempo / não teve tempo suficiente e depois esqueceu;
  • experiência insuficiente;
  • a tarefa de automação acabou sendo muito grande, exigindo integrações de terceiros.

Inspirados pela idéia dos colegas da Avito , em meados de maio, Yaromudr e eu realizamos o primeiro dia da automação, o objetivo deste evento é automatizar testes onde, pelas razões acima, ainda não o fizemos.


Nele, reunimos todos os engenheiros de controle de qualidade interessados ​​e também preparamos com antecedência:

  • lista de pendências de tarefas;
  • regras de conduta;
  • concordou com uma pilha de tecnologia;
  • ferramentas preparadas;
  • ordenou os acessos necessários.

Para automação, foi escolhida uma camada de teste de integração de API. Cada tarefa no backlog continha:

  • um link para o terminal, bem como parâmetros de entrada e saída da solicitação restante no formato json;
  • a essência do teste, como e por que o verificamos.

No início do projeto, selecionamos a seguinte pilha para automação. Foi nela que preparamos o modelo do projeto, que preencheremos com testes automáticos:

  • Java8
  • Junit5
  • Primavera
  • Unirest

Um modelo de projeto de amostra pode ser encontrado aqui .

Deve-se notar que, durante muito tempo, havíamos preparado previamente uma ferramenta para gerar automaticamente dados de teste, sem isso não queríamos criar uma nova estrutura, porque já havia uma experiência ruim com os autotestes de integração em dados de teste estáticos, apenas uma camada abaixo. Em parte, conversamos sobre esse problema em nossa reunião de comunicação qualitativa do MAP .

As regras


As regras para os participantes do Dia da Automação eram o mais simples possível. Antes de iniciar o desenvolvimento, demonstramos uma estrutura de projeto pré-projetada e conduzimos um breve resumo. Ao desenvolver, os participantes tiveram que aderir a uma determinada estrutura do projeto.
De 10 a 19, ocasionalmente distraídos pelo almoço e jantar, os participantes escrevem testes em Java + JUnit5. A implementação da lógica para testes em Java foi organizada como chamadas de API usando a biblioteca Unirest.

E em nossa acolhedora sala de jogos, doze engenheiros de controle de qualidade e dois organizadores do evento Automation Day se reuniram.

Vale dizer que o nível de engenheiros de controle de qualidade era diferente, alguém conhecia toda a pilha, alguém nunca usara Spring em seus projetos, alguém usava apenas Tranquilidade em seus projetos e nunca tinha visto Unirest, alguns não tinham automatizado Teste de API e testou-os com as mãos.

Resultados


O que obtivemos por 8 horas de trabalho de desenvolvimento intensivo:

  • + 12 solicitações pull;
  • 12 tarefas fechadas do backlog;
  • + 14 autotestes de integração;
  • > 99% dos autotestes aprovados com êxito para cada lançamento;
  • 12 engenheiros de controle de qualidade que estão bem orientados no projeto.

Um mês depois


Quando fizemos as métricas de teste cerca de um mês depois, obtivemos indicadores muito interessantes:

  • + 30 solicitações pull;
  • 30 tarefas fechadas do backlog;
  • + 48 autotestes de integração;
  • Unirest substituído por Retrofit;
  • > 97% dos autotestes aprovados com êxito para cada lançamento.

Gostaria especialmente de observar o impacto positivo desses eventos na comunicação dentro da equipe de controle de qualidade, quando as pessoas se deparam com tarefas reais do produto e há pessoas próximas que podem ajudar e ensinar, isso sempre produz um efeito positivo. Um exemplo simples, um dos participantes que ilya_tad sugeriu usar o Retrofit em vez do Unirest, por vários motivos, ele realmente se mostrou uma ferramenta mais conveniente para nós. Mais recentemente, o mesmo participante realizou um segundo dia de automação, no qual todos também escreveram testes, mas já estavam usando o Retrofit. A propósito, no segundo dia da automação, substituímos completamente o Unirest pelo Retrofit, para nós as melhorias foram mínimas. Um modelo aproximado do projeto revisado pode ser encontrado aqui .

Comentários


Todos os participantes do Dia da Automação receberam camisetas de super-heróis recém-impressas. E sim, é claro, coletamos feedback dos participantes após o primeiro dia de automação. A resposta para a pergunta “Qual foi a mais valiosa e útil neste dia de automação?”:

  • envolver todos os participantes na cobertura de outra camada de autoteste da pirâmide de teste (descarregando a camada superior da interface do usuário de ponta a ponta de auto-teste);
  • a capacidade de se concentrar na tarefa sem se distrair com mais nada, bem como a inestimável experiência de orientação;
  • trabalho coletivo em tarefas específicas por um período de tempo claramente especificado, foco na solução de uma gama estreita e específica de tarefas e problemas;
  • uma idéia geral da estrutura local apareceu.

Também coletamos desejos dos participantes, não listaremos tudo, mas o mais popular foi realizar o Dia da Automação regularmente.

Conclusão


Obviamente, tentaremos realizar tais eventos regularmente. Faremos diferentes tópicos, tentaremos novas ferramentas.

O Dia da automação permite educar as pessoas sobre tarefas reais do produto, as pessoas começam a compartilhar experiências, tomar a iniciativa e se comunicar melhor. Com preparação e organização adequadas, esse evento permite formar relativamente rapidamente uma camada inteira de autotestes e preparar pessoas para o desenvolvimento adicional dessa camada.



Planejamos dedicar o terceiro dia da automação à gravação de testes de componentes para iOS usando a ferramenta EarlGrey.

Source: https://habr.com/ru/post/pt458546/


All Articles