51
Curso de Testes Automatizados Unidade IV Boas Praticas

Testes Funcionais - Unidade IV

Embed Size (px)

DESCRIPTION

Testes Funcionais;Testes Funcionais Automatizados; Introdução ao Selenium suas ferramentas; Tecnicas para utilização do Selenium

Citation preview

Page 1: Testes Funcionais - Unidade IV

Curso de Testes AutomatizadosUnidade IV

Boas Praticas

Page 2: Testes Funcionais - Unidade IV

Agenda

● Testes de Software● Testes Funcionais● Automação de Teste Funcionais● Selenium● Exemplos● Exercícios

Page 3: Testes Funcionais - Unidade IV

Testes de Software

● Defininições● Atividade que tem como objetivo verificar se o software

construido está de acordo com sua especificação e atende as expectativas do usuario.

● É uma investigação conduzida para fornecer os interessados informações sobre a qualidade do produto ou serviço em teste.

● Processo de validação e verificação de que um programa de software (aplicativo ou produto).– Cumpre com os requisitos que o orientaram na concepção e

desenvolvimento– Funciona conforme esperado

Page 4: Testes Funcionais - Unidade IV

Aumentando a Qualidade● Ao realizarmos testes durante

o desenvolvimento de software adicionamos valor ao produto, uma vez que o teste corretamente executado tende a descobrir defeitos, que devem ser corrigidos, aumentando assim a qualidade e confiabilidade de um sistema.

Page 5: Testes Funcionais - Unidade IV

Tipos de Testes

● Teste de Unidade● Teste a menor unidade possível do software

● Teste de Integração● Teste de vários componentes dependentes

● Teste Funcionais● Verifica se as especificações funcionais estão corretamente implementadas

● Teste de Desempenho● Pode verificar se o desempenho do Software está dentro do aceitável

● Teste de Estresse● Verifica funcionamento sobre condição anormal de demanda.

● Teste de Usabilidade● Verifica se o software é adequado ao uso

Page 6: Testes Funcionais - Unidade IV

Tipo de Testes

● Teste de Aceitação● Teste realizado pelo usario para decidir sobre a aceitação do

produto

● Teste de Segurança● Verificar nível de segurança

● Teste de Regressão● Mostrar que o software continua funcionando após alguma

alteração

● Teste de Instalação● Verifica se os procedimentos de instalação são corretos e

bem documentados

Page 7: Testes Funcionais - Unidade IV

Tipo de Testes

● Teste Alfa● Liberação do produto para pequenos grupos de

usuário em um ambiente controlado

● Teste Beta● Ambiente não controlado

Page 8: Testes Funcionais - Unidade IV

Testes Funcionais

● O teste funcional é um teste para avaliar o quanto o comportamento observado do software está em conformidade com as especificações Isso significa que esse teste é baseado na análise da especificação de funcionalidades do software testado

Page 9: Testes Funcionais - Unidade IV

Engenharia de Software

● Princípios● Planejamento dos Testes● Granularidade dos Testes● Abordagens de Teste

Page 10: Testes Funcionais - Unidade IV

Princípios

● Princípio 1: Testes demonstram a presença de defeitos, não a ausência.

● Princípio 2: Teste exaustivo é impossível. ● Princípio 3: A atividade de teste deve começar o

mais cedo possível.● Princípio 4: Defeitos tendem a estar agrupados. ● Princípio 5: O paradoxo do pesticida ● Princípio 6: Testes dependem do contexto.● Princípio 7: A ilusão da ausência de falhas.

Page 11: Testes Funcionais - Unidade IV

Princípio 1

"Os testes podem apenas mostrar a presença de erros, não sua ausência", Dijkstra, et al. 1972

● A principal finalidade do teste é detectar falhas de software de modo que os defeitos poção ser descobertos e corrigidos. Teste não pode estabelecer que um produto funciona corretamente em todas as condições, mas só pode demonstrar que ela não funciona adequadamente em condições específicas.

Page 12: Testes Funcionais - Unidade IV

Princípio 2

● Teste exaustivo é impossível, Testar todos os valores possíveis para todas as entradas, efetuando todas as formas de combinação e levando em conta diferentes precondições é geralmente impossível.

● Na prática, na maioria das vezes os softwares requerem números astronomicamente altos de casos de testes. Assim, em vez do teste exaustivo, o testador deve levar em conta os riscos e prioridades do sistema sob teste para focar os casos dos testes.

