Monkey Tests VS Gorilla Tests
Monkey Tests e Gorilla Tests são técnicas de teste de software que se diferenciam em termos de abordagem, objetivo e execução, embora pelos seus nomes se possa achar que existe alguma semelhança ou associação.
Monkey Tests
O Monkey Testing envolve a execução de testes de uma maneira completamente aleatória, sem qualquer plano pré-estabelecido ou conhecimento específico do funcionamento interno do software.
A ideia é simular o comportamento de um "macaco" operando o sistema de forma desestruturada.
Características Principais:
- Aleatoriedade: as entradas e interacções são completamente aleatórias. 
- Automação: muitas vezes são automatizados, principalmente em aplicações móveis e web, utilizando ferramentas específicas para gerar interacções aleatórias. 
- Objetivo: identificar problemas, quebras de funcionamento e comportamentos anómalos, que acontecem devido a entradas inesperadas ou sequências de acções não planeadas. 
- Conhecimento do tester: não requer conhecimento profundo do sistema ou do domínio de aplicação. 
- Cobertura: visa cobrir uma ampla lista de possíveis interações e entradas aleatórias. 
Exemplo
Utilizar uma ferramenta como o MonkeyRunner para simular toques aleatórios numa aplicação móvel e verificar se a aplicação falha ou apresenta comportamento anómalo.
Gorilla Tests
O Gorilla Testing é uma técnica focada e intensiva, em que uma única funcionalidade ou módulo do sistema é testado repetida e exaustivamente. O objetivo é verificar a robustez e a estabilidade da funcionalidade sob condições de uso intenso e repetitivo.
Características Principais:
- Foco: foca numa funcionalidade ou módulo específico. 
- Repetitividade: executa repetidamente a mesma acção ou conjunto de ações. 
- Objetivo: garantir a robustez e a estabilidade da funcionalidade sob condições de utilização extrema. 
- Conhecimento do tester: requer um bom entendimento da funcionalidade específica que vai ser testada. 
- Cobertura: visa cobrir todos os aspectos de uma funcionalidade específica através da utilização intensiva. 
Exemplo
Testar repetidamente uma funcionalidade de processamento de pagamentos de uma aplicação de e-commerce, realizando a mesma sequência de operações de pagamento de forma sequencial e exaustiva, para verificar a robustez do sistema.
Principais Diferenças
- Abordagem - Monkey Tests: aleatórios e sem estrutura. 
- Gorilla Tests: gocados e estruturados, numa funcionalidade específica. 
 
- Objetivo - Monkey Tests: Identificar falhas e comportamentos anómalos, através de interacções aleatórias. 
- Gorilla Tests: Garantir a robustez e a estabilidade de uma funcionalidade específica, sob uso intensivo. 
 
- Execução - Monkey Tests: onterações aleatórias e muitas vezes automatizadas. 
- Gorilla Tests: interações repetitivas e intensivas numa funcionalidade específica. 
 
- Conhecimento do Sistema - Monkey Tests: não requer conhecimento do sistema. 
- Gorilla Tests: requer conhecimento detalhado da funcionalidade específica que está a ser testada. 
 
- Cobertura - Monkey Tests: cobre uma vasta gama de interacções e entradas aleatórias. 
- Gorilla Tests: cobre exaustivamente uma funcionalidade específica. 
 
Portanto, os Monkey Tests e Gorilla Tests são técnicas complementares no teste de software. Enquanto os Monkey Tests se concentram na aleatoriedade completa para identificar falhas imprevistas em todo o sistema, os Gorilla Tests focam-se em testar repetidamente uma funcionalidade específica a fim de garantir a sua robustez e estabilidade sob condições de uso extremo.
Cada técnica tem seu propósito, aplicação e utilização, e a escolha entre elas depende dos objetivos específicos do teste e das características do sistema que vai ser testado.

