Introdução à Automação de Testes Funcionais

Introdução

Os tipos de automação são normalmente agrupados de acordo com a forma como os testes automatizados interagem com a aplicação. Em geral, os tipos de automação são agrupados em dois paradigmas (mas não são limitados a esses):

Baseados na Interface Gráfica: Nesta abordagem os testes automatizados interagem diretamente com a interface gráfica da aplicação simulando um usuário. Normalmente as ações dos usuários são gravadas (Capture) por meio da ferramenta de testes automatizados. A ferramenta transforma as ações dos usuários em um script que pode ser reproduzido (Playback) posteriormente.

Baseados na Lógica de Negócio: Nesta abordagem os testes automatizados exercitam as funcionalidades da aplicação sem interagir com a interface gráfica. Normalmente é necessário realizar modificações na aplicação para torna-lá mais fácil de testar (testabilidade). Essas modificações resultam em mecanismos para expor ao mundo exterior as funcionalidades da aplicação (APIs, Interfaces de Linha de Comando, Hooks, etc).

Tipos de Automação de Testes

Testes automatizados baseados na interface gráfica (Capture/Playback)

Nesta abordagem, os testes automatizados são realizados por meio da interface gráfica da aplicação. Normalmente a ferramenta de automação fornece um recurso para capturar (Capture) as ações do usuário enquanto o usuário estiver usando a aplicação.

Essas ações são traduzidas para comandos na linguagem de script suportada pela ferramenta de automação para que então possam ser reproduzidas (Playback) posteriormente.

Testes automatizados dirigidos a dados (Data-Driven)

Os testes automatizados dirigidos a dados representam um refinamento dos testes baseados na interface gráfica. Basicamente, nesta abordagem, é utilizado um mecanismo para auxiliar a execução de testes que executam as mesmas ações repetidamente, porém com dados diferentes. Uma das principais vantagens dessa abordagem é a reutilização dos scripts, o que conseqüentemente diminui a complexidade e o tempo de manutenção.

Testes automatizados dirigidos à palavra-chave (Keyword-Driven)

Esta abordagem foi criada para dar suporte aos testes de aceitação (Acceptance Tests) preconizados por metodologias ágeis, tais como o XP (Extreme Programming). Os testes de aceitação são normalmente definidos pelo usuário final em conjunto com analistas e testadores e tem o objetivo de definir os passos e critérios aceitar um requisito.

Nesta abordagem, os testes automatizados são realizados por meio da interface gráfica da aplicação. No entanto, os testes são baseados em palavras-chaves (keywords). Normalmente a ferramenta de automação oferece um conjunto pré-definido de palavras-chaves para permitir a criação dos testes.

Cada palavra-chave é um comando em alto nível (praticamente em linguagem nativa) que representa uma ação do usuário. Dessa forma, os testes são facilmente entendidos (e até escritos) pelos usuários finais em virtude do alto nível de abstração.

Testes automatizados baseados na linha de comando (Command Line Interface - CLI)

Uma Interface de Linha de Comando (Command Line Interface - CLI) fornece um mecanismo no qual o usuário pode interagir com a aplicação por meio de um prompt ou shell do sistema operacional.

Via de regra, a lógica de negócio da aplicação pode ser exercitada por meio da execução de um conjunto de comandos e parâmetros pré-determinados. A CLI interpreta os comandos e parâmetros, executa a função selecionada e apresenta o resultado. O objetivo da CLI é fornecer uma interface para o mundo exterior que não seja dependente da interface gráfica da aplicação. A automação de testes baseada na linha de comando faz uso dessa característica para orquestrar a execução dos testes.

Testes automatizados baseados em API (Application Programming Interface)

Uma API (Application Programming Interface ou Interface de Programação de Aplicativos) representa um conjunto de operações expostas por uma aplicação a fim de permitir que outras aplicações possam acessar ou consumir as suas funcionalidades.

O objetivo de uma API é fornecer uma interface para o mundo exterior que não seja dependente da interface gráfica da aplicação. A automação de testes baseada na API faz uso dessa característica para orquestrar a execução dos testes. Uma das vantagens advindas do uso de uma API é que a aplicação externa que consome as operações expostas, não precisa conhecer em detalhes como essas operações são implementadas.

Test Harness

O Test Harness é um tipo de automação de testes baseado na Lógica de Negócio que prega o uso racional e inteligente da automação. O Test Harness pode ser implementado por meio de um pequeno programa construído para testar uma API, uma interface de linha de comando, ou até mesmo ganchos "Hooks" projetados na aplicação para este fim.

