Testes de Software
1
AU L A 0 1 – I N T R O D U Ç ÃO A T E S T E S D E S O F T WA R E
Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB
Conteúdo Programático do Curso
2
Introdução a Testes de Software
Técnicas de Testes de Software
Elaboração e Execução dos Testes
Aula prática com Ferramentas de Testes Unitários, Funcionais,
Carga, Cobertura e Aceitação
Aula prática com Ferramentas de Gerência dos Testes e Gerência
dos Defeitos
Discussão sobre melhoria no processo de desenvolvimento e
teste de software do NTI
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Conteúdo Programático – Aula 01
3
Como adquirir qualidade em um software?
O que é teste de software?
Por que testar é necessário?
Confiabilidade do Software x Defeitos
Tipos de Teste de Software
Níveis de Teste de Software
Testes Funcionais x Testes de Unidade
A Equipe de Testes
Processo de Testes x Processo de Desenvolvimento
Quando usar ferramentas de teste de software?
Quando os testes devem ser automatizados?
Considerações Finais
Referências
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Como adquirir qualidade em um software?
4
A Norma ISO 9126 define as seguintes características para
qualidade:
Funcionalidade
Portabilidade
Confiabilidade
Manutenabilidade
Usabilidade
Eficiência
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
O que é teste de software?
5
Os testes são realizados com a intenção de descobrir erros e
defeitos em um sistema. [Myres, 2004]
Os testes de software podem ser usados para mostrar a
presença de defeitos, mas nunca para mostrar a ausência deles.
[Dijkstra, 1972]
Os testes de software servem para medir a confiabilidade de um
sistema: à medida que poucos defeitos são encontrados em um
determinado tempo, o software é considerado mais confiável.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Por que testar é necessário?
6
Para assegurar que as necessidades dos usuários estejam sendo
atendidas.
Porque é provável que o software possua defeitos.
Desenvolvedor já alocado para outro projeto teria que resolver
muitos bugs de projetos anteriores em produção.
Porque falhas podem custar muito caro.
Para avaliar a qualidade do software.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Erro, Defeito e Falha
7
Erro: é uma ação humana que produz um resultado incorreto.
Defeito: A manifestação de um erro no software.
Também conhecido como Bug
Falha: quando o sistema se comporta de forma inesperada
devido ao defeito.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Erro, Defeito e Falha
8
Uma pessoa
comete um
erro...
...que cria um
defeito no
software...
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
...que pode
causar uma
falha na
operação.
Conceitos Básicos de Teste
9
Artefatos de
Teste
• todo o conjunto de documentação gerado pelo
processo de teste de software.
Caso de Teste
• é composto por um conjunto de entradas, por
passos de execução e um resultado esperado.
Roteiro de
Teste
• É composto por um conjunto de casos de teste
definidos para uma determinada especificação.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Conceitos Básicos de Teste
10
Requisitos
Testar
Bug
• regras de negócio do sistema.
• descobrir falhas através da
execução do sistema.
• é um defeito encontrado no sistema
em execução.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Confiabilidade do Software
11
Confiabilidade do Software é a probabilidade que
o software não causará uma falha no sistema por
um tempo especificado, sob condições
determinadas.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Confiabilidade do Software
12
60
50
40
30
Nº de Bugs
20
10
0
Versão 1 Versão 2 Versão 3 Versão 4 Versão 5 Versão 6
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
O custo de um defeito
13
O custo da correção de um defeito tende a ser
cada vez maior quanto mais tarde ele for
descoberto. [Myres, 2004]
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
O custo de um defeito
14
1000
900
800
700
600
500
400
300
200
100
0
Custo de Correção
Fonte: Myres, 2004
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Desastres causados por erros em softwares
15
Em 1996 - Um software com uma exceção não tratada foi
responsável pela explosão do foguete Ariane-5, quando a 40 seg
após a iniciação da seqüência de vôo, o foguete se desviou de
sua rota, partiu e explodiu, tendo um prejuízo de 500 milhões de
dólares.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Desastres causados por erros em softwares
16
Em 2000 - Erro de cálculo no sistema de radioterapia, que era
utilizado para controlar a emissão de radiação em tratamentos
de câncer matou 8 pessoas e causou queimaduras graves em
outras 20.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Mitos sobre os Testes
17
O testador é inimigo
do desenvolvedor.
Os testadores
devem ser os
desenvolvedores
menos qualificados.
O sistema está
pronto quando o
desenvolvedor
termina de
codificar.
Um programador
consegue testar
eficientemente o
próprio código.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Tipos de Teste de Software
18
Testes de Caixa-Branca (Estrutural)
Testes de Unidade
Teste de Integração
Testes de Caixa-Preta (Funcional)
Testes Funcionais
Testes de Aceitação
Testes Exploratórios
Testes de Caixa-Cinza
Testes de Regressão
Testes de Cobertura
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
19
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
20
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
21
Testes de Unidade
Teste estrutural ou Caixa-branca
Teste realizado em uma unidade ou componente para verificar sua
corretude
Ex.: Teste para uma classe ou métodos do sistema.
Realizado pelo desenvolvedor que codificou o componente
Para Java, existe a ferramenta JUnit
Realizado de forma automática
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
22
Exemplo de Teste de Unidade
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
23
Testes de Integração
Teste estrutural ou Caixa-branca
Tem a finalidade de verificar se ao juntar vários componentes do
sistema, se eles se comunicam corretamente.
A interface entre as unidades é testada
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
24
Testes de Integração
Realizado pelos desenvolvedores ou analistas de sistema para testar
um módulo do sistema.
Utiliza ‘Stubs’ para simular módulos que ainda não foram
implementados, mas que se comunicam com o módulo a ser
testado.
Realizado de forma automática
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
25
Testes de Sistema
Teste funcional ou Caixa-preta
Tem por objetivo verificar se o sistema está em conformidade com a
especificação de requisitos
Realizado pelo testador, o qual tem acesso apenas a interface do
sistema.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
26
Testes de Sistema
O testador não faz parte da equipe de desenvolvimento.
Os testes geralmente são baseados em roteiros de teste criados a
partir da especificação.
Pode ser realizado de forma manual ou automática.
Existe várias ferramentas, como: Selenium, Watir, Badboy etc
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
27
Testes de Aceitação
Teste funcional ou Caixa-preta
Tem por objetivo verificar se o sistema está em conformidade com
os requisitos esperados pelo cliente
Realizado pelo cliente ou pelo testador, desde que este possua um
checklist feito pelo cliente do que é esperado que haja no sistema.
Realizado no ambiente de homologação
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Níveis de Teste de Software
28
Testes de Aceitação
O sistema é utilizado para capacitação dos usuários de forma que
eles validem todos os requisitos do sistema
Realizado de forma manual ou automática
Existe a ferramenta EasyAccept.
Teste realizado pelo usuário pode ser:
Teste Alfa: em um ambiente de homologação.
Teste Beta: em um ambiente de produção.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Tipos de Teste de Software
29
Testes Exploratórios
Teste funcional ou Caixa-preta
Realizado por testadores com experiência
Quando não há muita documentação sobre o sistema
Realizado de forma manual
Os defeitos encontrados são reportados à medida que eles ocorrem
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Tipos de Teste de Software
30
Testes de Regressão
Teste funcional ou estrutural Caixa-cinza
À medida que uma nova versão do sistema é liberada, novos bugs
podem ser incluídos no sistema
Tem a finalidade de realizar novamente testes em um sistema já
testado
Realizado pelo testador
Pode ser realizado de forma manual ou automática
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Tipos de Teste de Software
31
Testes de Cobertura
Teste funcional ou estrutural Caixa-cinza
Estrutural: Tem a finalidade de identificar se os testes realizados no
sistema abrangem pelo menos 95% do código produzido.
Funcional: Os roteiros de teste abrangem 100% das funcionalidades
do sistema, ou seja, possui pelo menos 1 caso de teste para cada
regra de negócio.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Testes Funcionais x Testes de Unidade
32
Funcionais
Unitário
Teste de Caixa-Preta
Teste de Caixa-Branca
Manual ou Automático
Automático
Testador diferente do
Desenvolvedor faz os testes
desenvolvedor faz os testes
Testador acessa o sistema via
interface do usuário
Testes verificam se o sistema
faz o que deve fazer e não faz o
que não deve fazer
Testador tem acesso ao código
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Testes verificam a corretude de
cada unidade (método, classe)
de forma independente
A Equipe de Testes
33
Gerente de teste
Lidera a equipe de teste.
Comunicação entre a equipe de teste e de desenvolvimento.
Planeja os testes, define estratégias, etc.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
A Equipe de Testes
34
Arquiteto de teste
Conhece os requisitos do sistema.
Elabora os roteiros de teste.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
A Equipe de Testes
35
Testador
É criativo ao executar os testes.
Tem noções de programação.
É objetivo ao descrever um erro.
É perfeccionista.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
O Testador
36
1. Não deve testar seu próprio programa.
2. Não deve duvidar que um erro existe.
3. Deve ter cuidado para não reportar falsos bugs.
4. O testador não é inimigo do desenvolvedor.
5. O testador deve saber se comunicar com o desenvolvedor.
6. Os bugs descritos por ele devem ser baseados em fatos.
7. Um bom testador é aquele que encontra muitos bugs!
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Processo de Testes x Processo de Desenvolvimento
37
Processo de Desenvolvimento
Design
Desenvolvimento
Sistema
Execução dos
Testes
Requisitos
Planejamento
Elaboração
Roteiro de Teste
Processo de Testes
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Roteiro
Relatório
de Defeitos
Produção
Quando usar ferramentas de teste de software?
38
Quando há apenas 1 testador para o projeto
Deve realizar apenas testes manuais.
Não há necessidade de ferramentas para criar os roteiros de teste.
Ferramenta apenas para reportar os defeitos. (Redmine)
Quando há uma equipe de teste
Ferramenta para gerenciar a equipe. (Redmine)
Ferramenta para criar os roteiros de teste. (TestLink)
Ferramenta para reportar e gerenciar os defeitos. (Redmine)
Automatizar os testes para auxiliar nos testes de regressão. (Selenium)
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Quando os testes devem ser automatizados?
39
Frequência de execução dos testes.
As funcionalidades são testadas mais de uma vez.
Baixo esforço para automatizar (equipe experiente).
Ferramentas de automação relevantes para a realidade do
projeto.
Dificuldade de executar os testes manualmente.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Implantando Testes de Software
40
Montar uma equipe de teste.
O tamanho da equipe depende da quantidade de projetos a serem
testados.
Qualificar a equipe de testes com treinamentos.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Implantando Testes de Software
41
Quando a equipe de teste é pequena e precisa testar 2 projetos.
Então, deve-se planejar a entrega de cada projeto em datas
diferentes.
Correção de
Bugs
Desenvolvimento
Produção
A
Roteiro
de Teste
Execução
dos Testes
Re-execução
dos Testes
Correção de
Bugs
Desenvolvimento
B
Roteiro
de Teste
15 dias
Execução
dos testes
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Produção
Re-execução
dos testes
Implantando Testes de Software
42
Iniciar com testes manuais.
Usar ferramenta para gerenciar os defeitos [Redmine] e para
gerenciar os testes [TestLink].
Redmine
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
TestLink
Implantando Testes de Software
43
Sistemas devem possuir uma especificação básica necessária
para criar os roteiros de teste e um protótipo de cada tela.
Os protótipos de tela devem ser validados pelo cliente antes do
início do desenvolvimento.
Especificação
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Protótipo
Considerações Finais
44
Software com testes melhoram a credibilidade do setor de
informática
Usuário mais satisfeito
Desenvolvedor perderá menos tempo resolvendo bugs de
sistemas em produção, enquanto está alocado em outro projeto
Desenvolvedor mais satisfeito e motivado
Sistema só deve ser colocado em produção após aprovação da
equipe de testes.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Considerações Finais
45
A equipe de teste é parte da equipe de desenvolvimento.
Cronogramas devem levar em consideração os testes.
Processo de Teste deve ser integrado ao processo de
desenvolvimento
Testar reduz riscos do negócio
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
46
1. Indique se é verdadeiro ou falso:
A. ( ) O testes devem ser realizados para mostrar a ausência de
defeitos.
B. ( ) Caixa branca são testes baseados em um exame rigoroso do
detalhe estrutural. Caminhos lógicos e colaborações entre
componentes são testadas.
C. ( ) O processo de teste deve ser independente do processo de
desenvolvimento, porém integrado.
D. ( ) A equipe de testes pode ser formada por desenvolvedores
menos qualificados.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
47
1. Indique se é verdadeiro ou falso:
A. ( F ) O testes devem ser realizados para mostrar a ausência de
defeitos.
B. ( V ) Caixa branca são testes baseados em um exame rigoroso do
detalhe procedimental. Caminhos lógicos e colaborações entre
componentes são testadas.
C. ( V ) O processo de teste deve ser independente do processo de
desenvolvimento, porém integrado.
D. ( F ) A equipe de testes pode ser formada por desenvolvedores
menos qualificados.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
48
2.
A MELHOR definição do objetivo do teste de aceitação é:
A.
Garantir que o software entre sem erros na produção
B.
Garantir que o grupo de testes fez um bom trabalho
C.
Executar um teste funcional
D.
Garantir que o software esteja fazendo exatamente aquilo que foi
solicitado nos requisitos de negócio
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
49
2.
A MELHOR definição do objetivo do teste de aceitação é:
A.
Garantir que o software entre sem erros na produção
B.
Garantir que o grupo de testes fez um bom trabalho
C.
Executar um teste funcional
D.
Garantir que o software esteja fazendo exatamente aquilo que foi
solicitado nos requisitos de negócio
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
50
3.
Cite alguns motivos que levam as empresas a cada vez mais
“testar” os softwares em desenvolvimento, antes de entregá-los
aos clientes.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
51
Cite alguns motivos que levam as empresas a cada vez mais
“testar” os softwares em desenvolvimento, antes de entregá-los aos
clientes.
3.
O teste de software tem servido como estratégia para as empresas
se manterem no mercado, visto que:
reduzem custos ao final do projeto;
clientes mais satisfeitos com o produto;
aumentam as chances da empresa ser contratada para novos projetos
previne e reduz o retrabalho do desenvolvimento.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
52
4.
Cite três requisitos mínimos da qualidade, conforme a Norma ISO
9126.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
53
Cite três requisitos mínimos da qualidade, conforme a Norma ISO
9126.
4.
São 6 requisitos no total:
Funcionalidade
Confiabilidade
Usabilidade
Eficiência
Manutenibilidade
Portabilidade
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
54
5.
Um processo de teste completo requer alguns níveis de teste
essenciais para que a qualidade do software a ser entregue passe
por um controle adequado. Cite quais são os níveis de teste
para controlar a qualidade de um software.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
55
Um processo de teste completo requer alguns níveis de teste
essenciais para que a qualidade do software a ser entregue passe
por um controle adequado. Cite quais são os níveis de teste
para controlar a qualidade de um software.
5.
São 4 níveis de teste:
Teste de unidade
Teste de integração
Teste de Sistema
Teste de Aceitação
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
56
6.
A quem cabe a responsabilidade pela execução do teste
unitário, e quais os seus principais objetos-alvo?
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
57
A quem cabe a responsabilidade pela execução do teste
unitário, e quais os seus principais objetos-alvo?
6.
O desenvolvedor que fez o código a ser testado.
Os principais objetos-alvo são os componentes, as classes e os métodos
do sistema.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
58
7.
Explique qual a finalidade do Teste de Sistema, e de quem é a
responsabilidade por sua execução.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
59
Explique qual a finalidade do Teste de Sistema, e de quem é a
responsabilidade por sua execução.
7.
Tem a finalidade de verificar se o sistema está em conformidade com a
especificação de requisitos
Quem executa é um testador que faz parte da equipe de testes
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
60
8.
Supondo que nosso produto em desenvolvimento seja uma rede
social. Após finalizar o desenvolvimento das funcionalidades e
efetuados os testes funcionais e estruturais, qual teste seria
apropriado para obter uma pré-avaliação do usuário final?
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Exercícios
61
Supondo que nosso produto em desenvolvimento seja uma rede
social. Após finalizar o desenvolvimento das funcionalidades e
efetuados os testes funcionais e estruturais, qual teste seria
apropriado para obter uma pré-avaliação do usuário final?
8.
O teste Alfa neste caso seria essencial, visto que um pequeno grupo de
usuários utilizaria o aplicativo em ambiente de homologação, expondo
suas críticas a respeito do software, o que certamente contribuiria
para o sistema, principalmente em questões de usabilidade.
Usabilidade nem sempre é o foco da equipe de testes.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Referências
62
[AllBusiness] AllBusiness - Site: http://www.allbusiness.com/technology/computer
software/210053-1.html Acessado em Maio/2011.
[Delamaro, 2007] Delamaro, M., Maldonado, J. C., Jino, M. “Introdução ao Teste de
Software”. Ed. Elsevier, Rio de Janeiro, 2007.
[Dijkstra, 1972] Dijkstra, E. W. "The Humble Programmer". Communications of the
ACM 15 (10): 859–866, 1972.
[GTSW] Grupo de Testadores de Software - http://gtsw.blogspot.com Acessado em
Maio/2011.
[Molinari, 2008] Molinari, L. “Testes Funcionais de Software”. Ed. Visual Books.
Florianópolis, 2008.
[Myres, 2004] Myres , G. F. “The Art of Software Testing”. Ed. John Wiley & Sons, Inc.
New Jersey, 2004.
Anne Caroline O. Rocha – Tester Certified – NTI|UFPB
Download

Testes de Software