Page 13: Testes Funcionais - Unidade IV

Princípio 3

● A atividade de teste deve começar o mais cedo possível. E deve ser focado em objetivos definidos.

Page 14: Testes Funcionais - Unidade IV

Princípio 4

● Defeitos tendem a estar agrupados. Geralmente a maioria dos defeitos são encontrados em algumas partes do software sob teste, ou seja, é muito pouco provável que os defeitos estejam uniformemente distribuídos pelo software

Page 15: Testes Funcionais - Unidade IV

Princípio 5

● O paradoxo do pesticida Pode ocorrer de um mesmo conjunto de testes que são repetidos várias vezes não encontrarem novos defeitos após um determinado momento.

● Para superar este “paradoxo do pesticida”, os casos de testes necessitam ser frequentemente revisados e atualizados.

● Um conjunto de testes novo e diferente precisa ser escrito para exercitar diferentes partes do software ou sistema com objetivo de aumentar a possibilidade de encontrar mais falhas.

Page 16: Testes Funcionais - Unidade IV

Princípio 6

● Testes dependem do contexto. Os testes devem ser adaptados aos riscos e ambientes inerentes da aplicação.

● Softwares de segurança crítica, como por exemplo o do computador de bordo de aeronaves, são testados diferentemente de softwares do comércio eletrônico

Page 17: Testes Funcionais - Unidade IV

Princípio 7

● A ilusão da ausência de falhas. Encontrar e consertar defeitos não ajuda se o sistema construído não atende às expectativas e necessidades dos usuários.

Page 18: Testes Funcionais - Unidade IV

Planejamento dos Testes

● Os testes devem ser planejados com base no objetivo principal que é revelar a existência de defeitos

● O Desenho de dos casos de testes e a preparação dos dados de teste constituem atividades fundamentais do testador.

● Um caso de teste é constituído por um conjunto de dados de entrada, condições de execução de uma ou mais operações e resultados esperados ou dados de saída, desenvolvidos com um objectivo particular.

● É preciso determinar quais os testes mais importantes devem ser executados

Page 19: Testes Funcionais - Unidade IV

Planejamento dos Testes

● Principais técnicas para implementar casos de testes.● Partição de equivalência

– Divide o domínio da entrada em categorias de dados– Cada categoria agrupa os dados que possuem as

mesma categoria.● Analise do valor Limite

– Os casos de testes são escolhidos próximos ou na fronteiras dos domínios da entrada.

– Boa parte das falhas tendem a se concentrar próximo a esses valores

Page 20: Testes Funcionais - Unidade IV

Granularidade dos Testes

● Devido a complexidade do sistema as atividades de teste devem ser feitas em diferentes estágios.

Page 21: Testes Funcionais - Unidade IV

Abordagens de Teste

● Testes Black Box ou Testes Funcionais e Testes White Box ou Testes Estruturais representam as principais abordagens.

● A abordagem funcional● Melhor aplicada a componentes do sistema● Realizada por equipe de testes

● Abordagem Estrutural● Melhor aplicada a componentes individuais ou

coleções de componentes dependentes● Realizada pela equipe de desenvolvimento

Page 22: Testes Funcionais - Unidade IV

Testes Manuais vs Testes Automáticos

Page 23: Testes Funcionais - Unidade IV

Testes Manuais vs Testes Automáticos

● Teste Manual● Baseado em casos e procedimentos de testes● Em geral são cansativos e de difícil repetição

● Teste Automatizado● Baseado em casos e procedimentos de testes● Exige maior esforço para implementar● Em geral são mais fáceis de executar e repeti-los

Page 24: Testes Funcionais - Unidade IV

Testes Manuais vs Testes Automáticos

● Antes de decidir em automatizar ou não os testes, é preciso analisar a aplicação testada e quais testes serão construídos

● A principal razão para automação dos testes é a necessidade de reexecução dos mesmos.

Page 25: Testes Funcionais - Unidade IV

Testes Manuais vs Testes Automáticos

● A automação geralmente demanda bem mais esforço que sua execução manual.

● Em determinadas situações, automatizar é a melhor maneira de economizar tempo e dinheiro.

● Contudo, nem sempre é vantajoso automatizar os testes. Existem situações em que realizar os testes manualmente é mais adequado.

Page 26: Testes Funcionais - Unidade IV

Testes Manuais vs Testes Automáticos

● Recomendações● A identificação, seleção e desenho dos casos de