Nesta abordagem, não importa o meio no qual o teste será realizado (contanto que não ocorra interação com a interface gráfica). O objetivo é exercitar as funcionalidades críticas da aplicação que exigem dezenas e milhares de cálculos ou variações virtualmente impossíveis (ou demoradas) para serem testadas por meios normais.

Sumário

Paradigma

Vantagens

Desvantagens

Baseado na Interface Gráfica

Não requer modificações na aplicação para criar os testes automatizados. Também não é necessário tornar a aplicação mais fácil de testar (testabilidade) porque os testes se baseiam na mesma interface utilizada pelos usuários.

Existe uma forte dependência da estabilidade da interface gráfica. Se a interface gráfica mudar, os testes falham. Baixo desempenho para testes automatizados que exigem centenas de milhares de repetições, testes de funcionalidades que realizam cálculos complexos, integração entre sistemas diferentes e assim por diante.

Baseado na Lógica de Negócio

Foco na camada onde existe maior probabilidade de existir erros. Independência das mudanças da interface gráfica. Alto desempenho para testes automatizados que exigem centenas de milhares de repetições, testes de funcionalidades que realizam cálculos complexos, integração entre sistemas diferentes e assim por diante.

 

Requer grandes modificações na aplicação para expor as funcionalidades ao mundo exterior. Exige profissionais especializados em programação para criar os testes automatizados. Existem poucas ferramentas/frameworks que suportam essa abordagem (normalmente é necessário criar soluções caseiras).

 

 

Ferramentas para automação de testes

Veja o livro: Automação e Gerenciamento de Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas.

Abraços,

Cristiano Caetano
www.testanywhere.com.br

 

 

Comentários

Automação dos testes

Boa tarde. Só para aproveitar o momento e espaço, foi ótima a palestra aqui em Goiânia, ontem a noite. Parabéns. Queria compartilhar com você a seguinte situação : Estamos trabalhando no levantamento de casos de teste sobre nossos sistemas, para depois partir para a automação deles. Tive o prazer de ver em funcionamento a ferramente TestComplete e me apaixonei por ela, mas estou com uma preocupação. Nossos sistemas tem características de mudar constantemente, para atender a situações de usabilidade e sugestões de clientes, fora os ajustes referentes a problemas. Sendo isto uma realidade, na sua opinião, compensa automatizar? Pergunto porque a manutenção constante dos scripts pode ficar cara demais por causa disto. Obrigado.

Ferramenta de Testes

Boa Tarde, gostaria de parabenizar pelo artigo, muito bom.

Trabalho em um consultoria em São Paulo e estamos planejando a montagem de um Fábica de Testes e para isso estamos pesquisando alguma ferramenta para automação dos testes, regressivos e por volume

Pelas minhas pesquisas a TestComplete da AutomatedQA é o melhor custo benefício, mas preciso de um trabalho comparativo entre as principais ferramentas. 

Vc teria algum trabalho de comparação entre as ferramentas mais conhecidas? ( Borland, Relation, Mercury, QA Run ) descrevendo as principais vantagens e desvantagens e custo.

Muito Obrigado

 

Automação de testes

Bom dia Cristiano, trabalho em uma empresa onde os testes ainda não são considerados da maneira que deveriam, assim sendo estou encarregado de criar um processo de teste que seja adequado a empresa, meu trabalho de conclusão de curso foi desenvolver um plano de teste baseado na norma IEEE-829.

 

Assim gostaria de saber um pouco mais sobre automação de teste funcionais, até porque como não tenho muito conhecimento sobre a criação de testes e casos de teste preciso definir algumas questoes a respeito.

 

Então se vc tens alguns materias que possam contribuir a esse projeto, sobre automação de testes, ou criação de casos de testes funcionais, ferramentas agradeço.

 

 

Obrigado.

Duvida!!

Olá Cristiano.

 Já faz um tempo que leio suas publicações e post na net, acho todos muito interessantes e de grande ajuda.

 Gostaria de saber se você poderia me esclarecer uma dúvida, você conhce alguma ferramenta que realiza testes automatizados nos sistemas web em Flash? Você tem algum conhecimento sobre as ferramentas da IBM Rational? Elas conseguem realizar testes neste tipo de sistema?

 Grata!

Fernanda Miranda

Obrigado pelo retorno. Dê

Obrigado pelo retorno. Dê uma olhadinha nas ferramentas abaixo:

 

http://osflash.org/autotestflash
http://www.automatedqa.com/products/testcomplete/faqs/tc_faq_web.asp

 

QA Qualidade

Boa tarde! 

Sou novo a área de Teste, gostaria de saber por onde devo começar a estudar, quero muito crescer nesta area.