O Que É Mock? Entenda Objetos Simulados em Testes
Saiba o que é mock em testes de software, como objetos simulados isolam dependências externas e como aplicá-los com eficiência no desenvolvimento.
Ao programar a rotina de checkout de um aplicativo de entregas, um engenheiro precisa verificar se o cálculo dos descontos e a emissão do pedido funcionam com perfeição. Contudo, executar esse teste não deve significar enviar uma cobrança real a um banco a cada segundo. Para viabilizar verificações automatizadas rápidas e independentes de serviços externos, a equipe recorre ao mock.
O que é mock?
No contexto de testes de software, um mock é um objeto programado que simula o comportamento de um componente real de forma controlada. Ele reproduz as respostas esperadas de bancos de dados, serviços de terceiros, filas de mensageria ou módulos complexos do sistema, permitindo que o trecho de código sob análise seja testado de maneira isolada.
Além de fornecer dados pré-definidos, o mock se destaca por inspecionar o comportamento da aplicação. Ele é capaz de registrar e validar se um método específico foi acionado, quantas vezes a chamada ocorreu e quais parâmetros exatos foram enviados, assegurando que o código execute estritamente as instruções previstas.
Como funcionam os test doubles: mocks, stubs e fakes
Na engenharia de software, o termo "mock" é frequentemente utilizado de forma genérica para se referir a qualquer dublê de teste (test double). No entanto, existem distinções técnicas importantes entre as abordagens mais comuns:
- Dummy: Objetos simples passados apenas para preencher parâmetros obrigatórios em assinaturas de funções, sem lógica interna ou interação real.
- Stub: Fornece respostas estáticas e prontas para as requisições feitas durante o teste, sem verificar como ou quantas vezes a chamada foi realizada.
- Mock: Focado na verificação de comportamento. O mock registra interações e falha o teste caso o método esperado não tenha sido invocado com os argumentos corretos.
- Fake: Implementação simplificada, funcional e utilizável que economiza recursos, como um banco de dados leve rodando inteiramente na memória RAM.
Aplicações práticas em engenharia de software no Brasil
Nas empresas brasileiras de base tecnológica, o uso de mocks é indispensável para construir esteiras de desenvolvimento ágeis e econômicas. Em plataformas de crédito e financiamento, por exemplo, o fluxo de aprovação de empréstimos consulta bureau de crédito como Serasa e SPC. Executar consultas reais a cada execução da bateria de testes geraria custos exorbitantes por requisição e tornaria o processo de validação extremamente lento.
Com a criação de mocks, a equipe simula instantaneamente respostas de pontuação alta, média ou histórico restritivo, garantindo que o algoritmo de concessão de crédito se comporte de acordo com o planejado. O mesmo princípio se aplica a serviços de mensageria de SMS e validação cadastral junto à Receita Federal, permitindo testes exaustivos sem custos adicionais de infraestrutura.
Boas práticas e armadilhas comuns no uso de mocks
O uso de mocks é essencial para viabilizar o teste unitário de alto desempenho e sustentar práticas como o TDD (Test-Driven Development). Quando bem empregados, os mocks elevam a cobertura de testes ao permitir a simulação de cenários raros e difíceis de reproduzir no mundo real, como quedas de conexão ou falhas de servidor.
Entretanto, a dependência excessiva de objetos simulados pode criar uma falsa sensação de estabilidade. Se uma equipe simula todas as interfaces do sistema, os testes unitários podem passar com êxito mesmo que a integração real entre os módulos esteja corrompida. Por essa razão, os mocks devem ser combinados com o teste de integração, garantindo que a comunicação autêntica com serviços e bancos de dados também seja validada periodicamente.
Aplicados com equilíbrio e critério técnico, os mocks aceleram o ciclo de desenvolvimento, reduzem despesas operacionais de teste e conferem robustez à evolução contínua das aplicações.
Tags
- #testes-de-software
- #tdd
- #qualidade-de-software
- #engenharia-de-software