Renan Elias
OPANehtech
Published in
4 min readOct 13, 2022

--

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:

Pirâmide de Teste

E o que é pirâmide de teste?

A pirâmide de testes é uma ilustração que permite visualizar de forma simples os tipos de testes, seus níveis, velocidades, complexidades e “custos”.

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.

--

--