A maioria dos tipos de testes de software utiliza um plano de testes cuidadosamente definido para garantir a cobertura. No entanto, embora estes parâmetros cubram muitas das eventualidades de utilização de um software, nem sempre imitam o comportamento de um utilizador que não está familiarizado com a aplicação e que está simplesmente a tentar interagir com ela de uma forma exploratória: É o caso dos testes com macacos.
Neste artigo, vamos dar uma vista de olhos a tudo o que diz respeito aos testes com macacos, incluindo software de testes com macacos, processos, tipos, abordagens e muito mais.
O que é o teste do macaco?
O teste do macaco é uma técnica de teste de software cada vez mais popular. Envolve o envio de entradas aleatórias para uma aplicação para simular a imprevisibilidade da interação da interface do utilizador.
O objetivo é encontrar erros ou falhas que possam ser difíceis de detetar com casos de teste predefinidos. Um teste do macaco imita a forma como uma pessoa sem experiência ou conhecimento de uma aplicação pode explorar aleatoriamente o software.
Esta técnica é uma boa opção tanto para
carregar
e
testes de esforço
aplicações. De facto, os testes fornecem entradas aleatórias contínuas numa tentativa de quebrar a aplicação.
Existem muitas semelhanças entre os testes em macaco e os
testes ad hoc
nomeadamente, o seu carácter aleatório e a falta de dependência de um plano de ensaio. No entanto, existem diferenças suficientes entre as duas para as considerar abordagens distintas.
Embora alguns programadores sugiram que o teste do macaco é um tipo de teste ad hoc, uma diferença significativa entre os dois é que o teste do macaco pode ser efectuado por pessoas sem qualquer conhecimento da aplicação.
O teste do macaco consiste em não ter um plano de teste. Trata-se de introduzir dados aleatórios com o objetivo de destruir o software.
Porque é que se chama teste do macaco?
Não existe consenso sobre a razão pela qual esta técnica é designada por “teste do macaco”. No entanto, existem algumas teorias convincentes por detrás do nome.
Teoria 1: Teorema do macaco infinito
A primeira teoria sugere que o nome tem a ver com o teorema do macaco infinito, uma metáfora utilizada para discutir a probabilidade estatística. Em suma, afirma que se um macaco se sentasse em frente a uma máquina de escrever e carregasse em teclas aleatórias durante um período de tempo infinito, a dada altura produziria as obras completas de William Shakespeare.
A ideia aqui é que o teste do macaco simula este esmagamento aleatório de chaves e, com tempo suficiente, cobrirá todas as eventualidades que a aplicação enfrentará em produção.
Teoria 2: “O macaco” do Macintosh
A outra teoria é que o nome vem de uma aplicação MacOS de 1983 chamada “The Monkey”. Em suma, a equipa que trabalhava no primeiro computador Macintosh queria encontrar uma forma de testar o stress da sua máquina.
Pensaram que se tivessem um macaco a bater freneticamente nas teclas e a mexer no rato, isso ajudaria a testar a resistência do computador. Como não tinham um macaco vivo à mão, criaram uma aplicação que podia simular este tipo de utilização e chamaram-lhe “O Macaco”.
Porque é que o teste do macaco é importante?
A grande razão pela qual os testes com macacos são importantes é que ajudam as equipas a descobrir casos extremos ou comportamentos inesperados numa aplicação. A ideia aqui é que os programadores podem utilizar os testes com macacos juntamente com métodos mais tradicionais para terem uma melhor noção de como a aplicação será recebida na natureza.
Mesmo os testes exaustivos de um produto não podem competir com dezenas de milhares ou mais de utilizadores envolvidos com uma aplicação durante um longo período de tempo. Numa pequena percentagem destes casos, os utilizadores pedem à aplicação para fazer algo inesperado. Descobrir todos estes cenários através de casos de teste é quase impossível.
Os testes com macacos tentam cobrir estes cenários quase aleatórios. Quando os programadores criam um caso de teste, tendem a ter um conhecimento íntimo da aplicação. Compreendem os objectivos do utilizador e sabem qual a melhor sequência de interacções que este deve utilizar para alcançar algo numa aplicação.
A aleatoriedade destas entradas significa que a aplicação é testada de formas que os criadores não consideraram. De um modo geral, isto aumenta a resiliência e a durabilidade globais de um software e garante que este pode ir para o mundo e enfrentar a imprevisibilidade de um vasto leque de utilizadores sem falhar.
Quando é que se deve utilizar o teste do macaco?
O teste do macaco é uma excelente técnica de teste suplementar. A sua maior vantagem reside na capacidade de encontrar erros inesperados que não seriam detectados pelos métodos de teste de software mais tradicionais. Como tal, é melhor quando utilizado juntamente com métodos como:
Normalmente, os programadores utilizam o teste do macaco no início do processo de teste. É particularmente útil quando há falta de planos de teste predefinidos a que recorrer.
Como é efectuado o teste do macaco?
Num passado não muito distante, os testes com macacos eram efectuados manualmente. Os testadores foram convidados a carregar em botões, introduzir texto, selecionar objectos, etc., para ver como o sistema resistiria a entradas não convencionais. Há aqui problemas óbvios. Em primeiro lugar, é bastante moroso. Em segundo lugar, há poucas garantias de que estas acções cubram todas as eventualidades.
Exemplos de testes manuais com macacos
Eis alguns exemplos de como são efectuados os testes manuais com macacos. Também pode dar uma ideia do que os testes automatizados de macaco procuram simular.
- O testador navega num sítio Web clicando em ligações aleatórias para ver se estas podem bloquear a aplicação ou conduzir a páginas inesperadas
- Um testador introduz textos aleatórios num campo de formulário para ver como a aplicação responde
- O testador arrasta e larga ícones e objectos para ver se se comportam como esperado ou se apresentam resultados indesejados.
Diferentes tipos de testes em macacos
Existem três tipos principais de testes de macaco que os programadores utilizam para descobrir informações distintas sobre a resiliência das suas aplicações.
1. Teste do macaco burro
O teste do macaco burro descreve uma abordagem em que o testador não sabe nada sobre a aplicação que está a ser testada. Em vez disso, pede-se ao testador que ande por aí sem qualquer conhecimento do fluxo de trabalho, carregando em botões, introduzindo texto, etc. Esta técnica pode ajudar a descobrir falhas significativas de que os programadores não estão conscientes.
2. Testes com macacos inteligentes
Com o teste do macaco inteligente, o testador sabe um pouco sobre a aplicação e os seus objectivos e até tem informações detalhadas sobre o seu funcionamento. Este processo também utiliza um tipo mais específico de entrada aleatória, concebido para levar a aplicação a ultrapassar determinados limites. Esta abordagem é adequada tanto para testes de stress como de carga.
3. Testes brilhantes com macacos
O teste do macaco brilhante é o nível seguinte ao teste do macaco inteligente. O testador tem um conhecimento forte e abrangente da aplicação e é escolhido com base nesse conhecimento. Esta supervisão pode ajudar o testador a descobrir muitos erros, uma vez que deve compreender o produto na perspetiva do utilizador.
Prós e contras do teste do macaco
Antes de decidir utilizar a técnica do teste do macaco, é necessário compreender os seus prós e contras.
Vantagens do teste do macaco
1. Encontrar erros raros ou ocultos
Talvez o benefício mais convincente do teste com macaco seja a capacidade da técnica de descobrir bugs, defeitos ou comportamentos que, de outra forma, poderiam não ser descobertos. Encontrar estes casos extremos é um desafio com as técnicas de teste tradicionais, pelo que o teste do macaco é uma forma sólida de testar falhas, corrupções de dados e qualquer outra coisa que ameace a estabilidade de uma aplicação.
2. Garante a robustez
O teste do macaco foi concebido para ver como uma aplicação responde às condições imprevisíveis que enfrentará durante as utilizações no mundo real. Quando uma aplicação é colocada nas mãos do utilizador, irá resultar em muitas entradas diferentes que os programadores não podem prever. Os testes com macacos imitam essa situação, conduzindo a construções mais fiáveis.
3. Relação custo-eficácia
Em comparação com outros tipos de testes, o teste do macaco é muito económico. Há algumas razões para isso. Em primeiro lugar, não precisa de perder muito tempo a conceber casos de utilização para a sua aplicação. Além disso, as ferramentas de software de teste de macacos são em grande parte automatizadas, o que liberta o tempo dos programadores para outras tarefas, poupando-lhe dinheiro.
4. Versatilidade
Uma das melhores coisas dos testes em macaco é o facto de poderem ser realizados por pessoas sem conhecimentos técnicos. De facto, em alguns casos, é preferível ter alguém que seja completamente verde. Além disso, estes testes são bastante simples de configurar, o que, mais uma vez, reduz a dependência de engenheiros especializados.
5. Deteção precoce de erros
Encontrar e resolver os erros no início do ciclo de vida do desenvolvimento poupa tempo no futuro. Os testes com macacos introduzem um nível de aleatoriedade nos testes, o que pode ajudá-lo a encontrar falhas no seu código enquanto é fácil de corrigir.
Desvantagens do teste do macaco
1. Cobertura
Embora os testes “chave na mão” possam resultar numa melhor cobertura dos testes, não têm o rigor planeado e estratégico de outros tipos de testes. Com efeito, uma vez que a aplicação é bombardeada com entradas aleatórias, o utilizador fica à mercê do caos para encontrar erros. Não quer dizer que não encontre tudo, mas sem uma estratégia clara e predefinida, não pode ter 100% de certeza de que tudo foi capturado.
2. Aplicações limitadas
O teste do macaco não é adequado para todos os tipos de aplicação. É excelente para aplicações complexas com muitas características e funções diferentes que, acima de tudo, têm o potencial para interacções inesperadas do utilizador. Os programas que oferecem funções mais rígidas e previsíveis têm menos probabilidades de beneficiar destes testes.
3. Demasiado tempo
Os testes manuais com macacos consomem muito tempo. Requer muitas interacções com módulos e software, sem qualquer garantia de que cada sessão irá descobrir erros. É verdade que pode automatizar o processo, o que poupa tempo e recursos consideráveis.
4. Falsos positivos
Devido à natureza caótica ou aleatória dos testes com macacos, alguns dados podem simular cenários que não se verificam durante a utilização do produto no mundo real. Esta situação pode resultar na geração de falsos positivos, levando os programadores a corrigir problemas que não são necessários.
O que é o teste do macaco do caos?
O teste do caos é uma técnica de engenharia de software que utiliza experiências controladas e deliberadas concebidas para perturbar um sistema (e até induzir falhas) para avaliar a sua resiliência e capacidade de recuperação.
A ideia de quebrar intencionalmente um sistema para garantir a resiliência é bastante comum no espaço de desenvolvimento de software, e esses métodos normalmente resultam em construções que os engenheiros podem apoiar.
Em 2008, depois de sofrer uma corrupção de três dias na base de dados, o popular serviço de streaming Netflix decidiu migrar para a Amazon Web Services (AWS). O objetivo era evitar pontos únicos de falha e reduzir os problemas de escalabilidade resultantes da expansão do seu serviço.
A equipa implementou o teste do macaco do caos para testar instâncias voltadas para o público na infraestrutura AWS. Os benefícios eram duplos:
- O processo revelou pontos fracos que os engenheiros da Netflix puderam corrigir
- Esta situação inspirou a equipa a criar mecanismos de recuperação automatizados para o seu serviço.
O teste do macaco do caos é uma parte da Chaos Engineering. É utilizado para testar a tolerância a falhas de um sistema e a sua capacidade de manter a estabilidade e o desempenho mesmo quando componentes individuais falham inesperadamente.
Embora esteja relacionada com o teste do macaco, é uma técnica distinta.
Teste do macaco vs teste do gorila
Também já deve ter ouvido falar do conceito de teste Gorila no desenvolvimento de software. Embora ambas as técnicas tenham o nome de primatas, têm muitas semelhanças e diferenças. Vamos explorar o que é o teste Gorilla e onde pode ser utilizado.
O teste do gorila é considerado uma versão mais estruturada do teste do macaco. Em comparação, o teste do macaco é frequentemente utilizado nas fases iniciais do teste quando não existem casos de teste formais disponíveis. Os testes Gorilla, por outro lado, utilizam uma ferramenta ou um script automatizado para gerar entradas aleatórias para uma aplicação de software.
O teste do gorila é rápido e muito mais eficiente do que o teste manual do macaco. Oferece uma ampla cobertura e é uma excelente forma de encontrar falhas que precisam de ser resolvidas. No entanto, é melhor utilizado para aplicações com limites bem definidos ou para testar exaustivamente um módulo específico.
Tanto o teste do macaco como o teste do gorila têm o seu lugar nos testes modernos de desenvolvimento de software. Compreendê-los é fundamental para utilizar a abordagem correcta no espaço certo.
Qual é a melhor ferramenta de teste do macaco?
O software de teste de macaco tornou-se uma parte essencial do conjunto de ferramentas do programador moderno. No entanto, existem algumas opções. Então, qual é a melhor ferramenta de teste de macaco? Eis algumas que deve conhecer.
1. ZAPTEST
O ZAPTEST é uma poderosa
ferramenta de automatização de testes de software gratuita e empresarial
que suporta uma vasta gama de técnicas de automatização de testes, incluindo testes com macacos. Algumas das funcionalidades do ZAPTEST que ajudam nos testes com macacos incluem:
- Gravação de scripts sem código: As equipas podem gravar as interacções dos utilizadores e convertê-las em código de teste.
- Geração de entradas: O ZAPTEST facilita a geração de entradas aleatórias, que é um elemento essencial dos testes de macaco
- Relatórios robustos: O ZAPTEST oferece poderosas capacidades de criação de relatórios que o ajudam a documentar os seus testes
Naturalmente, estas características estão apenas a arranhar a superfície das capacidades do ZAPTEST para uma vasta gama de técnicas de teste, incluindo testes de macaco. Com a integração do WebDriver, as funcionalidades de IA e o ZAPTEST CoPilot, as equipas podem experimentar o futuro dos testes de software num único local.
Além disso, os utilizadores do ZAPTEST Enterprise têm acesso a um especialista ZAP dedicado a tempo inteiro e a licenças ilimitadas, tudo isto por um custo fixo previsível.
2. Appium
O Appium é uma ferramenta de código aberto. Pode utilizá-lo tanto para Android como para iOS. Permite aos utilizadores automatizar as interacções das aplicações móveis e possui capacidades de teste de macaco. Os programadores podem imitar uma vasta gama de reacções da interface do utilizador, como introduzir texto, clicar, tocar e deslocar.
Embora o Appium seja uma óptima ferramenta para os programadores de dispositivos móveis, não possui capacidades para testes em computadores e na Web.
3. Teste do macaco
Monkey Test It é uma plataforma de testes baseada na nuvem com uma gama de capacidades de teste que incluem testes com macacos. Embora o Monkey Test It seja muito fácil de utilizar, talvez lhe falte o poder de ferramentas rivais.
Outras desvantagens são o facto de poder ter um aspeto mais elegante e vir acompanhado de melhor documentação. Além disso, alguns utilizadores queixaram-se de resultados imprecisos nos testes. Dito isto, trata-se de um programa simples com um preço baixo, pelo que não se pode esperar muito dele.
4. MonkeyTestJS
O MonkeyTestJS é uma ferramenta australiana de código aberto baseada em JavaScript que foi criada apenas para aplicações Web. É bastante básico, mas é mais do que capaz de fazer o trabalho. A ferramenta permite aos programadores simular as interacções entre o utilizador e a aplicação Web, tais como cliques, envio de formulários, entradas de teclado, etc.
Obviamente, uma desvantagem da ferramenta é o facto de só estar disponível para aplicações Web. No entanto, vale a pena tê-lo na sua caixa de ferramentas.
Qual é a melhor ferramenta dedicada de teste de macaco para Android?
Existem algumas boas opções para os programadores que pretendem trazer um pouco de caos aos seus testes de aplicações Android. Vejamos duas.
1. UI/Application Exerciser Monkey para Android
O UI/Application Exerciser Monkey para Android é uma ferramenta de linha de comandos que permite aos programadores enviar entradas ou eventos pseudo-aleatórios para dispositivos Android e emulações. Esta ferramenta é executada no shell do Android Debug Bridge.
2. MonkeyRunner para Android
O MonkeyRunner para Android é uma popular ferramenta de teste de macacos para Android. O software é uma API que permite aos programadores escrever programas que emulam ou controlam um dispositivo Android. É também uma boa opção para testes funcionais e unitários.
Ambas as aplicações são boas opções. No entanto, são bastante técnicos, o que não se adequa a todas as equipas.
Os testes com macacos devem ser automatizados?
Um dos maiores problemas dos testes manuais com macacos é o facto de consumirem muito tempo. Outra coisa que deve ter em conta é que é difícil para alguns testadores simular realmente as várias interacções que uma vasta base de utilizadores pode ter com uma determinada aplicação.
Assim, três inconvenientes imediatos saltam-nos à vista. O teste manual do macaco é:
- Demora tempo
- Caro
- Potencialmente com falta de cobertura
Uma ferramenta automatizada de testes de macaco resolve todos estes problemas.
A ZAPTEST é a escolha certa para as suas necessidades de testes de macacos?
O teste do macaco é uma boa técnica para ter no seu repertório de testes, especialmente se conceber aplicações complexas. No entanto, a aquisição de software dedicado para testes de macacos é dispendiosa.
ZAPTEST
é uma ferramenta flexível e poderosa de
ferramenta de automatização de testes full-stack.
É altamente personalizável e permite que tanto os programadores como as equipas não técnicas criem e concebam uma quantidade infinita de técnicas de teste de software, incluindo testes de macaco.
O teste do macaco é uma óptima escolha quando complementado com outros tipos de testes. O ZAPTEST oferece tudo sob o mesmo teto, com a adição de ferramentas RPA de alta qualidade.
Considerações finais
O software de teste Monkey fornece aos programadores uma forma não convencional de testar as suas aplicações. A força desta técnica reside na sua capacidade de simular a miríade de formas imprevisíveis com que um utilizador pode interagir com uma peça de software. Em suma, os testes com macacos fornecem uma cobertura que pode ser difícil de alcançar com um plano de testes.