Estratégias de Testes de Software
Durante o desenvolvimento de um software, diversas estratégias para teste podem ser aplicadas. Essas estratégias podem ser categorizadas da seguinte forma:
· Baseadas em Implementação: Utiliza o código como elemento para a geração dos testes. É uma atividade cara, sob o ponto de vista de recursos necessários para a sua realização, e bastante complexa quando o tamanho do código de torna bastante grande;
· Baseadas em especificação: utiliza um documento de especificação como base para geração dos testes. Assim, tenta-se cobrir as imposições e restrições descritas nos requisitos estabelecidos para o sistema. A automação da geração dos testes nesse caso é mais complicada, caso não de tenha um formalismo para a elaboração da especificação do sistema;
· Baseados em modelos: é uma subcategoria de estratégias baseada em especificação. Utiliza modelos desenvolvidos ao longo do processo de desenvolvimento que representam o comportamento ou estrutura do software.
Cada estratégia apresentada possui sua aplicabilidade, vantagens e desvantagens.
Teste funcional representa uma categoria de técnicas de teste em que o comportamento de software a ser testado é abordado como se fosse uma caixa-preta, ou seja, não se considera o comportamento interno do mesmo.
Haverá sucesso no teste se o resultado obtido for igual ao resultado esperado. O componente de software a ser testado pode ser um método, uma função interna, um programa, um componente, um conjunto de programas ou mesmo uma funcionalidade.
Um dos mecanismos para facilitar a realização de testes funcionais é pensar na automação de algumas tarefas que compõem o processo de testes.
Automação dos Testes
Automação dos testes consiste no uso de algum apoio computacional, ferramentas, para controlar a execução dos testes, a comparação dos resultados e comportamentos esperados, a configuração das pré-condições dos testes e outras atividades do controle dos testes e relato de seus resultados.
Apesar de os testes manuais poderem encontrar muitos defeitos em um software, essa tarefa é complexa, desgastante e consome muito tempo.
A automação dos testes é um processo de escrever um programa computacional para realizar testes que, caso contrário, seriam feitos manualmente, na maioria dos casos, o método de testes com custo mais efetivo para produtos que possuem uma longa vida, com muitas manutenções, pois pequenas modificações em certas partes do software que estariam funcionando anteriormente deixem de funcionar.
Existem duas abordagens gerais para automação dos testes:
· Testes dirigidos a código: as interfaces para classe, módulos ou bibliotecas são testadas com uma larga variedade de argumentos de entrada para validar se os resultados que estão sendo retornados estão corretos;
· Teste de interface: um framework de teste que gera eventos de interface do usuário tais como digitação de teclas ou cliques do mouse, e observa as mudanças que ocorrem na interface do usuário. Assim, podemos validar se o comportamento observado do software após tais eventos estão corretos.
Uma forma de gerar casos de testes automaticamente é utilizando a estratégia de Teste Baseado em Modelos, que adota modelos representando o sistema para geração de casos de testes, porem existem outras estratégias interessantes.
Importância da Automação dos Testes
Uma das principais características das atividades de teste de software, assim como a atividade de desenvolvimento de software em geral, é o fato de serem realizados por pessoas, e consequentemente possíveis erros. Diversos problemas relacionados aos testes a serem aplicados em um software podem ser evitados a partir da automação desta atividade, dentre os quais:
· Dados de entrada de teste incorretos, informando valores ou tipos de dados inválidos;
· Não perceber um comportamento incorreto do software a certo evento;
· Reportar os resultados dos testes incorretamente;
· Esquecer-se de executar alguns casos de teste;
· Esquecer-se de executar alguma pré-condição para execução dos testes;
· Alteração na execução da sequencia de casos de teste, o que poderia levar a execução dos testes a um fracasso;
Além de evitar problemas causados por eventuais falhas humanas, a automação dos testes pode ainda nos proporcionar:
· Uma forma de armazenar conhecimento sobre domínio do projeto ou sobre as funcionalidades que compõem o sistema;
· Garantira a acurácia dos relatórios de testes;
· Velocidade na execução dos testes;
· Realizar testes em momentos específicos e sempre que necessário;
· Simplificação nos testes de regressão;
· Possibilidade de testar o sistema com diferentes conjuntos de dados.
Teste de Interface (Graphical User Interface)
Muitas ferramentas de automação provêm funcionalidades de gravar a execução de um software e rodar esta gravação que permite aos usuários interativamente “filmar” as ações do usuário e repeti-la quantas vezes quiser, comparando os resultados e comportamentos obtidos com aqueles esperados. A vantagem desta abordagem, chamada capture-replay, é que ela requer pouco ou nenhum desenvolvimento de software. Os casos de entrada armazenados podem então ser usados para reproduzir os testes posteriormente. Alterar o nome de um botão ou movê-lo para outra parte da tela pode requerer que os testes tenham que ser regravados.
Uma variação deste tipo de ferramenta seriam as ferramentas para teste de aplicações Web.
Outra variação de automação de testes sem scripts que não usa a ideia de capture-replay, em vez disso constrói um modelo da aplicação a ser testada e então permite ao testador criar casos de teste simplesmente editando os parâmetros e condições de teste. Esta abordagem pode ser aplicada a qualquer software baseado em interfaces.
As ferramentas de automação de testes mais conhecidas podem ser caras, apesar de já existirem diversas ferramentas gratuitas e com um bom conjunto de funcionalidades de apoio à automação dos testes.
Ferramenta Selenium IDE
Selenium IDE é um ambiente de desenvolvimento integrado para testes com Selenium. Foi desenvolvido como uma extensão do Firefox e permite gravar, editar e depurar testes. O Selenium IDE inclui o Selenium Core, permitindo gravar e reproduzir os testes no ambiente que eles serão executados, de maneira fácil e rápida.
Entre suas funcionalidades, podemos citar:
· Gravação e reprodução dos testes de forma simples;
· Seleção de campo inteligente, que captura as informações cobre os campos a partir da página;
· Funcionalidade autocompletar para todos os comandos de Selenium;
· Possibilita navegar entre os testes;
· Possibilita configurar depuração e pontos de paradas para verificação durante os testes;
· Permite salvar os testes como HTML, scripts em Ruby ou outro formato.
Conclusão
Ferramentas automatizam o conhecimento técnico da equipe de teste, mas não conseguem passar sobre este conhecimento para aumentar a qualidade dos testes. Uma vez que este conhecimento é provido pela equipe de teste, ferramentas contribuem significativamente para a redução de esforços dos testes e aumento de sua qualidade.
Thiago de Marco Pinto 09194402322
Henrique Moreno 0947497522
Nenhum comentário:
Postar um comentário