testes funcionais devem ser feitos por um testador que domine o domínio da aplicação.

● O automatizador de testes pode ser ou não um testador, devendo sempre ter habilidades em programação.

● A habilidade do automatizador ditará a qualidade da automação, mas será a habilidade do testador quem ditará a eficácia dos testes realizados.

Page 27: Testes Funcionais - Unidade IV

Automatização da Atividade de Teste

Page 28: Testes Funcionais - Unidade IV

Automatização da Atividade de Teste

● Identificação● O testador determinará o que será testado

identificando as condições de teste (itens ou eventos) que precisam ser verificados por cada teste.

Page 29: Testes Funcionais - Unidade IV

Automatização da Atividade de Teste

● Desenho● O desenho dos casos de teste determinará como

as condições de testes serão testadas.

Page 30: Testes Funcionais - Unidade IV

Automatização da Atividade de Teste

● Construção● Nesta atividade os casos de teste são

transformados em scripts de teste que quando utilizados durante uma execução manual do teste, é também chamado de procedimento de teste

Page 31: Testes Funcionais - Unidade IV

Automatização da Atividade de Teste

● Execução● Nesta atividade o sistema é executado utilizando os

scripts de teste. Para testes manuais, esta fase pode consistir de testadores a seguirem as instruções existentes em um procedimento de teste.

Page 32: Testes Funcionais - Unidade IV

Automatização da Atividade de Teste

● Comparação● Os resultados obtidos do sistema sob testes são

usados para determinação do resultado do teste. Existem dois possíveis resultados: Sucesso ou Falha.

Page 33: Testes Funcionais - Unidade IV

Selenium

● O Selenium é um conjunto de ferramentas OpenSource que pode ser usada para criação de testes funcionais automatizados para aplicações Web.

● Principais vantagens● Possibilidade de executar os testes em qualquer

navegador com suporte a JavaScript .● Ferramentas que compõem o Selenium provêm um

rico conjunto de funções específicas para a implementação de testes.

● Gera Scripts para Java, C#, Pytho e Ruby

Page 34: Testes Funcionais - Unidade IV

Ferramentas Selenium

● Atualmente as principais ferramentas que compõem o Selenium são: Selenium-IDE, Selenium RC, Selenium WebDriver e Selenium-GRID.

● O Selenium-IDE ● É um ambiente de desenvolvimento integrado para construção de

casos de testes. Ele opera como plug-in do Firefox e provê interfaces amigáveis para o desenvolvimento e execução de suítes de testes (conjunto de testes).

● É uma ferramenta do tipo record-and-playback, ou seja, ela captura as ações executadas pelo testador e gera um script que permite a reexecução das ações feitas, e assim automatizando o teste.

Page 35: Testes Funcionais - Unidade IV

Ferramentas Selenium

● Selenium RC (Remote-Control). ● Possibilita uma maior flexibilidade ao testador,

permitindo a construção de lógicas de teste mais complexas, a partir do uso de uma linguagem de programação.

● Para isso, ele provê uma API (Application Programming Interface) e bibliotecas para cada uma das linguagens suportadas: HTML, Java, C#,, Python, e Ruby.

Page 36: Testes Funcionais - Unidade IV

Ferramentas Selenium

● Selenium WebDriver● Pode chamar o navegador atraves de driver nativo

da maquina local ou remota● É o substituto do Selenium RC● A inclusão do API WebDriver foi declarda pela

equioe do Selenium a mas recente grande mudança.

● “A chamada de um browser nativamente como um usuário local ou em uma máquina remota usando o Servidor Selenium marca um salto em frente em termos de automação browser”.

Page 37: Testes Funcionais - Unidade IV

Ferramentas Selenium

● Selenium-Grid ● Permite distribuir os testes em múltiplas máquinas,

reduzindo assim o tempo gasto na execução de uma suíte de testes. Ele é ideal para escalonar grandes suítes de testes ou suítes de testes que devem ser executadas em múltiplos ambientes.

● O Selenium-Grid atua executando múltiplas instâncias do Selenium-RC em paralelo de forma transparente, fazendo com que os testes não precisem se preocupar com a infraestrutura utilizada.

Page 38: Testes Funcionais - Unidade IV

Introdução a API

● Selenium permite realizar uma série de ações necessárias para execução de testes em páginas web, tais como, entrar com valores em campos da página, selecionar itens de uma lista de opções, clicar em botões, clicar em links e realizar asserções com base nos resultados exibidos da página.

