Noções em Testes de Software 
e Introdução ao Selenium 
Webdriver
– É proibida a cópia e reprodução de 
qualquer parte do conteúdo desta 
apresentação incluindo, mas não limitado 
a, textos, imagens, gráficos e tabelas. Esta 
apresentação é protegida pelas leis de 
Copyright e são propriedade do Salto na 
Computação. 
– Quando houver permissão de uso deste 
material, é obrigatória a referência 
bibliográfica conforme as normas vigentes. 
Salto 
– Não é permitido modificar, copiar, 
guardar em banco de dados público, 
alugar, vender ou republicar qualquer 
parte desta apresentação, sem prévia 
permissão explícita do autor. 
na Computação
Salto 
na Computação 
Sandy Maciel 
@_sandymaciel 
br.linkedin.com/in/sandymaciel/ 
sandy@saltonacomputacao.com 
www.saltonacomputação.com 
Quem sou
Salto 
na Computação Agenda 
Noções Básicas em Teste de Software 
Princípios e Conceitos de Teste de Software 
Visão Geral do Processo de Teste 
Processo de Testes 
Introdução ao Selenium WebDriver 
Introdução 
> O que é Automação de Testes? 
> Ferramentas 
> Selenium 
Preparando o ambiente 
Conceitos básicos 
Exercícios
Salto 
Princípios e Conceitos Básicos 
na Computação
Salto 
Origem da expressão “bug” 
na Computação 
Em 1947, os cientistas estavam testando o computador Mark II, aquele que ocupava 
uma sala imensa e operava com centenas de válvulas enormes, quando a máquina 
de repente parou de funcionar. Foram pesquisar a causa e encontraram um inseto 
impedindo que um dos contatos funcionasse. Este foi o primeiro bug encontrado.
Salto 
Erro, Falha ou Defeito? 
na Computação 
Erro – Engano cometido por seres humanos 
Falha – Resultado ou manifestação de um ou mais 
defeitos 
Defeito – Resultado de um erro encontrado num código 
ou num documento (bug)
Salto 
Quando um bug ocorre? na Computação
Salto 
Teste de Software? 
na Computação 
Teste de software é o processo formal de avaliar 
um sistema ou componente de um sistema por 
meios manuais ou automáticos para verificar se ele 
satisfaz os requisitos especificados [IEEE 729, 
1983].
Salto 
. Por que definir um procensasCoo mdpeut taeçãsotes? 
A execução dos testes e a documentação são padronizadas, 
permitindo planejamento e comparação de eficácia entre projetos. 
Os papéis e responsabilidades são definidos de forma clara. 
Os testes alcançam a eficácia e o resultado esperado.
Salto 
. Qual o objetivo do ntaeCsomtapudtaoçãro? 
Investigar o software, conforme o processo de teste utilizado, a 
fim de garantir que a qualidade do software e os requisitos 
implementados estão de acordo com o solicitado pelo cliente. 
Técnico responsável pela execução dos casos e scripts de teste
Salto 
. Papéis em Teste de Software na Computação 
Testador 
Arquiteto de Teste 
Analista de Teste 
Auditor da QA 
Automatizador de 
Gerente de Teste 
Teste 
Líder de Teste 
Engenheiro de Teste
Salto 
. Ciclo de vida de desennavCoomlvpuimtaçeãonto 
O processo usado para criar um software, desde a sua concepção inicial até a sua entrega 
final, é chamado de ciclo de vida. 
Modelos de Ciclo de Vida de desenvolvimento de software: 
•Big-bang (cria e conserta) 
•Cascata 
•Espiral 
•Incremental e iterativo 
•RUP
Salto 
Ciclo de vida de desenvolvimento 
na Computação 
Big-Bang
Salto 
Ciclo de vida de desennavCoomlvpuimtaçeãonto 
Modelo Cascata
Salto 
Ciclo de vida de desennavCoomlvpuimtaçeãonto 
Modelo em Espiral
Salto 
Ciclo de vida de desennavCoomlvpuimtaçeãonto 
Modelo Incremental e Iterativo
Salto 
Ciclo de vida de desennavCoomlvpuimtaçeãonto 
RUP
Salto 
Ciclo de vida de desennavCoomlvpuimtaçeãonto 
O profissional de teste deve se adaptar ao 
modelo adotado pela empresa e, daí, aplicar, da 
melhor maneira as técnicas de teste de software.
Salto 
Processo de Teste – Uma visão geral 
na Computação
Salto 
na Computação Processo de Teste 
Testes podem ser considerados como m projeto? 
“ Um empreendimento temporário, planejado, 
executado e controlado, com objetivo de criar um 
produto ou serviço único.” PMBOK , 2000 - PMI
Salto 
na Computação Processo de Teste 
 Testar é um exercício de gerência de risco 
 Treinamento em teste reduz custos a longo prazo 
 As estimativas de teste devem ser baseadas no risco do negócio 
 A estratégia de teste deve ser elaborada através de um trabalho conjunto entre as 
áreas envolvidas 
 É melhor e mais barato encontrar um defeito nas primeiras fases do que em produção
Salto 
na Computação Regra 10 de Myers
Salto 
na Computação Processo de Teste 
Um software é considerado com qualidade quando atende as 
categorias da qualidade - ISO/IEC 9126-1
Salto 
na Computação Planejar 
 Adaptar processo de teste para o Projeto 
 Planejar testes para o Projeto 
 Definir a estratégia de teste 
 Plano de Teste 
Ambiente de Teste 
 Identificar Riscos do Projeto de Teste 
