quarta-feira, 24 de novembro de 2010

Automação de Testes


Hoje ao ler uma postagem “Introdução à Automação de Testes Funcionais”, do profissional Cristiano Caetano, no blog http://www.testexpert.com.br, resolvi postar algumas informações em meu blog.

Automação de teste é o uso de softwares para controlar a execução dos testes de software. Como já falado em Posts anteriores, o testador precisa entender primeiro as técnicas de teste para depois entender quais ferramentas devem ser usadas com cada técnica.
Há 2 abordagens de testes automatizados. O Baseado na Interface Gráfica, que interage diretamente com a interface gráfica da aplicação simulando o usuário. E o Baseado na Lógica de Negócio, que exercita as funcionalidades da aplicação sem interagir com a interface gráfica.

 

Há vários tipos de Automação de teste.

 

*Testes automatizados baseados na interface gráfica (Capture/Playback)
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.

Bom, aproveitarei e deixarei a listagem de ferramentas Open Source e Gratuitas.


Gestão de projetos:

Testes de performance:

Gestão de testes:

Gestão de defeitos:

Gestão de Requisitos:

Testes Funcionais:
Selenium (WEB) http://www.openqa.org/selenium/
actiWATE (WEB)
http://www.actiwate.com/
Marathon (Java Swing)
http://www.marathontesting.com/marathon/
Watir (WEB)
http://wtr.rubyforge.org/
Canoo WEBTest (WEB)
http://WEBtest.canoo.com/
Apodora (WEB)
http://www.apodora.org/
Abbot (Java Swing)
http://abbot.sourceforge.net
SoapUI (WEBServices)
http://www.soapui.org/
SOAPSonar Personal Edition (WEBServices)
http://www.crosschecknet.com/
LISA WS-Testing (WEBServices)
http://www.itko.com/site/products/lisa/ws_testing.jsp
Squish for KDE (Linux)
http://www.froglogic.com
SharpRobo (WinForm .NET)
http://confluence.public.thoughtworks.org/display/SHRO/Home
FitNesse
http://fitnesse.org/











            

2 comentários:

  1. Ótimo Blog Déborah, parabéns. Estarei sempre aqui pra aprender com você.
    Luana

    ResponderExcluir
  2. =D Vlw!
    Voltarei a postar mais em Janeiro.

    ResponderExcluir