Esse artigo faz parte da revista Engenharia de Software 24 edição especial. Clique aqui para ler todos os artigos desta edição



Validação, Verificação & Teste

Automatizando Testes Funcionais em Aplicações Web

Utilizando a Ferramenta Selenium para execução de Testes Funcionais

 

De que se trata o artigo:

Neste artigo iremos apresentar a implementação de uma estratégia de teste funcional utilizando uma ferramenta, Selenium IDE, para automação da execução e re-execução dos testes.

 

Para que serve:

O artigo demonstra na prática a ferramenta Selenium IDE para automação de teste funcional usando uma estratégia de teste do tipo capture-replay, contextualizada ao domínio de aplicações web.

 

Em que situação o tema útil:

O tema é útil para os desenvolvedores e engenheiros de software que planejam aplicar a automação de testes no desenvolvimento de aplicações web.

 

 

Nos artigos anteriores escritos para a ES Magazine, nos preocupamos em discutir os conceitos básicos sobre Teste de Software e apresentar uma estratégia que possibilita a geração de casos de teste de software a partir de casos de uso já especificados. Tal estratégia seria aplicada no nível de teste de software, representando um tipo de técnica de teste funcional, onde o sistema é tratado em uma visão macroscópica e sua avaliação é feita sem considerar detalhes internos de implementação.

No entanto, apesar de ser totalmente viável, a aplicação desta estratégia de teste quando realizada manualmente representa um grande esforço para um projeto de software. Com isso, pensar em mecanismos para automação dos testes consiste em pensar em mecanismo para reduzir o esforço desta atividade no contexto geral de um projeto de software.

É importante termos em mente que automação por si só não resulta em redução de esforço nos testes ou aumento da qualidade desta atividade. A automação simplesmente torna automática algumas tarefas do processo de testes, mas ela não faz milagres. Como assim? Uma ferramenta de testes apenas automatiza o nosso conhecimento técnico sobre teste de software. Sendo assim, se não tivermos conhecimento técnico adequado sobre teste de software, o conjunto de casos de teste gerado para avaliar nosso sistema não terá cobertura ou qualidade suficiente, de forma que a ferramenta irá apenas automatizar a execução do conjunto de testes inadequados, ou seja, não termos qualquer ganho com isso.

Se tivermos um processo de teste bem definido e um bom conhecimento sobre estratégias de teste, a automação pode trazer grandes benefícios a um projeto de software. Nesse contexto, neste artigo iremos apresentar a implementação de uma estratégia de teste funcional apresentada no artigo “Planejamento de Testes a partir de Casos de Uso” publicado na edição 6 da ES Magazine utilizando uma ferramenta, Selenium IDE, para automação da execução e re-execução dos testes.

Estratégias de Teste de Software

Durante o desenvolvimento de um software, diversas estratégias para teste podem ser aplicadas. De acordo com PRESSMAN (2005), 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 se torna bastante grande. É totalmente dependente de apoio ferramental;

·         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 se tenha um formalismo para a elaboração da especificação do sistema;

·         Baseadas 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 como base para a geração dos testes. Facilita a geração automática dos testes, porem é completamente dependente da facilidade para a construção do modelo adotado e de sua qualidade (corretude).

 

Cada estratégia apresentada possui sua aplicabilidade, vantagens e desvantagens. Não é propósito deste artigo discutir qual seria a estratégia mais adequada. Ao longo deste artigo iremos adotar uma estratégia de geração de testes baseada em especificação, representada pelos casos de uso de um sistema. Assim, partiremos desta informação para a geração de casos e procedimentos (roteiros) de teste, seguindo uma estratégia de teste funcional.

Teste funcional representa uma categoria de técnicas de teste em que o componente de software a ser testado é abordado como se fosse uma caixa-preta, ou seja, não se considera o comportamento interno do mesmo (Figura 1). Dados de entrada são fornecidos, o teste é executado e o resultado obtido é comparado a um resultado esperado previamente conhecido. 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 e/ou componentes ou mesmo uma funcionalidade. A técnica de teste funcional é aplicável a todos os níveis de teste, seja teste de sistema, aceitação, integração ou unidade. ...

Quer ler esse conteúdo completo? Tenha acesso completo