● Os comandos que realizam essas ações são divididas em três grupos, veremos a seguir:

Page 39: Testes Funcionais - Unidade IV

Comandos

● Actions● São comandos que geralmente causam uma

mudança no estado da aplicação. Eles representam operações realizadas pelo usuário durante a execução de um sistema web, tais como o comando “click” que indica um clique em um determinado botão ou link. A maioria desses comandos pode conter o sufixo “AndWait”, o que indica que a ação fez uma chamada ao servidor e que o Selenium deve esperar a página carregar para executar o próximo passo.

Page 40: Testes Funcionais - Unidade IV

Comandos

● Accessors● Examinam o estado da aplicação e armazenam o

resultado em variáveis, como o comando “storeTitle” que armazena o titulo da página em uma variável determinada por parâmetro.

Page 41: Testes Funcionais - Unidade IV

Comandos

● Assertions ● São como os Accessors, mas verificaram se o estado da

aplicação está conforme o esperado. Todas as asserções do Selenium podem ser usadas de três modos:– “assert”, “verify” e “waitFor”.

● Para verificar a presença de um certo texto em um determinado local, por exemplo, pode-se usar o comando “assertText”, “verifyText” ou “waitForText”.

● Com o “assert”, se a verificação falhar o teste para, enquanto que com o “verify” a ferramenta acusa a falha mas o teste continua executando. Já no modo “waitFor”, que é muito útil para testar aplicações com Ajax, o Selenium espera o texto aparecer para prosseguir a execução.

Page 42: Testes Funcionais - Unidade IV

Comandos Específicos

● open: abre uma página usando uma URL que é fornecida como parâmetro;

● click/clickAndWait: executa o clique em um botão, link ou imagem;

● verifyTextPresent/assertTextPresent: verifica a presença de um texto em qualquer lugar da página;

● verifyText/assertText: verifica se um texto aparece em um determinado local;

Page 43: Testes Funcionais - Unidade IV

Comandos Específicos

● waitForPageToLoad : pausa uma execução do teste até que uma nova página seja carregada. Esse comando é chamado automaticamente pelos comandos com terminação “AndWait”;

● type: entra com um valor em um determinado campo da página;

● select: seleciona um elemento dentre uma lista de opções.

Page 44: Testes Funcionais - Unidade IV

Convenções

● Quanto aos parâmetros utilizados pelos comandos do Selenium, eles tipicamente são: ● i) uma identificação para algum elemento da

página; ● ii) um texto para verificar se ele aparece na página

ou para colocá-lo em algum campo da página.

● O número de parâmetros usados varia de acordo com o comando. Alguns exigem dois parâmetros, outros exigem somente um, e existem aqueles que não utilizam parâmetros.

Page 45: Testes Funcionais - Unidade IV

Exemplo de Script HTML

● <body>

● <table cellpadding="1" cellspacing="1" border="1">

● <thead>

<tr><td rowspan="1" colspan="3">New Test</td></tr>

</thead><tbody>

<tr>

<td>open</td>

<td>/</td>

<td></td>

● </tr>

● <tr>

Page 46: Testes Funcionais - Unidade IV

Exemplo de Script HTML

● <td>clickAndWait</td>● <td>link=Plugins</td>● <td></td>● </tr>● <tr>● <td>type</td>● <td>css=#pluginSearch &gt;

input[name=&quot;q&quot;]</td>● <td>appengine</td>● </tr>

Page 47: Testes Funcionais - Unidade IV

Exemplo de Script HTML

● <td>clickAndWait</td>

<td>css=input.searchButton</td>

<td></td>

● </tr>

● <tr>

<td>verifyTextPresent</td>

<td>Grails AppEngine plugin</td>

● <tr>

● <td></td>

● </tr>

● </tbody></table></body>

Page 48: Testes Funcionais - Unidade IV

Selenium-IDE

● Exemplos● Exercicio

Page 49: Testes Funcionais - Unidade IV

Livros

Page 50: Testes Funcionais - Unidade IV

Referências

● Santos Ismayle, Neto, Perdo. Automação de testes funcionais com o Selenium. 2008

● Correia, Simone Silva Alberto.Tecnicas de Contrução de Testes Funcionais. 2006

● Osherove, Roy. The art of unit testing : with examples in .NET. 2009

● Meszaros, Gerard. XUnit test patterns : refactoring test code. 2007

Page 51: Testes Funcionais - Unidade IV