Estratégias de testes orientado a pirâmide de teste
Quando falamos em qualidade de software logo pensamos em testes funcionais e automatizados, mas na verdade qualidade de software vai muito além disso. A qualidade deve estar presente em todo ciclo de desenvolvimento, desde a escrita da história até o deploy em produção.
Uma história bem escrita, um refinamento bem-feito, cenário de testes claros, código limpo e eficiente, testes unitários, funcionais e automatizados, testes não funcionais, massa de testes e pipeline ajustada são alguns dos pontos que ajudam a garantir a qualidade do software. E aqui no Banco Pan não é diferente, trabalhamos forte quando o assunto é Qualidade.
Para garantir a qualidade em todos os níveis, além dos pontos citados acima, utilizamos a pirâmide de testes como referência:
E o que é pirâmide de teste?
Acho que todos já estão cansados de falar sobre pirâmide de teste, mas eu vejo como um pilar muito importante.
Além dos citados acima, tecnicamente conseguimos visualizar de maneira estrutural o desenvolvimento de software” Arquitetura”, mostrando em qual parte do desenvolvimento estamos, um exemplo visual disso é o MODELO em V:
Assim como na pirâmide, no desenvolvimento precisamos ter uma base forte, atuando fortemente nos testes unitários
Na primeira camada temos os Teste de Unidade/Unitário, que é o alicerce do Sistema, por isso é muito importante atuar com eficiência, e para fazer isso utilizamos: Validação de segurança, código estático e cobertura de condições mais chamado de Testes Unitários.
A próxima camada é chamada de Integração. Nesta fase em teoria temos os Serviços ou Micro Serviços finalizados e a partir disso podemos começar a validar integrações, tanto isoladas, quanto integradas.
Algumas estratégias utilizadas nesta camada são chamadas de Teste de Integração e Teste de Componente.
Essas estratégias ajudam a verificar como os componentes criados interagem entre si, também podemos utilizar Mocks para ajudar a testar isoladamente os componentes que precisam de integração com sistemas de parceiros.
E finalmente temos o End-to-end. Nesta etapa temos as estratégias mais focadas ao cliente “UI- Interface do Usuário”,
Nesta fase podemos contar com Testes de aceitação, Testes de regressivos, Teste de fumaça(smoke Test), Testes de sistema e Testes de performance.
Qual a finalidade de fato da pirâmide de testes?
É trazer de maneira objetiva qual a cobertura e a melhor estratégia de testes de acordo com cada etapa da pirâmide de teste, levando em consideração agilidade, complexidade e custo.
Page Break
Ferramentas e suas estratégias de acordo com a pirâmide de teste
O Jenkins gerencia essas ferramentas e suas execuções.
Testes unitário:
Atualmente utilizamos o SonarQube na esteira de HML, uma ferramenta que auxilia na validação dos testes unitários de acordo com as métricas pré-definidas e na verificação das vulnerabilidades de segurança.
Testes de componente e integração:
Com um Jenkins dedicado a Testes podemos controlar o ambiente de execução de teste, que conta com algumas integrações com o Jenkins de DEV e HML. O grande ganho é que esse mecanismo nos ajuda a fazer os testes de componentes e os testes integrados.
Para ajudar na criação dessas automações de testes, contamos com um framework criado na linguagem Java e com as bibliotecas: Selenium, restAssured, Cucumber, Junit 5, Appium server e WebDrives.
Testes de aceitação, Regressivos, Sistema e Teste de fumaça (Smoke Test).
Para as estratégias de Regressivos e Teste de fumaça (smoke Test) temos o framework citado acima.
Para exercer as estratégias de Testes de sistemas e Aceitação, contamos com ferramentas de gerenciamento de testes ( Jira, testlink, serviceNow, etc.). Que são ferramentas que auxiliam nas construções dos casos de testes e no gerenciamento das execuções. Com esses dados acabamos extraído informações de como está o escopo dos scripts automatizados.
Teste de Performance
Para executar um teste de performance, primeiramente você precisa ter o escopo definido, por exemplo:
Quantos usuário o sistema precisa suportar
Quais as funcionalidades mais importantes.
Qual é a capacidade de Hardware que queremos usar.
Com isso conseguimos definir um objetivo, montar um roteiro de teste que atinja esse escopo e identificar as áreas relacionadas (Cloud, Segurança, Infra, etc.)
A ferramenta mais utilizada é o Apache JMETER. Mas também contamos com
O Jmeter ajuda na criar, execução e analisar esses Dados.
Alguns exemplos de análises:
Sumario de Resultado
Sumário de resultado traz o tempo no qual a requisição demorou para concluir
Arvore de resultado
Arvore de resultado traz a visão do payload e do Response, aqui podemos visualizar também as validações incluídas nos cenários do teste.
Conclusão
Hoje mostramos como é prático conectar estratégias, métodos e ferramentas voltadas a teste de uma maneira prática.
Trazendo mais qualidade desde a criação do código até a concepção do produto.
Materializando de fato, o modelo shift-Left Testing sem burocracia.
Fazendo com que Qualidade não seja mais uma etapa e sim, uma diretriz.