Home  >  Plataformas

5 melhores práticas para garantir testes contínuos em DevOps

Testes contínuos não são fáceis de fazer, mas oferecem vantagens distintas para as equipes

Ryan Yackel*

26/11/2018 às 10h39

Foto: Shutterstock

O DevOps conta com uma série de práticas de integração contínua para facilitar a velocidade e a qualidade. O CI (continuous integration) exige que os desenvolvedores integrem frequentemente o código em um repositório compartilhado, iniciando, assim, compilações automatizadas. Isso permite que as equipes detectem e corrijam problemas antecipadamente. O IC também cria a necessidade de testes contínuos. Existem várias definições, mas podemos definir testes contínuos como "todas as atividades de teste realizadas durante a operação em um ambiente de integração contínua". Sem a integração contínua, nãos e pode começar a falar sobre como os testes contínuos desempenham um papel em um ambiente DevOps.

Os testes contínuos não são fáceis de fazer, mas oferecem vantagens distintas para as equipes:

- As atividades de teste se integram totalmente ao pipeline e facilitam o processo de desenvolvimento;
- Impulsiona a eficiência e a padronização;
- Garante aos testadores mais tempo para usar meios exploratórios para descobrir problemas ocultos;
- As equipes se sentem mais confiantes sobre a qualidade do software antes da sua liberação e implementação.

Embora os testes contínuos possam ser altamente eficientes, existem armadilhas, como a automação de testes que não deve feita e o não armazenamento de testes como código com um sistema de controle de versão (VCS). Embora o primeiro problema tenha mais a ver com a estratégia de teste, o último dificulta a manutenção de testes, a reutilização de testes e a pesquisa.

Podemos nos aprofundar em algumas práticas recomendadas para garantir o sucesso com testes contínuos:

1. Assegure-se de ter uma base completa para automatização de testes

Uma plataforma de CI sólida é fundamental. A G2 Crowd Grid for CI qualifica soluções com base nesses critérios:

- Os desenvolvedores podem gravar testes de unidade que são executados automaticamente;
- O sistema mostra quais testes passaram e falharam;
- O sistema deve executar todas as ações para criar uma compilação totalmente funcional do software após os testes terem passado.

DevOps

A maioria das equipes se esforçará para automatizar testes unitários, funcionais e de regressão. Os aplicativos de software de automação de testes lidam com a execução dos testes e relatórios automatizados. As equipes também precisarão de ferramentas para lidar com o planejamento (por exemplo, requisitos, histórias de usuários), controle de versão do código-fonte e gerenciamento de testes que integra os testes e suas as atividades de teste no empilhamento de DevOps para rastreabilidade e gerenciamento. Os usuários devem também poder correlacionar os testes diretamente ao código-fonte e aos sistemas de planejamento para melhorar a colaboração entre desenvolvedores e testadores.

2. Considere o uso de BDD (desenvolvimento orientado a comportamento)

O teste contínuo é uma mentalidade de automação inicial, o que significa que ele se alinha perfeitamente ao desenvolvimento orientado pelo comportamento, o BDD - behavior-driven development, que não é a única maneira de realizar testes contínuos, mas que incentiva a colaboração contínua entre proprietários de produtos (product owners), desenvolvedores e testadores. Os cenários se concentram em como o futuro deve se comportar para o usuário, reforçando a clareza das metas de desenvolvimento e o melhor alinhamento entre desenvolvedores e testadores. Os recursos geralmente são armazenados com código, o que facilita a integração com os sistemas de CI. Por fim, é mais fácil transformar os cenários do usuário em testes automatizados usando a sintaxe Gherkin, que é um recurso básico para ferramentas como o Cucumber.

3. Capacitar as equipes de Quality Assurance

O controle de qualidade (Quality Assurance, QA) pode criar, editar e executar a maioria das atividades de testes. No entanto, em DevOps, a influência do QA é mais do que isso. O controle de qualidade pode garantir que cada membro da equipe realize tarefas de testes contínuos durante todo o ciclo de vida da aplicação. Se os desenvolvedores não estiverem automatizando os testes no nível de unidade, o QA tem o direito de falar em nome da equipe. Ele também pode impor o processo, como impor que engenheiros de automação e analistas de teste armazenem seus testes com código. Os líderes de QA podem orientar suas equipes na estratégia de testes, o que inclui determinar a combinação certa de testes manuais e automatizados, bem como quando encontrar um equilíbrio entre os diferentes tipos de testes. Por fim, o departamento de QA sabe que uma equipe não pode testar todos os cenários e usará o melhor julgamento para dizer quando é hora de passar para a implantação.

4. Seja analítico sobre testes automatizados

É fácil dizer para se automatizar tudo, mas isso será um desperdício e também inadequado. Existem cenários distintos quando o teste manual é uma abordagem melhor. Uma regra básica é automatizar todos os testes em nível de unidade. É mais complicado escrever testes automatizados para testes funcionais, de desempenho e outras formas de testes, portanto, é melhor desenvolver um processo de eliminação ao decidir o que automatizar. Por exemplo, se 90% dos usuários tiverem o mesmo tipo de perfil de usuário, talvez você queira automatizar um teste para fazer logon com esse tipo de perfil, pois qualquer problema afetaria 90% dos usuários. O risco de falha no login para os 10% restantes não é elevado o suficiente para garantir um teste automatizado.

DevOps

Aproveite os testadores manuais e seu conhecimento sobre o aplicativo e sobre a base de usuários. Eles podem trabalhar em estreita colaboração com engenheiros de automação para ajudar a identificar as melhores áreas para testes automatizados. O teste exploratório também é importante para a estratégia de automação, pois pode-se coletar novas informações sobre cenários e possíveis problemas. Essa inteligência pode informar onde faz sentido automatizar os testes.

5. O teste contínuo vai além da automação de testes

A automação é essencial para que o processo de teste contínuo funcione, mas não se aplica apenas aos que estão em execução. O que é necessário é ter processos automatizados que informam os testadores quando há uma alteração de código no aplicativo. Notificações automatizadas quando o IC estiver concluído são necessários, assim como quando o próximo estado estiver pronto para teste. É importante ter o provisionamento automatizado de ambientes de teste para executar rapidamente os testes. Estender a automação para outras áreas da função QA reduz os erros, mantém as rodas em movimento e evita o esgotamento do processo, o chamado burnout.

Concluindo

Tem havido muitas conversas sobre a mudança cultural necessária para as equipes de QA à medida que elas passam para os testes contínuos. Os líderes devem entender e enfrentar esses desafios e promover esforços para manter todos na mesma página, ou seja, em sintonia. Enquanto isso, uma estratégia detalhada, com ampla reflexão sobre ferramentas, funções e processos para suportar testes contínuos ajuda a organizar e motivar os membros da equipe. Sem estrutura, a equipe de QA estará navegando sem leme e colocando em risco seus esforços mais ágeis e DevOps.

*Ryan Yackel é Gerente de produto da QASymphony

Tags