• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

M6

Testes em Ambiente Web

8 mensagens neste tópico

Não sendo este um tópico de programação propriamente dito, e não havendo secção específica para ele uma vez que é agnóstico em relação às linguagens de programação e às frameworks, deixo-o aqui.

Um dos maiores problemas quem desenvolve para a web se depara é sem dúvida os testes funcionais.

Podemos ter cadernos de testes, mas, se não tivermos uma ferramenta para agilizar o processo, o que vamos ter é inúmeras horas de tédio a picar cada ponto do caderno de testes.

Assim, e de forma a aumentar a produtividade, e baixar o tédio para que possamos fazer coisas bem mais divertidas do que seguir um guião escrito em Word, a melhor forma é usar um sistema que nos permita gravar os testes para que os mesmos sejam replicados mais tarde quantas vezes sejam necessárias e, desejavelmente, sem a intervenção humana.

É fácil encontrar vários sistemas que prometem fazer de robots em testes de aplicações web, mas a verdade é que a larga maioria delas ou é limitada, ou funciona mal, ou é pornograficamente cara, ou simplesmente não serve os nossos propósitos.

Assim, além do facto da escolha ser difícil, por vezes não se pensa nas várias fases do desenvolvimento e, optando por um modelo em cascata, usa-se apenas uma ferramenta na "fase de testes".

O que eu "proponho" aqui não vai contra o modelo em cascata, ainda bastante usado na indústria, mas permite um modelo de testes funcionais em duas fazes:

  • 1. Durante o desenvolvimento, em complemento aos testes unitários.
  • 2. Na tradicional fase de "testes funcionais".

Para o primeiro ponto, não necessitamos de mais do que um simples robot que faça um teste de forma assistida e mais rápida do que nós.

Para tal, basta usar um sistema de macros, como por exemplo o TestGen4Web. Este pequeno utilitário, embora tendo algumas limitações, permite gravar as acções do utilizador e reproduzi-las no browser, sendo assim possível de assistir aos passos executados. Esta abordagem tem outra grande vantagem, um teste gravado permite que o mesmo seja reproduzido, diminuindo a taxa de bugs fechados como "não é possível reproduzir".

O TestGen4Web é apenas um exemplo, uma vez que não faltam soluções idênticas e até mais completas, basta investigar um pouco para descobrir qual a que melhor se adequa às nossas necessidades.

Para o segundo ponto, os testes são mais exigentes e requerem que todo o sistema já esteja pronto, permitindo verificar se não há regressões no sistema e avaliar como o mesmo se porta em carga. Para este tipo de tarefa não é necessário ter ninguém a assistir aos testes, podendo inclusivé ser corridos em batch durante a noite.

Nestas situações, necessitamos de uma ferramenta como o JMeter, que permite não só correr em batch como simular carga e tudo isto sem necessitar de assistência humana.

De novo, o JMeter é apenas um exemplo, uma vez que também aqui não faltam soluções idênticas e mais completas.

Usando estes dois "check-points", o desenvolvimento final sairá com uma qualidade mais elevada e, tipicamente, com menor esforço, uma vez que quanto mais cedo um bug for detectado, mais barato é a sua resolução (em termos de tempo e dinheiro).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Interessante...

Mas tipo, no caso do TestGen4Web, temos de pelo menos fazer a gravação de uma macro numa determinada acção sem bugs correcto? Ou seja, quando algo esta a funcionar, gravar determinada a acção para mais tarde voltar a testar quando fizermos várias alterações. Permitindo assim ter a certeza que ao adicionar-mos novas funcionalidades, não estragamos antigas.

Correcto ou errado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Interessante...

Mas tipo, no caso do TestGen4Web, temos de pelo menos fazer a gravação de uma macro numa determinada acção sem bugs correcto? Ou seja, quando algo esta a funcionar, gravar determinada a acção para mais tarde voltar a testar quando fizermos várias alterações. Permitindo assim ter a certeza que ao adicionar-mos novas funcionalidades, não estragamos antigas.

Correcto ou errado?

Ambos. :)

No caso dos testes feitos com ferramentas tipo TestGen4Web, o objectivo não é tanto repetir um script para garantir que que não houve regressão.

Podes ter apanhado um bug durante o teu teste, e depois de o corrigires, corres o script de forma a ver se ele aparece de novo ou se efectivamente já foi resolvido.  Dado que os scripts TestGen4Web são assistidos, é fácil validar se o erro ocorreu ou não.

Ou seja, em testes tipo TestGen4Web o objectivo é mais do tipo "teste unitário" ou "teste unitário integrado", onde os scripts permitem:

- a replicação de problemas;

- a verificação de que um bug foi resolvido;

- pequenos testes unitários;

No caso dos testes de regressão/funcionais tens mesmo de fazer um script sem erros, de forma a que se houver um bug, ele seja apanhado. Isto aplica-se mais no caso do JMeter, onde tens uma bateria de testes sobre uma aplicação estável, por exemplo uma v1.0, e antes de lançares o patch v1.0.1, corres essa bateria de testes a ver se o patch não estragou nada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito interessante. Ainda não conhecia essas ferramentas. Obrigado pelo bom artigo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Encontrei agora um post sobre o SimpleTest, para fazer UnitTesting.

http://andretorgal.com/blog/2008/05/18/php-unittesting-com-simpletest/

cool. afinal não estou a escrever para o boneco.

O SimpleTest faz UnitTesting e tambem faz WebTesting... permite invokar uma url, desconstruir o resultado, avaliar secções essenciais e depois navegar utilizando os links ou submits presentes na página...

assim é possível desenhar testes funcionais decalcados dos use-cases

claro que o server a executar a bateria de testes terá que ter um execution limit virtualmente ilimitado para poder executar 3 ou 4 requests por case x 20 ou 30 cases

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem vindo ao P@P André. :)

Mais cedo ou mais tarde descobrem o nosso trabalho, para o boneco nunca escrevemos (talvez para os crawlers).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora