Idéias para Teste de Software

Bom pessoal, sou novo na área de teste e gostaria de opiniões.

Trabalho como Analista de Teste Jr. porém realizo somente teste exploratório. Os programadores ajustam o sistema, me repassam e eu testo. O método de teste ainda não é automatizado, pois nunca mexi com automatização e também não faço aquelas documentações. Gostaria de saber o que mais um analista faz, quais as suas funções na empresa e o que fazer á mais para poder acrescentar na rotina de trabalho.

Se puderem, relatem como funciona a rotina de vocês, assim podemos ficar conhecendo procedimentos novos.

Um abraço a todos!

Sobre o que vc pode fazer no seu local de trabalho talvez isso lhe ajude

http://blog.fragmental.com.br/2008/03/24/testadores-ageis/

Sobre os testes, o principal é vc pegar algum teste que vc ja repetiu e utilizar uma ferramenta para reproduzir e avaliar a resposta.

um exemplo muito simples seria o teste de uma aplicação web usando curl (um browser modo-texto que cospe o html lido) e diff (programa para analisar diferenças entre 2 arquivos.

1- criação do teste

setup

curl http://endereco/a/b/c/d > master.01.dat

2- execucao

setup

curl http://endereco/a/b/c/d > test.01.dat
diff test.01.dat master.01.dat

Se o resultado do diff for que os dois arquivos são identicos, o seu teste passou.

isto vale para um GET http mas pode valer para um POST. por exemplo vc pode submeter um valor para um formulario e verificar a resposta e ver que dado inserido está la.

perceba que eu coloquei um comentario “setup”. antes de qq teste vc faz um setup para colocar o sistema no ponto que vc quer. por exemplo vc vai testar um cadastro de cliente, por exemplo. Vc apaga os clientes e testa unicamente a inclusao de um cliente. Ou vc pode inserir no banco uns mil clientes para testar a paginacao.

o curl consegue fazer coisas bem complexas com http, incluindo upload de arquivo. O problema dessa abordagem é a forma de analisar que algo deu certo: um diff pode pegar coisas triviais como um numero randomico em um link que certamente sera diferente - desses usados para evitar cache - ou entao pode pegar uma data que sera diferente da data gravada no arquivo master.

Nada impede que o seu arquivo master seja um template, com algo como

<html><head><title>%titulo%</title>...

e vc substitui o titulo pelo que vc espera. mas ainda assim o diff nao eh nada amigavel. A forma como vc vai testar a resposta certamente vai passar por uma analise do html de resposta em certos elementos do html.

Existem excelentes ferramentas como Watir, Selenium, etc, que vc pode executar os requests e analisar a resposta de uma forma mais apropriada mas tudo tem como base o conceito que te passei.

SE o software for algo não web o principio vale o mesmo, muda a interação e a forma de verificar se ele fez o que se espera. por exemplo se eh um programa que escreve na stdin basta capturar e ler como arquivo. se ele manipula o banco de dados uma consulta SQL pode verificar se ele fez o que eh certo. se ele cria um arquivo basta ver se ele criou.

O mais dificil eh organizar os testes. Se vc puder utilizar algo como cucumber ficara bem interessante.

curl http://endereco/a/b/c/d > test-.01.dat

Ok, então isso se resume em automatizar os testes, isso? Na verdade eu até acho que na minha empresa não vale a pena automatizar por que não existem muitos processos repetitivos, apenas login e senha, sempre é teste diferente.

então o software não tem bugs, pois ao encontra-los ocorre um segundo ciclo de testes para verificar a correcão (o bugfix) e verificar o resto do software, para ver se a correção não estragou nada.

Você conhece o termo “teste de regressão”?

Já ouvi falar amigo, se puder, explique melhor.

Um abraço!

Um teste de regressão tem por objetivo identificar se mudanças recentes em um sistema introduziram bugs. Se os testes são automatizados, o custo de realizar testes de regressão cai quase a zero e permite que os testes sejam realizados com uma frequencia muito maior evitando a introdução de bugs e facilitando a identificação e correção dos mesmos.

Acho que depende da arquitetura que vc está utilizando.
Ou seja, web ou desktop, frameworks utilizadas, etc…