Em quem ou no que você confia? Pense na sua relação com pessoas ou produtos e nos diga: você confia em alguém ou algo com o qual você não vivenciou experiências? Falando mais especificamente de produtos: você confia antes de realizar testes básicos? Colocando de outra forma: você compraria um carro se, ao virar a chave ou apertar o botão, ele não ligasse?
Por mais óbvias que soem as perguntas acima, elas nos levam a uma conclusão evidente: confiamos em um produto, serviço ou até uma marca depois que eles são minimamente testados. Está aí o porquê da importância dos testes na indústria, inclusive na de software: eles dizem se você pode ou não confiar no sistema que você usa.
De forma geral a confiança está diretamente ligada ao atendimento das nossas expectativas. Já discutimos aqui no blog como a automação é valiosa. Graças a ela, fazemos funcionar, no futuro, uma ação que só tínhamos em imaginação. Se imaginamos o mesmo sobre um produto ou serviço, se supomos que ele vai funcionar como esperamos, temos nossas expectativas atendidas. Consequentemente, vamos acreditar que ele tem qualidade.
É exatamente por isso que os testes são a principal ferramenta para a Engenharia de Qualidade na indústria de software. Graças a eles confiamos em um sistema e, assim, nos sentimos seguros em usá-lo.
Testes em todas as etapas do desenvolvimento
Da prova de conceito aos testes de homologação, todas as etapas do desenvolvimento de um sistema passam por rodadas e rodadas de testes. E conforme as aplicações vão ficando mais complexas, com a adoção de novas arquiteturas e tecnologias, a quantidade de testes aumenta em escala exponencial.
Para facilitar a compreensão de como se dão os testes num projeto de desenvolvimento de aplicações, vamos dividi-los em dois grandes grupos. No primeiro, “quem” realiza os testes. No segundo, “o quê” é testado.
Testes são realizados por dois tipos de “atores”: o humano ou um robô. Os testes manuais são executados por pessoas, normalmente um analista de QA – sigla do termo em inglês quality assurance, que significa “garantia de qualidade”. Quando há automação de testes, os robôs fazem o trabalho. Eles são uma espécie de sistema cuja função é executar passos que repetidamente testam a lógica e regras da aplicação que está em desenvolvimento. Obviamente que, nos tempos de hoje, já existem agentes de inteligência artificial orientados a realizar testes automatizados.
O grupo do “o quê” está sendo testado também pode ser dividido em dois: as partes e a relação entre elas. Nos testes unitários, verificamos o funcionamento de pedaços do sistema, muitas vezes partes bem pequenas: uma ou poucas funções, um fluxo de lógica. O objetivo aqui é isolar blocos da aplicação para ver se eles, separadamente, funcionam conforme o esperado.
Com cada parte checada, são realizados os testes de integração: combinamos vários blocos da aplicação e as testamos em grupo. Para tentar deixar mais clara a imagem, pense em uma matrioska: primeiro você testa as dimensões e o funcionamento de cada uma delas e depois você testa se elas se encaixam uma na outra até formar um único brinquedo. Para ele funcionar dentro da expectativa, cada boneca deve se encaixar perfeitamente uma à outra.
Metodologias e técnicas
Conforme já dissemos, os testes estão em todas as etapas da criação de um sistema. Eles são procedimentos tão fundamentais que há métodos de desenvolvimento orientados a eles, como o tradicional TDD – sigla para Test-Driven Development, ou desenvolvimento orientado a testes – e sua “evolução”, o BDD (desenvolvimento orientado a comportamento).
Também como já mencionamos, com as aplicações ficando mais complexas outras metodologias e técnicas de testagem foram surgindo. Uma bastante usada são os testes de contrato, fundamentais para microsserviços. Nesse escopo de verificação, testa-se a interação entre os diversos microsserviços usados para fazer toda a aplicação funcionar.
Não só as regras e funcionalidades da aplicação são testadas, outras dimensões também precisam funcionar como esperado para garantirmos sua qualidade. Uma bem importante é a disponibilidade, a garantia de que ela vai funcionar em todos os momentos necessários.
Uma abordagem para se testar a disponibilidade de uma aplicação é a engenharia do caos. Ela foi concebida para realizar a migração de um sistema extremamente complexo, o da Netflix. Em 2010 a empresa decidiu transferir seu serviço de streaming para a infraestrutura da AWS, uma operação que poderia afetar severamente a experiência dos seus clientes. Para realizar uma migração suave e garantir a qualidade da experiência para os seus usuários, a equipe da Netflix criou o “Macaco do Caos”, um programa que propositalmente e aleatoriamente desligava parte da sua infraestrutura, “forçando o caos” e, consequentemente, testando a resiliência e disponibilidade do seu sistema.
Essas e outras metodologias contemporâneas de testes estão entre as principais especialidades da Inmetrics: por meio de práticas de QAOps, eliminamos os limites entre teste, desenvolvimento e operações para aumentar velocidade de implantação, fortalecer seu negócio, reduzir o tempo de lançamento no mercado e assegurar o maior ROI possível. Não é à toa que somos uma empresa líder em Continuous Testing no ISG Provider Lens™ Next-Gen ADM Services Brazil 2022.
Se as operações da sua empresa crescem em volume e complexidade e você quer garantir o controle de qualidade das suas aplicações de uma maneira integrada, clique aqui e fale conosco! Nosso time está pronto para acelerar a sua Transformação, garantindo a qualidade em cada etapa da sua jornada.