Planejar 
Testes
Salto 
na Computação Esforço
Salto 
na Computação Por que planejar? 
Para planejarmos os testes temos que 
conhecer os requisitos do projeto a ser 
desenvolvido
Salto 
na Computação Planejar 
REQUISITO 
Definição de 
uma característica, atributo, habilidade ou 
qualidade que um sistema (ou qualquer um de 
seus módulos e subrotinas) deve 
necessariamente prover para atender aos 
seus usuários
Salto 
na Computação Para elaborar o teste, devemos saber: 
O que vamos testar? 
Quando vamos testar? 
Como iremos testar?
Salto 
na Computação Estratégia de Teste 
Nos fornece um roteiro em que descreve os passos a 
serem conduzidos como parte do teste 
Objetivos: Determinar o que, quando e como iremos testar. 
O que define: Ferramentas, técnicas e critérios de conclusão.
Salto 
Fatores de Qualidade 
na Computação 
Correção 
Confiabilidade 
Eficiência 
Integridade 
Usabilidade 
Manutenabilidade 
Testabilidade 
Flexibilidade 
Reusabilidade 
Interoperabilidade 
Portabilidade
Salto 
Fatores de Qualidade x nIaSOCo/mIpEuCta-ç9ã1o26 
Não confunda com a norma 
ISO-9126 que especifica as 
características de qualidade 
que todo software deve ter.
Salto 
na Computação ISO/IEC 9126-1
Salto 
Categorias de Qualidade segundo o Modelo FURPS + 
na Computação
Salto 
Dimensões do TesntaeCo(mIpEuEtaEçã)o
Salto 
Estágios ou Níveis na Computação 
de Teste 
• Teste de Unidade: Estágio mais baixo da escala de teste, sendo aplicado nos menores 
componentes de código criados, visando garantir que estes atendem às especificações 
funcionais e de arquitetura. Normalmente feito pelo programador. 
• Teste de Iteração ou Integração: Teste de sistema ao término de cada iteração, dentro de um 
ambiente operacional controlado, para validar a exatidão e perfeição na execução de suas 
funções, referentes aos casos de uso da iteração. Normalmente feito pelo analista de sistemas 
para um módulo ou conjunto de programas. 
• Teste de Sistema: Execução do sistema como um todo, dentro de um ambiente operacional 
controlado, para validar a exatidão e perfeição na execução de suas funções, acompanhando 
cenários sistêmicos elaborados pelo profissional de requisitos do projeto. Normalmente feito 
pelo analista de testes (caso de testes) em ambiente de testes. 
• Teste de Aceitação :É a última ação de teste antes da implantação do software, sendo de 
responsabilidade do cliente. O objetivo deste teste é verificar se o software está pronto e pode 
ser usado por usuários finais para executar as funções e tarefas para as quais foi construído. 
Normalmente feito pelo usuário em ambiente de homologação.
Salto 
Dimensões do TesntaeCo(mIpEuEtaEçã)o
Salto 
na Computação Tipos de Teste - Usabilidade 
Teste Interface: Verifica se a navegabilidade e os objetivos da tela funcionam como 
especificados e se atendem da melhor forma ao usuário. 
Teste de Usabilidade: Tem por objetivo verificar a facilidade que a aplicação possui de 
ser claramente compreendido e manipulado pelo usuário.
Salto 
Tipos de Teste - ConfianabCiloimdpaudtaeção 
Teste Integridade: Testes destinados a avaliar a robustez do objetivo do teste (resistência a 
falhas) e a compatibilidade técnica em relação a linguagem, sintaxe e utilização de recursos 
Teste de Estrutura: Testes destinados a avaliar a adequação do objetivo do teste em relação 
a seu design e sua formação. 
Teste de Estresse: Tipo de teste de confiabilidade destinado a avaliar como o sistema 
responde em condições anormais. 
Smoke Test: Exercita o sistema em uma única passagem, normalmente utilizando script de 
execução automática, não devendo ser exaustivo, mas capaz de expor os maiores 
problemas. O Smoke Test é executado após a construção de cada nova versão (.
Salto 
Tipos de Teste - Confiabilidade 
na Computação 
Teste de avaliação de desempenho ou Benchmark: Tipo de teste que compara o 
desempenho de um objetivo do teste (novo ou desconhecido) a um sistema e uma 
carga de trabalho de referência conhecidos. 
Teste de contenção: Testes destinados a verificar se os objetivos do teste podem lidar 
de forma aceitável com as demandas de vários atores no mesmo recurso (registros de 
dados, memória, etc.). 
Teste de carga: Tipo de teste usado para validar e avaliar a aceitabilidade dos limites 
operacionais de um sistema de acordo com cargas de trabalho variáveis, enquanto o 
sistema em teste permanece constante. Geralmente, as medições são tomadas com 
base na taxa de transferência de dados da carga de trabalho e no tempo de resposta 
da transação alinhado
Salto 
Tipos de Teste - SuponartCaombpiultiadçaãode 
Teste de configuração: Teste destinado a garantir que o objetivo do teste funcione 
conforme o esperado em diferentes configurações de hardware e/ou software. Esse 
teste também pode ser implementado como um teste de desempenho do sistema. 
Teste de instalação: Teste destinado a garantir que o objetivo do teste seja instalado 
conforme o esperado em diferentes configurações de hardware e/ou software e sob 
diferentes condições (como no caso de espaço insuficiente em disco ou interrupção de 
energia). Esse teste é implementado e executado em aplicativos e sistemas.
Salto 
na Computação Dimensões do Teste (IEEE)
Salto 
na Computação Técnicas de Teste 
Estrutural 
Funcional 
Assegurar a cobertura de toda a 
estrutura implementada 
Assegurar que os requisitos foram 
atendido
Salto 
na Computação Processo de Teste – Plano de Teste 
O Plano de Teste descreve todos os testes requeridos, os 
recursos e prazos necessários. Deve estar alinhado com a 
Estratégia de Teste
Salto 
Processo de Teste – Plano de Teste 
na Computação 
Padrão IEEE 829 para elaboração de Planos de Testes: 
1.Identificador do Plano de Testes 
2.Introdução 
3.Itens de teste 
4.Módulos ou features do software a serem testados 
5.Módulos que não serão testados 
6.Abordagem do teste (métricas, metodologias, ferramentas, etc.) 
7.Critério de identificação dos 
8.Critérios de interrupção ou finalização dos testes 
9.Documentação de teste 
10. Identificação de quais testes serão necessários e como serão executados (stress, 
performance, ...) 
11. Necessidades de equipamentos e softwares 
12. Responsabilidades da equipe envolvida 
13. Definição da equipe de teste e das suas necessidades 
14. Cronograma (ver roteiro de testes) 
15. Riscos e contingências (ver Estratégia de testes) 
16. Critérios de aprovação dos testes pelas áreas envolvidas
Salto 
na Computação Ambiente de Teste 
“Não é apenas uma configuração de hardware, mas toda estrutura onde o teste será 
executado” Fonte: Base de Conhecimento em Teste de Software
Salto 
na Computação Risco no projeto de teste 
Risco é algum evento no futuro cuja ocorrência poderá causar 
algum tipo de problema, no caso, ao projeto de teste de software. 
Um risco pode ser dividido da seguinte forma: 
•Sintoma 
•Fonte 
•Consequência
Salto 
Risco no projetonadCoem ptuteaçsãtoe 
Devido a uma <fonte>, o <sintoma> está ocorrendo, 
podendo causar <consequências>. 
Sintoma: o que pode indicar o problema 
Fonte: o que está causando o sintoma 
Consequência: resultado dos sintomas
Salto 
na Computação Projetar 
Versionameto 
Estimativas de Teste 
Cenários de Teste 
Dados de Teste 
Elaborar Casos de Teste 
Acompanhar Risco do Projeto 
Projetar 
Testes
Salto 
Gerência de ConfigurançaãCoom(pGutCaçSã)o 
Controle de Versionamento 
–Registro e controle das diversas versões geradas 
–Garantir que o que foi testado é o que de fato será entregue 
Controle de Mudanças 
–Definição de prioridades baseadas na severidade do problema encontrado, no esforço 
para corrigi-lo, no impacto no cronograma e no esforço para retestar 
Auditoria das Configurações 
- Quem fez a mudança e como podemos reproduzir a mudança?
Salto 
Gerência de Configuração (GCS) 
na Computação 
Controle de Versão – Algumas Ferramentas
Salto 
na Computação 
O que? Onde? 
Quando? Como? 
Processo de Teste - Projetar 
Elaborar Casos de Testes 
Configurações 
Iteração 
Caso de Teste como 
motivador do teste 
Requisitos 
Implementação
Salto 
na Computação 
Algumas definições 
•Casos de Testes são derivados de uma especificação formal que 
define os requisitos 
•Caso de Teste é uma especificação detalhada do teste, composta 
por conj. de entradas, condições de execução e resultados 
esperados 
•Cenário de Teste é uma história hipotética usada para ajudar as 
pessoas a solucionar um problema complexo, recriando ou 
visualizando um caminho a seguir. 
•Dentro de um cenário de testes podemos ter um ou mais casos de 
teste
Salto 
Métodos de Elaboração de Casos de Teste 
na Computação 
Step-by-Step – Identificar um caso de teste para cada requisito e considerar 
entradas e saídas, entradas especiais, entradas inválidas, etc. 
Causa-efeito – Faz-se uma tabela de causa e efeito. Nela são decididos as 
combinações mais relevantes a serem testadas. 
PairWise – Cada par de parâmetros seja coberto por um caso de teste. 
Classes de equivalência – É construída de modo agrupar os casos de teste para 
os quais o comportamento do sistema seja o mesmo; 
Análise de valores limítrofes – Testar valores limites do domínio de entrada;
Salto 
Desafios para um bom Caso de Teste 
na Computação 
•Mudança de Requisito 
•Mudança de Cronograma 
•Rotatividade da Equipe
Salto 
na Computação Executar 
Executar Casos de Teste 
Gerar Resultado de Teste (log) 
Acompanhar Defeitos 
Executar Re-teste 
Executar Testes “especiais” 
Executar 
Testes
Salto 
na Computação 
“A execução poderá consumir 40% ou menos do tempo total do 
esforço de teste” Martin Pol 
Frequentemente os testes são executados o mais rápido possível 
Processo de Teste - Executar 
Executar
Salto 
na Computação Executar 
Fluxo de Execução 
“A etapa de execução dos testes, dentro do ciclo de vida dos testes, 
para que seja bem sucedida vai depender de tudo o que foi feito 
anteriormente e que servirá de base para o cumprimento desta 
etapa” 
Fonte: Base de Conhecimento em Teste de Software.
Salto 
na Computação 
Fluxo de Execução
Salto 
na Computação 
Mas… Quando os testes 
terminam? 
Como saber o momento adequado para finalizar os teste?
Salto 
na Computação
Salto 
Gerência dnea CDomepuftaeçãiotos
Salto 
Gerência de na Computação 
Defeitos 
Ferramentas 
 Jira 
Bugzilla 
Mantis 
Rational ClearQuest 
TestDirector 
TrackRecord 
e-Manager Enterprise
Salto 
na Computação Custo do Bug
Salto 
na Computação
Salto 
na Computação
Salto 
na Computação 
Importância do Defeito ($)
Salto 
na Computação 
Custo da correção de um defeito após 
encontrá-lo
Salto 
na Computação 
Identificação do Defeito
Salto 
na Computação 
Reportar Defeito
Salto 
na Computação 
Reportar Defeito
Salto 
na Computação 
Severidade X Prioridade
Salto 
na Computação 
Reportar Defeito 
Graus altos de severidade 
correspondem também a graus 
altos de prioridade?
Salto 
na Computação
Salto 
Analisar RenasCuomltpautdaçoão
Salto 
na Computação
Salto 
Introdução à automação 
na Computação
Salto 
O que são testes autonma Caotmizpautdaçoãso? 
São programas ou scripts que exercitam determinadas funcionalidades do 
software e fazem verificações automáticas nos resultados obtidos. 
Ou seja, é um teste, que é executado automaticamente, onde se é conhecido 
todo o cenário, ações que devem ser realizadas e os resultados esperados. 
Algumas das principais vantagens dos testes automatizados são: capacidade de 
reprodutibilidade e velocidade na execução. 
A automação de testes é uma área em franca expansão, no 
entanto, é uma área ainda muito imatura. Muitos dos sucessos nos 
projetos de automação de testes são decorrentes de processos 
empíricos de tentativa e erro.
Salto 
AUTOMATIZADOnSa Computação 
Ajudam na documentação 
Cobrem muitos casos 
Segurança na manutenção 
Rodam rápido
Salto 
Automatizando testes vonacêCocmopuntasçeãgoue: 
Simular grandes quantidades de dados ou usuários. 
Medir o tempo de execução de certas partes do programa. 
Encontrar gargalos.
Salto 
na Computação ATENÇÃO
Salto 
O que é automanatiCzoamrpu?tação 
Testes automatizados são, em geral, utilizados para 
testes de regressão. 
Ou seja, testes que devem ser 
frequentemente executados e/ou demandam muito 
tempo para execução devem ser automatizados.
Salto 
Melhores práticas na AutomnaaCçoãmop udteaç Tãeoste 
 Automação não é um processo de teste! 
 Automatize os testes críticos primeiro 
 Incorpore testabilidade ao aplicativos 
 As ferramentas de automação de testes 
também têm defeito!
Salto 
Como desenvolver um testenaauCotmomputaatçizãaodo? 
1. O primeiro passo para se desenvolver um teste automatizado é selecionar o 
requisito ou funcionalidade alvo e, com base nas especificações, pensar e/ou 
documentar os possíveis cenários de testes. 
2. A seguir, deve-se selecionar um dos cenários e elaborar o caso de testes, onde 
será especificado o passo-a-passo para a execução do teste. 
3. O ideal é que para cada teste automatizado, tenha-se um caso de teste como 
base. 
4. Após a especificação do caso de testes, é hora de criar os scripts de testes. Para 
isso, precisamos utilizar uma ferramenta de automação de testes.
Salto 
Que ferramentas utilizar? 
na Computação
Salto 
na Computação
Salto 
Selenium WebDriver 
na Computação
Salto 
Selenium??na Computação 
• O Selenium reúne um conjunto de ferramentas usadas para a criação de scripts de 
automação de testes de regressão/funcionais para aplicações Web. 
• Os testes podem ser executados em qualquer navegador, desde que suporte 
Javascript.
Salto 
Selenium??na Computação 
O Selenium possui 4 módulos: 
– Selenium IDE : Ambiente de desenvolvimento integrado para 
scripts selenium 
– Selenium RC : Teste web em qualquer linguagem de 
programação 
– Selenium WebDriver : Sucessor do RC, a grande diferença é que 
ele não necessita de um servidor 
– Selenium Grid : É o selenium server (via terminal)
Salto 
WebDriver?n?a Computação 
1. API 
2. Pode ser desenvolvido em várias liguagens 
3. Roda em vários browsers 
4. Simula um usuário
Salto 
Preparando o Ambiente 
na Computação
Salto 
Preparando o AmnbaiCeonmtpeutação 
Usaremos a API em Java e o Eclipse como IDE 
1 – Baixe o Eclipse IDE:
Salto 
Preparando o AmnbaiCeonmtpeutação 
2 – Baixe o jar do Selenium Server
Salto 
na Computação Preparando o Ambiente 
3 – Baixe a API em Java
Salto 
na Computação Preparando o Ambiente 
4 – Coloque os jars baixado em uma única pasta dentro de C:
Salto 
na Computação Preparando o Ambiente 
5 – Abra o eclipse e clique em File > New > Java Project
Salto 
na Computação Preparando o Ambiente 
6 – Nomear projeto
Salto 
Primeiros Passos - Automação 
na Computação
Salto 
na Computação 
Quais conhecimentos mínimos precisamos ter para 
automatizar uma página web? 
Abrir Navegador 
Ler URL 
Guardar textos da página 
Clicar em links 
Clicar em botões 
Preencher Campos
Salto 
na Computação 
Essas ações são divididas como: 
Sincronização 
Navegação 
Interrogação 
Manipulação
Salto 
Primeiros Passos - Junit 
na Computação
Salto 
na Computação 
1. Usaremos o Junit, que é um framework de testes java, ele irá nos auxilixar 
nos testes pois apartir da notação @Test 
2. Sempre devemos identicar um método público com o @Test
Salto 
na Computação 
O Junit também nos ajuda na utilização de Assertions ( assegurar informações). 
•assertTrue 
•assertEquals 
asserTrue ( condição) 
asserTrue ( mensagem,condição) 
assertEquals(esperado, obtido) 
assertEquals(mensagem, 
esperado, obtido)
Salto 
Primeiros Passos – Selenium WebDriver 
na Computação
Salto 
na Computação 
• Sempre devemos passar o browser que utilizaremos, no nosso caso usaremos o 
Firefox ( nativo ) 
• Usaremos a classe WebDriver como ponto de partida 
1. Instanciar o browser
Salto 
na Computação 
Métodos de Navegação 
get ---- abre a página 
to(url) --- para uma url 
refresh() --- atualiza a página 
forward() --- avança 
back() --- volta
Salto 
na Computação 
Métodos de Interrogação 
Utilizando o objeto driver 
getTitle() 
getCurrentURL() 
getPageSource() 
findElement() 
findElements() 
http://www.w3.org/community/webed/wiki/HTML/Elements
Salto 
na Computação 
Algumas estratégias utilizadas para interrogar 
elementos: 
ID 
CSSSELECTOR 
NAME 
XPATH 
LINKNAME 
CLASSNAME 
… 
driver.findElement(By.cssSelector(“.class”));
Salto 
na Computação 
driver.findElement(By.id(“id”));" 
O que eu quero fazer 
Como eu quero fazer 
elemento 
Selenium WebDriver - ID
Salto 
Selenium WebDriver – CnSaSC Somelpeucttaoçãro 
Localiza o elemento utilizando seu estilo 
elemento 
#id 
.classe 
elemento[atributo='valor’] 
elemento > elemento 
driver.findElement(By.cssSelector(“.class”));"
Salto 
Selenium WebDrivern–a CXopmaptuhtação 
driver.findElement(By.xpath(//*[@id="div_pass_background"]
Salto 
na Computação Selenium WebDriver – Manipulação 
click() 
• clear() 
• sendKeys(String) 
• submit() 
driver.findElement(By.xpath(//*[@id="div_pass_background"]
Certificações 
•CBTS/ALATS http://www.alats.org.br/portal 
•CTFL/ISTQB - http://www.bstqb.org.br/
Referências 
•Myers, Glenford J. The Art of Software Testing. Ed. Wiley, 2004. 
•Whittaker, J.A. “What Is Software Testing? And Why Is It So 
Hard? ”. IEEE Software, Jan/Fev 2000, p. 70-79. 
•Sembugs.com 
•www.saltonacomputacao.com 
•Base de conhecimento em testes de software
Referências 
•Myers, Glenford J. The Art of Software Testing. Ed. Wiley, 2004. 
•Whittaker, J.A. “What Is Software Testing? And Why Is It So 
Hard? ”. IEEE Software, Jan/Fev 2000, p. 70-79. 
•Sembugs.com 
•www.saltonacomputacao.com 
•Base de conhecimento em testes de software 
•http://www.w3schools.com/cssref/css_selectors.asp 
•http://net.tutsplus.com/tutorials/html-css-techniques/the-30- 
css-selectors-you-must-memorize/ 
•Eliasnogueira.com 
•http://www.devmedia.com.br/artigo-engenharia-de-software-5- 
melhores-praticas-na-automacao-de-testes/10249
Salto 
na Computação
Salto 
na Computação 
Contatos 
@_sandymaciel 
br.linkedin.com/in/sandymaciel/ 
sandy@saltonacomputacao.com 
www.saltonacomputação.com
Salto 
na Computação 
OBRIGADA 

Noções em teste de software e introdução a automação

  • 1.
    Noções em Testesde Software e Introdução ao Selenium Webdriver
  • 2.
    – É proibidaa cópia e reprodução de qualquer parte do conteúdo desta apresentação incluindo, mas não limitado a, textos, imagens, gráficos e tabelas. Esta apresentação é protegida pelas leis de Copyright e são propriedade do Salto na Computação. – Quando houver permissão de uso deste material, é obrigatória a referência bibliográfica conforme as normas vigentes. Salto – Não é permitido modificar, copiar, guardar em banco de dados público, alugar, vender ou republicar qualquer parte desta apresentação, sem prévia permissão explícita do autor. na Computação
  • 3.
    Salto na Computação Sandy Maciel @_sandymaciel br.linkedin.com/in/sandymaciel/ sandy@saltonacomputacao.com www.saltonacomputação.com Quem sou
  • 4.
    Salto na ComputaçãoAgenda Noções Básicas em Teste de Software Princípios e Conceitos de Teste de Software Visão Geral do Processo de Teste Processo de Testes Introdução ao Selenium WebDriver Introdução > O que é Automação de Testes? > Ferramentas > Selenium Preparando o ambiente Conceitos básicos Exercícios
  • 5.
    Salto Princípios eConceitos Básicos na Computação
  • 6.
    Salto Origem daexpressão “bug” na Computação Em 1947, os cientistas estavam testando o computador Mark II, aquele que ocupava uma sala imensa e operava com centenas de válvulas enormes, quando a máquina de repente parou de funcionar. Foram pesquisar a causa e encontraram um inseto impedindo que um dos contatos funcionasse. Este foi o primeiro bug encontrado.
  • 7.
    Salto Erro, Falhaou Defeito? na Computação Erro – Engano cometido por seres humanos Falha – Resultado ou manifestação de um ou mais defeitos Defeito – Resultado de um erro encontrado num código ou num documento (bug)
  • 8.
    Salto Quando umbug ocorre? na Computação
  • 9.
    Salto Teste deSoftware? na Computação Teste de software é o processo formal de avaliar um sistema ou componente de um sistema por meios manuais ou automáticos para verificar se ele satisfaz os requisitos especificados [IEEE 729, 1983].
  • 10.
    Salto . Porque definir um procensasCoo mdpeut taeçãsotes? A execução dos testes e a documentação são padronizadas, permitindo planejamento e comparação de eficácia entre projetos. Os papéis e responsabilidades são definidos de forma clara. Os testes alcançam a eficácia e o resultado esperado.
  • 11.
    Salto . Qualo objetivo do ntaeCsomtapudtaoçãro? Investigar o software, conforme o processo de teste utilizado, a fim de garantir que a qualidade do software e os requisitos implementados estão de acordo com o solicitado pelo cliente. Técnico responsável pela execução dos casos e scripts de teste
  • 12.
    Salto . Papéisem Teste de Software na Computação Testador Arquiteto de Teste Analista de Teste Auditor da QA Automatizador de Gerente de Teste Teste Líder de Teste Engenheiro de Teste
  • 13.
    Salto . Ciclode vida de desennavCoomlvpuimtaçeãonto O processo usado para criar um software, desde a sua concepção inicial até a sua entrega final, é chamado de ciclo de vida. Modelos de Ciclo de Vida de desenvolvimento de software: •Big-bang (cria e conserta) •Cascata •Espiral •Incremental e iterativo •RUP
  • 14.
    Salto Ciclo devida de desenvolvimento na Computação Big-Bang
  • 15.
    Salto Ciclo devida de desennavCoomlvpuimtaçeãonto Modelo Cascata
  • 16.
    Salto Ciclo devida de desennavCoomlvpuimtaçeãonto Modelo em Espiral
  • 17.
    Salto Ciclo devida de desennavCoomlvpuimtaçeãonto Modelo Incremental e Iterativo
  • 18.
    Salto Ciclo devida de desennavCoomlvpuimtaçeãonto RUP
  • 19.
    Salto Ciclo devida de desennavCoomlvpuimtaçeãonto O profissional de teste deve se adaptar ao modelo adotado pela empresa e, daí, aplicar, da melhor maneira as técnicas de teste de software.
  • 20.
    Salto Processo deTeste – Uma visão geral na Computação
  • 21.
    Salto na ComputaçãoProcesso de Teste Testes podem ser considerados como m projeto? “ Um empreendimento temporário, planejado, executado e controlado, com objetivo de criar um produto ou serviço único.” PMBOK , 2000 - PMI
  • 22.
    Salto na ComputaçãoProcesso de Teste  Testar é um exercício de gerência de risco  Treinamento em teste reduz custos a longo prazo  As estimativas de teste devem ser baseadas no risco do negócio  A estratégia de teste deve ser elaborada através de um trabalho conjunto entre as áreas envolvidas  É melhor e mais barato encontrar um defeito nas primeiras fases do que em produção
  • 23.
    Salto na ComputaçãoRegra 10 de Myers
  • 24.
    Salto na ComputaçãoProcesso de Teste Um software é considerado com qualidade quando atende as categorias da qualidade - ISO/IEC 9126-1
  • 25.
    Salto na ComputaçãoPlanejar  Adaptar processo de teste para o Projeto  Planejar testes para o Projeto  Definir a estratégia de teste  Plano de Teste Ambiente de Teste  Identificar Riscos do Projeto de Teste Planejar Testes
  • 26.
  • 27.
    Salto na ComputaçãoPor que planejar? Para planejarmos os testes temos que conhecer os requisitos do projeto a ser desenvolvido
  • 28.
    Salto na ComputaçãoPlanejar REQUISITO Definição de uma característica, atributo, habilidade ou qualidade que um sistema (ou qualquer um de seus módulos e subrotinas) deve necessariamente prover para atender aos seus usuários
  • 29.
    Salto na ComputaçãoPara elaborar o teste, devemos saber: O que vamos testar? Quando vamos testar? Como iremos testar?
  • 30.
    Salto na ComputaçãoEstratégia de Teste Nos fornece um roteiro em que descreve os passos a serem conduzidos como parte do teste Objetivos: Determinar o que, quando e como iremos testar. O que define: Ferramentas, técnicas e critérios de conclusão.
  • 31.
    Salto Fatores deQualidade na Computação Correção Confiabilidade Eficiência Integridade Usabilidade Manutenabilidade Testabilidade Flexibilidade Reusabilidade Interoperabilidade Portabilidade
  • 32.
    Salto Fatores deQualidade x nIaSOCo/mIpEuCta-ç9ã1o26 Não confunda com a norma ISO-9126 que especifica as características de qualidade que todo software deve ter.
  • 33.
    Salto na ComputaçãoISO/IEC 9126-1
  • 34.
    Salto Categorias deQualidade segundo o Modelo FURPS + na Computação
  • 35.
    Salto Dimensões doTesntaeCo(mIpEuEtaEçã)o
  • 36.
    Salto Estágios ouNíveis na Computação de Teste • Teste de Unidade: Estágio mais baixo da escala de teste, sendo aplicado nos menores componentes de código criados, visando garantir que estes atendem às especificações funcionais e de arquitetura. Normalmente feito pelo programador. • Teste de Iteração ou Integração: Teste de sistema ao término de cada iteração, dentro de um ambiente operacional controlado, para validar a exatidão e perfeição na execução de suas funções, referentes aos casos de uso da iteração. Normalmente feito pelo analista de sistemas para um módulo ou conjunto de programas. • Teste de Sistema: Execução do sistema como um todo, dentro de um ambiente operacional controlado, para validar a exatidão e perfeição na execução de suas funções, acompanhando cenários sistêmicos elaborados pelo profissional de requisitos do projeto. Normalmente feito pelo analista de testes (caso de testes) em ambiente de testes. • Teste de Aceitação :É a última ação de teste antes da implantação do software, sendo de responsabilidade do cliente. O objetivo deste teste é verificar se o software está pronto e pode ser usado por usuários finais para executar as funções e tarefas para as quais foi construído. Normalmente feito pelo usuário em ambiente de homologação.
  • 37.
    Salto Dimensões doTesntaeCo(mIpEuEtaEçã)o
  • 38.
    Salto na ComputaçãoTipos de Teste - Usabilidade Teste Interface: Verifica se a navegabilidade e os objetivos da tela funcionam como especificados e se atendem da melhor forma ao usuário. Teste de Usabilidade: Tem por objetivo verificar a facilidade que a aplicação possui de ser claramente compreendido e manipulado pelo usuário.
  • 39.
    Salto Tipos deTeste - ConfianabCiloimdpaudtaeção Teste Integridade: Testes destinados a avaliar a robustez do objetivo do teste (resistência a falhas) e a compatibilidade técnica em relação a linguagem, sintaxe e utilização de recursos Teste de Estrutura: Testes destinados a avaliar a adequação do objetivo do teste em relação a seu design e sua formação. Teste de Estresse: Tipo de teste de confiabilidade destinado a avaliar como o sistema responde em condições anormais. Smoke Test: Exercita o sistema em uma única passagem, normalmente utilizando script de execução automática, não devendo ser exaustivo, mas capaz de expor os maiores problemas. O Smoke Test é executado após a construção de cada nova versão (.
  • 40.
    Salto Tipos deTeste - Confiabilidade na Computação Teste de avaliação de desempenho ou Benchmark: Tipo de teste que compara o desempenho de um objetivo do teste (novo ou desconhecido) a um sistema e uma carga de trabalho de referência conhecidos. Teste de contenção: Testes destinados a verificar se os objetivos do teste podem lidar de forma aceitável com as demandas de vários atores no mesmo recurso (registros de dados, memória, etc.). Teste de carga: Tipo de teste usado para validar e avaliar a aceitabilidade dos limites operacionais de um sistema de acordo com cargas de trabalho variáveis, enquanto o sistema em teste permanece constante. Geralmente, as medições são tomadas com base na taxa de transferência de dados da carga de trabalho e no tempo de resposta da transação alinhado
  • 41.
    Salto Tipos deTeste - SuponartCaombpiultiadçaãode Teste de configuração: Teste destinado a garantir que o objetivo do teste funcione conforme o esperado em diferentes configurações de hardware e/ou software. Esse teste também pode ser implementado como um teste de desempenho do sistema. Teste de instalação: Teste destinado a garantir que o objetivo do teste seja instalado conforme o esperado em diferentes configurações de hardware e/ou software e sob diferentes condições (como no caso de espaço insuficiente em disco ou interrupção de energia). Esse teste é implementado e executado em aplicativos e sistemas.
  • 42.
    Salto na ComputaçãoDimensões do Teste (IEEE)
  • 43.
    Salto na ComputaçãoTécnicas de Teste Estrutural Funcional Assegurar a cobertura de toda a estrutura implementada Assegurar que os requisitos foram atendido
  • 44.
    Salto na ComputaçãoProcesso de Teste – Plano de Teste O Plano de Teste descreve todos os testes requeridos, os recursos e prazos necessários. Deve estar alinhado com a Estratégia de Teste
  • 45.
    Salto Processo deTeste – Plano de Teste na Computação Padrão IEEE 829 para elaboração de Planos de Testes: 1.Identificador do Plano de Testes 2.Introdução 3.Itens de teste 4.Módulos ou features do software a serem testados 5.Módulos que não serão testados 6.Abordagem do teste (métricas, metodologias, ferramentas, etc.) 7.Critério de identificação dos 8.Critérios de interrupção ou finalização dos testes 9.Documentação de teste 10. Identificação de quais testes serão necessários e como serão executados (stress, performance, ...) 11. Necessidades de equipamentos e softwares 12. Responsabilidades da equipe envolvida 13. Definição da equipe de teste e das suas necessidades 14. Cronograma (ver roteiro de testes) 15. Riscos e contingências (ver Estratégia de testes) 16. Critérios de aprovação dos testes pelas áreas envolvidas
  • 46.
    Salto na ComputaçãoAmbiente de Teste “Não é apenas uma configuração de hardware, mas toda estrutura onde o teste será executado” Fonte: Base de Conhecimento em Teste de Software
  • 47.
    Salto na ComputaçãoRisco no projeto de teste Risco é algum evento no futuro cuja ocorrência poderá causar algum tipo de problema, no caso, ao projeto de teste de software. Um risco pode ser dividido da seguinte forma: •Sintoma •Fonte •Consequência
  • 48.
    Salto Risco noprojetonadCoem ptuteaçsãtoe Devido a uma <fonte>, o <sintoma> está ocorrendo, podendo causar <consequências>. Sintoma: o que pode indicar o problema Fonte: o que está causando o sintoma Consequência: resultado dos sintomas
  • 49.
    Salto na ComputaçãoProjetar Versionameto Estimativas de Teste Cenários de Teste Dados de Teste Elaborar Casos de Teste Acompanhar Risco do Projeto Projetar Testes
  • 50.
    Salto Gerência deConfigurançaãCoom(pGutCaçSã)o Controle de Versionamento –Registro e controle das diversas versões geradas –Garantir que o que foi testado é o que de fato será entregue Controle de Mudanças –Definição de prioridades baseadas na severidade do problema encontrado, no esforço para corrigi-lo, no impacto no cronograma e no esforço para retestar Auditoria das Configurações - Quem fez a mudança e como podemos reproduzir a mudança?
  • 51.
    Salto Gerência deConfiguração (GCS) na Computação Controle de Versão – Algumas Ferramentas
  • 52.
    Salto na Computação O que? Onde? Quando? Como? Processo de Teste - Projetar Elaborar Casos de Testes Configurações Iteração Caso de Teste como motivador do teste Requisitos Implementação
  • 53.
    Salto na Computação Algumas definições •Casos de Testes são derivados de uma especificação formal que define os requisitos •Caso de Teste é uma especificação detalhada do teste, composta por conj. de entradas, condições de execução e resultados esperados •Cenário de Teste é uma história hipotética usada para ajudar as pessoas a solucionar um problema complexo, recriando ou visualizando um caminho a seguir. •Dentro de um cenário de testes podemos ter um ou mais casos de teste
  • 54.
    Salto Métodos deElaboração de Casos de Teste na Computação Step-by-Step – Identificar um caso de teste para cada requisito e considerar entradas e saídas, entradas especiais, entradas inválidas, etc. Causa-efeito – Faz-se uma tabela de causa e efeito. Nela são decididos as combinações mais relevantes a serem testadas. PairWise – Cada par de parâmetros seja coberto por um caso de teste. Classes de equivalência – É construída de modo agrupar os casos de teste para os quais o comportamento do sistema seja o mesmo; Análise de valores limítrofes – Testar valores limites do domínio de entrada;
  • 55.
    Salto Desafios paraum bom Caso de Teste na Computação •Mudança de Requisito •Mudança de Cronograma •Rotatividade da Equipe
  • 56.
    Salto na ComputaçãoExecutar Executar Casos de Teste Gerar Resultado de Teste (log) Acompanhar Defeitos Executar Re-teste Executar Testes “especiais” Executar Testes
  • 57.
    Salto na Computação “A execução poderá consumir 40% ou menos do tempo total do esforço de teste” Martin Pol Frequentemente os testes são executados o mais rápido possível Processo de Teste - Executar Executar
  • 58.
    Salto na ComputaçãoExecutar Fluxo de Execução “A etapa de execução dos testes, dentro do ciclo de vida dos testes, para que seja bem sucedida vai depender de tudo o que foi feito anteriormente e que servirá de base para o cumprimento desta etapa” Fonte: Base de Conhecimento em Teste de Software.
  • 59.
    Salto na Computação Fluxo de Execução
  • 60.
    Salto na Computação Mas… Quando os testes terminam? Como saber o momento adequado para finalizar os teste?
  • 61.
  • 62.
    Salto Gerência dneaCDomepuftaeçãiotos
  • 63.
    Salto Gerência dena Computação Defeitos Ferramentas  Jira Bugzilla Mantis Rational ClearQuest TestDirector TrackRecord e-Manager Enterprise
  • 64.
  • 65.
  • 66.
  • 67.
    Salto na Computação Importância do Defeito ($)
  • 68.
    Salto na Computação Custo da correção de um defeito após encontrá-lo
  • 69.
    Salto na Computação Identificação do Defeito
  • 70.
    Salto na Computação Reportar Defeito
  • 71.
    Salto na Computação Reportar Defeito
  • 72.
    Salto na Computação Severidade X Prioridade
  • 73.
    Salto na Computação Reportar Defeito Graus altos de severidade correspondem também a graus altos de prioridade?
  • 74.
  • 75.
  • 76.
  • 77.
    Salto Introdução àautomação na Computação
  • 78.
    Salto O quesão testes autonma Caotmizpautdaçoãso? São programas ou scripts que exercitam determinadas funcionalidades do software e fazem verificações automáticas nos resultados obtidos. Ou seja, é um teste, que é executado automaticamente, onde se é conhecido todo o cenário, ações que devem ser realizadas e os resultados esperados. Algumas das principais vantagens dos testes automatizados são: capacidade de reprodutibilidade e velocidade na execução. A automação de testes é uma área em franca expansão, no entanto, é uma área ainda muito imatura. Muitos dos sucessos nos projetos de automação de testes são decorrentes de processos empíricos de tentativa e erro.
  • 79.
    Salto AUTOMATIZADOnSa Computação Ajudam na documentação Cobrem muitos casos Segurança na manutenção Rodam rápido
  • 80.
    Salto Automatizando testesvonacêCocmopuntasçeãgoue: Simular grandes quantidades de dados ou usuários. Medir o tempo de execução de certas partes do programa. Encontrar gargalos.
  • 81.
  • 82.
    Salto O queé automanatiCzoamrpu?tação Testes automatizados são, em geral, utilizados para testes de regressão. Ou seja, testes que devem ser frequentemente executados e/ou demandam muito tempo para execução devem ser automatizados.
  • 83.
    Salto Melhores práticasna AutomnaaCçoãmop udteaç Tãeoste  Automação não é um processo de teste!  Automatize os testes críticos primeiro  Incorpore testabilidade ao aplicativos  As ferramentas de automação de testes também têm defeito!
  • 84.
    Salto Como desenvolverum testenaauCotmomputaatçizãaodo? 1. O primeiro passo para se desenvolver um teste automatizado é selecionar o requisito ou funcionalidade alvo e, com base nas especificações, pensar e/ou documentar os possíveis cenários de testes. 2. A seguir, deve-se selecionar um dos cenários e elaborar o caso de testes, onde será especificado o passo-a-passo para a execução do teste. 3. O ideal é que para cada teste automatizado, tenha-se um caso de teste como base. 4. Após a especificação do caso de testes, é hora de criar os scripts de testes. Para isso, precisamos utilizar uma ferramenta de automação de testes.
  • 85.
    Salto Que ferramentasutilizar? na Computação
  • 86.
  • 87.
    Salto Selenium WebDriver na Computação
  • 88.
    Salto Selenium??na Computação • O Selenium reúne um conjunto de ferramentas usadas para a criação de scripts de automação de testes de regressão/funcionais para aplicações Web. • Os testes podem ser executados em qualquer navegador, desde que suporte Javascript.
  • 89.
    Salto Selenium??na Computação O Selenium possui 4 módulos: – Selenium IDE : Ambiente de desenvolvimento integrado para scripts selenium – Selenium RC : Teste web em qualquer linguagem de programação – Selenium WebDriver : Sucessor do RC, a grande diferença é que ele não necessita de um servidor – Selenium Grid : É o selenium server (via terminal)
  • 90.
    Salto WebDriver?n?a Computação 1. API 2. Pode ser desenvolvido em várias liguagens 3. Roda em vários browsers 4. Simula um usuário
  • 91.
    Salto Preparando oAmbiente na Computação
  • 92.
    Salto Preparando oAmnbaiCeonmtpeutação Usaremos a API em Java e o Eclipse como IDE 1 – Baixe o Eclipse IDE:
  • 93.
    Salto Preparando oAmnbaiCeonmtpeutação 2 – Baixe o jar do Selenium Server
  • 94.
    Salto na ComputaçãoPreparando o Ambiente 3 – Baixe a API em Java
  • 95.
    Salto na ComputaçãoPreparando o Ambiente 4 – Coloque os jars baixado em uma única pasta dentro de C:
  • 96.
    Salto na ComputaçãoPreparando o Ambiente 5 – Abra o eclipse e clique em File > New > Java Project
  • 97.
    Salto na ComputaçãoPreparando o Ambiente 6 – Nomear projeto
  • 98.
    Salto Primeiros Passos- Automação na Computação
  • 99.
    Salto na Computação Quais conhecimentos mínimos precisamos ter para automatizar uma página web? Abrir Navegador Ler URL Guardar textos da página Clicar em links Clicar em botões Preencher Campos
  • 100.
    Salto na Computação Essas ações são divididas como: Sincronização Navegação Interrogação Manipulação
  • 101.
    Salto Primeiros Passos- Junit na Computação
  • 102.
    Salto na Computação 1. Usaremos o Junit, que é um framework de testes java, ele irá nos auxilixar nos testes pois apartir da notação @Test 2. Sempre devemos identicar um método público com o @Test
  • 103.
    Salto na Computação O Junit também nos ajuda na utilização de Assertions ( assegurar informações). •assertTrue •assertEquals asserTrue ( condição) asserTrue ( mensagem,condição) assertEquals(esperado, obtido) assertEquals(mensagem, esperado, obtido)
  • 104.
    Salto Primeiros Passos– Selenium WebDriver na Computação
  • 105.
    Salto na Computação • Sempre devemos passar o browser que utilizaremos, no nosso caso usaremos o Firefox ( nativo ) • Usaremos a classe WebDriver como ponto de partida 1. Instanciar o browser
  • 106.
    Salto na Computação Métodos de Navegação get ---- abre a página to(url) --- para uma url refresh() --- atualiza a página forward() --- avança back() --- volta
  • 107.
    Salto na Computação Métodos de Interrogação Utilizando o objeto driver getTitle() getCurrentURL() getPageSource() findElement() findElements() http://www.w3.org/community/webed/wiki/HTML/Elements
  • 108.
    Salto na Computação Algumas estratégias utilizadas para interrogar elementos: ID CSSSELECTOR NAME XPATH LINKNAME CLASSNAME … driver.findElement(By.cssSelector(“.class”));
  • 109.
    Salto na Computação driver.findElement(By.id(“id”));" O que eu quero fazer Como eu quero fazer elemento Selenium WebDriver - ID
  • 110.
    Salto Selenium WebDriver– CnSaSC Somelpeucttaoçãro Localiza o elemento utilizando seu estilo elemento #id .classe elemento[atributo='valor’] elemento > elemento driver.findElement(By.cssSelector(“.class”));"
  • 111.
    Salto Selenium WebDrivern–aCXopmaptuhtação driver.findElement(By.xpath(//*[@id="div_pass_background"]
  • 112.
    Salto na ComputaçãoSelenium WebDriver – Manipulação click() • clear() • sendKeys(String) • submit() driver.findElement(By.xpath(//*[@id="div_pass_background"]
  • 113.
    Certificações •CBTS/ALATS http://www.alats.org.br/portal •CTFL/ISTQB - http://www.bstqb.org.br/
  • 114.
    Referências •Myers, GlenfordJ. The Art of Software Testing. Ed. Wiley, 2004. •Whittaker, J.A. “What Is Software Testing? And Why Is It So Hard? ”. IEEE Software, Jan/Fev 2000, p. 70-79. •Sembugs.com •www.saltonacomputacao.com •Base de conhecimento em testes de software
  • 115.
    Referências •Myers, GlenfordJ. The Art of Software Testing. Ed. Wiley, 2004. •Whittaker, J.A. “What Is Software Testing? And Why Is It So Hard? ”. IEEE Software, Jan/Fev 2000, p. 70-79. •Sembugs.com •www.saltonacomputacao.com •Base de conhecimento em testes de software •http://www.w3schools.com/cssref/css_selectors.asp •http://net.tutsplus.com/tutorials/html-css-techniques/the-30- css-selectors-you-must-memorize/ •Eliasnogueira.com •http://www.devmedia.com.br/artigo-engenharia-de-software-5- melhores-praticas-na-automacao-de-testes/10249
  • 116.
  • 117.
    Salto na Computação Contatos @_sandymaciel br.linkedin.com/in/sandymaciel/ sandy@saltonacomputacao.com www.saltonacomputação.com
  • 118.
    Salto na Computação OBRIGADA 