Вы находитесь на странице: 1из 65

FACULDADE ANHANGUERA DE RIO CLARO

Cincia da Computao



Engenharia de Software e
Anlise de Projeto de Sistemas




Prof. Andr Luiz Andreolli
Engenharia de Software
Cronograma

Introduo a teste de software: Conceito, importncia, planejamento, casos
de teste. Erro, defeito e falha. Tcnicas Funcional e Estrutural

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Importncia do Teste, segundo Deutsch:

O desenvolvimento de software envolve uma srie de atividades de produo,
com alta probabilidade de insero de erros devido a falhas humanas.
Por causa da falta de habilidade do ser humano de cumprir tarefas e de
comunicar-se com perfeio, torna-se necessrio garantir a qualidade de
software.


A maioria dos erros so humanos e tem origem na comunicao,
entendimento e transformao das informaes.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Casos de insucesso devido ausncia de teste

Em Junho de 1996, o primeiro lanamento do foguete Ariane 5 da agncia
espacial europeia falhou 37,5 segundos aps sair do solo. Um erro de
software levou o foguete a desviar da ascendente vertical e suas
capacidades de auto-destruio foram ativadas.


Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Objetivos da atividade de teste

A atividade de teste o processo de executar um programa com a inteno
de descobrir um erro.

Um bom Caso de Teste aquele que tem uma elevada probabilidade de
revelar um erro ainda no descoberto.

Teste no serve para mostrar a ausncia de defeitos, mas sim que eles
esto presentes.

Durante o teste observamos as falhas.

Na Depurao (debugging) encontramos os defeitos (causa) para corrigi-los.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
No existe software livre de defeitos, o que no pode servir de desculpa
para no se aplicar Tcnicas de Garantia de Qualidade em Software e Testes
para localizao/eliminao de erros.

O custo de localizao e remoo de defeitos aumenta medida em que o
ciclo de desenvolvimento evolui.

Quanto antes uma falha for
revelada, menor o custo de
reparao e maior a
probabilidade de corrigi-la
corretamente.


Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Quais os benefcios

Melhoria da qualidade do produto e do servio.
Identificao de defeitos para reduzir as falhas.
Reduo do custo de manuteno do software.
Medio da qualidade
(Ex: nmero de defeitos encontrados,
nmero de testes executados e
percentual de cobertura do cdigo
pelos testes).
Adequao s regras contratuais,
requisitos legais e padres
industriais.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
O papel do Testador

O testador atua para prevenir que as falhas sejam observadas no software
quando ele j est em produo, como tambm para provocar, o quanto
antes, a maior quantidade de falhas possvel no software, para que as
mesmas possam ser corrigidas e entregues ao cliente final.

O testador investigar se o produto est
pronto para uso e quais so as possveis
ameaas que o mesmo apresenta.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades necessrias

Identificar a abordagem de implementao mais apropriada para um dado
teste.

Implementar testes individuais.

Configurar e executar os testes.

Registrar os resultados e verificar a execuo dos testes.

Analisar erros de execuo e recuperar-se deles.

Avaliar um entregvel com a inteno de encontrar defeitos.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Definio do conceito de teste

Erro (Mistake)
Falha resultante de ao humana

Defeito (Fault)
Instruo ou definio incorreta.

Falha (Failure)
Resultados incorretos

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Os erros so cometidos:
60% nas fases iniciais do desenvolvimento
40% durante a implementao

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
A Maioria do erros encontra-se nas partes pouco executadas do cdigo
(esconde-se nos cantos).

Um bom teste , no mnimo, to difcil quanto o desenvolvimento de
software (quanto mais complexo o software, mais difcil a montagem do
teste).
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Terminologia

A atividade de Teste tambm conhecida como Verificao e Validao
(V&V).

A Verificao refere-se ao conjunto de atividades que garante que o
software implemente corretamente uma funo especfica.

A Validao refere-se a um conjunto de atividades que garante que o
software construdo rastrevel s exigncias do cliente.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Terminologia

Verificao:
Estamos desenvolvendo o produto corretamente?

Validao:
Estamos desenvolvendo o produto correto?
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Terminologia

Verificao x Validao: Exemplo prtico

Imagine um fabricante de rolha. Ele recebe uma solicitao de rolhas de um
determinado material, com tal dimetro e tal comprimento.
O fabricante faz as rolhas e testa o material, o dimetro e o comprimento.
Nesse caso ele fez uma VERIFICAO do que produziu.
Verificar no significa que o fabricante tenha a certeza de que a rolha vai
encaixar na garrafa, ele simplesmente garantiu que o produto dele est de
acordo com o solicitado.
Por outro lado, se o fabricante tentar fechar algumas garrafas com as rolhas
que ele fabricou, ele estar VALIDANDO as mesmas, com isso, ele pode
dizer se as rolhas funcionam, mas no se elas esto de acordo com o
especificado.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste Esttico X Teste Dinmico

No teste esttico
O cdigo examinado.
No teste dinmico
O cdigo testado.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Tcnicas Estticas

Revises
Reviso informal
Acompanhamento
Revises tcnicas
Inspeo


Anlise esttica
Objetivo encontrar defeitos no cdigo/modelagem
Geralmente utilizando uma ferramenta

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Tcnica Dinmica

Executar o cdigo para demonstrar os resultados dos testes rodados.



Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Modelo de desenvolvimento de software


Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Nveis de Testes

Teste Unitrio: Teste dos Mdulos (ou Classes) individualmente (cada
unidade).

Foco:
Atividade de verificao na menor unidade do software (mdulo,
classe, programa, etc..)

Abordagem Prtica:
Um exemplo: No caso da linguagem Java esse teste pode ser feito atravs
do JUnit em cada mtodo separadamente.
http://junit.org/

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Nveis de Testes

Teste de Integrao: Teste da Integrao entre os mdulos (ou classes).

Foco:
Atividade Sistemtica para verificar a Construo da Estrutura do
software e tambm para a interface (comunicao) entre os mdulos

Porque Teste de Integrao necessrio?
Dados podem se perder na Interface entre os Mdulos
Um mdulo pode ter efeito inadequado sobre outro
Combinao de Sub-funes podem no gerar a funo principal
desejada
Estruturas Globais podem afetar o software
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Nveis de Testes

Teste de Sistema: Combinao de diferentes testes para por a prova todos
os diferentes elementos do sistema
Foram adequadamente integrados ?
Realizam corretamente as funes ?


Exemplo: Sistemas Integrados de Gesto Empresarial (SIGE ou SIG), em
ingls Enterprise Resource Planning (ERP)
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Nveis de Testes

Fazendo uma analogia da pirmide alimentcia com os tipos e quantidade
de testes que voc deve ter.
Na base da pirmide alimentcia est o que voc deve consumir mais e indo
para o topo o que deve ser consumido menos.
Isso importante para uma dieta saudvel.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Nveis de Testes

Teste de Validao (ou aceitao): Teste pra verificar se o produto de
software atende os requisitos (conformidade com os Requisitos).



Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste de Caixa Branca e Caixa Preta

Caixa Branca: teste baseado na anlise da estrutura interna de um
componente ou sistema.

Caixa Preta: teste funcional ou no funcional, sem referncia estrutura
interna do componente ou do sistema.

Para executar o teste de caixa preta necessrio definir os casos de testes,
definir os dados de teste, executar os testes e verificar os resultados.

Dividido em 4 tarefas:
Teste exaustivo
Particionamento em classe de equivalncia
Anlise do valor limite
Teste funcional

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Planejamento do Teste de Software

Definir o objetivo do teste.
O que testar? Como testar? Quando testar?
A estratgia que ser adotada.
A equipe de teste.
O ambiente de teste.
Anlise de riscos.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
O Plano de Teste

o documento mais importante!

Deve ser feito a partir da documentao do projeto e do desenvolvimento
do software.

Todos os demais documentos sero baseados nele.



Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste


1 Planejamento

2 Anlise e Modelagem de Teste

3 Implementao do Teste

4 Execuo do Teste

5 Avaliar critrios de sada e reportar resultados

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste

1 Planejamento

O plano de teste um dos documentos produzidos na conduo de um
projeto.

Ele funciona como:

Um integrador entre diversas atividades de testes no projeto;

Mecanismo de comunicao para os stakeholders (por exemplo: a
equipe de testes e outros interessados);

Guia para execuo e controle das atividades de testes.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste


Um plano de teste deve definir:

a) Os itens a serem testados: o escopo e objetivos do plano devem ser
estabelecidos no incio do projeto.

b) Atividades e recursos a serem empregados: as estratgias de testes e
recursos utilizados devem ser definidos, bem como toda e qualquer
restrio imposta sobre as atividades e/ou recursos.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste



c) Os tipos de testes a serem realizados e ferramentas empregadas: os
tipos de testes e a ordem cronolgica de sua ocorrncia so
estabelecidos no plano.

d) Critrios para avaliar os resultados obtidos: mtricas devem ser
definidas para acompanhar os resultados alcanados.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Tcnicas de modelagem de testes


Baseadas em especificao

Baseadas em estrutura

Baseadas na experincia
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Baseadas em especificao

Particionamento em classe de equivalncia

Exemplificando:
Dados de entrada um nmero inteiro que encontra-se no intervalo
fechado de 0 a 10.

Quantidade de entradas de execuo para este programa so 3 (3
classes entrada negativa, entrada dentro do intervalo, entrada
positiva superior ao limite do intervalo).

A tabela a seguir apresenta os dados de entrada e a sada que deve
ser emitida pelo programa em questo.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Tabela



Prof. Andr Luiz Andreolli Engenharia de Software
Dados Sada
-3 Nmero fora do intervalo
4 Nmero dentro do intervalo
14 Nmero fora do intervalo
Engenharia de Software
Anlise do valor limite

A tcnica de anlise do valor limite possibilita que dados prximos a
fronteira das entradas sejam inseridos na folha de teste. Neste caso a
tabela para execuo das entradas e a sada a ser emitida pelo
programa deve possuir a seguinte configurao:


Prof. Andr Luiz Andreolli Engenharia de Software
Dados Sada
-3 Nmero fora do intervalo
4 Nmero dentro do intervalo
15 Nmero fora do intervalo
-1 Nmero fora do intervalo
0 Nmero dentro do intervalo
1 Nmero dentro do intervalo
Engenharia de Software
Teste funcional

J o teste funcional prov subsdios para que o testador possa inserir
dados de tipos diferentes daqueles definidos no documento de
especificao.

1 testar o comportamento do programa quando a entrada for uma
letra.
2 testar o comportamento do programa quando a entrada for um
caractere especial, ex: {! ; }.
3 Testar o programa quando a entrada for nula.
4 Testar o programa quando a entrada for um
espao em branco.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Tabela de Deciso

Focada nas regras de negcio

uma boa maneira de lidar com combinaes de valores de entrada

As condies de entrada e aes so declaradas de uma forma que possam
ser entendidas, como verdadeiras ou falsas

s vezes, chamada de causa e efeito

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Tabela de Deciso

O grande ganho na utilizao da tabela de deciso, que ela cria
combinaes de condies que, geralmente, no foram exercitadas durante
os testes

Pode ser aplicada a todas as situaes quando a execuo do software
depende de muitas decises lgicas

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Tabela de Deciso


Prof. Andr Luiz Andreolli Engenharia de Software
Condio Regra1 Regra2 Regra3 Regra4
Valor > 100
V F V F
Qtde > 100
V V F F
Ao
Dar brinde
X
Ao
Dar desconto
X
Mensagem
de erro
X
Engenharia de Software
Teste de Transio de Estados

utilizado quando algum aspecto do sistema pode ser descrito usando uma
mquina de estados.

Ou seja, o sistema pode ter um nmero (finito) de estados diferentes, e as
transies de um estado para outro so determinadas por regras de
"mquina.


Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste de Transio de Estados



Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste de Caso de Uso

Ajuda a identificar casos de testes que exercitam todo o sistema, transao
por transao, do incio ao fim.

Um caso de uso a descrio de um uso particular do sistema feito por um
ator (usurio do sistema).

Casos de uso muitas vezes so tratados como cenrios, e teis para
construir testes de aceite com a participao do usurio final.





Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste de Caso de Uso

Casos de uso so definidos de acordo com o autor, no com o sistema,
descrevendo o que o ator v, mais do que as entradas e resultados
esperados do sistema.

Eles costumar usar uma linguagem e termos a nvel de negcio, ao invs de
termos tcnicos, especialmente quando o ator parte do negcio.




Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste de Caso de Uso





Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste de Caso de Uso

Cenrio criar post (fluxo principal)

Pr-condio: Usurio logado no sistema

Cenrio:
1) A: Seleciona opo de novo post;
2) S: Abre pgina de postagem;
3) A: Digita post;
4) A: Seleciona opo de salvar o post;
5) S: Salva o post;
6) S: Carrega a pgina com o post salvo.






Prof. Andr Luiz Andreolli Engenharia de Software
A Usurio
S Sistema
Engenharia de Software
Teste de Caso de Uso

Caso de teste criar post

Pr-condio: Usurio logado no sistema

Cenrio:
1) Clicar no boto novo post;
2) Digitar texto;
3) Clicar no boto 'salvar como rascunho.

Resultado esperado:
Sistema salvar o post, apresentar a pgina com o post salvo.





Prof. Andr Luiz Andreolli Engenharia de Software
A Usurio
S Sistema
Engenharia de Software
Teste de Caso de Uso Desenvolvimento de jogos digitais





Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Baseadas em estrutura



Teste e Cobertura de Comandos

Teste e Cobertura de Deciso

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
O que cobertura de teste


Cobertura de teste uma medida, referente ao nmero de itens (cdigo)
testados, pelo total de itens, multiplicado por 100%.


Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste e Cobertura de Comandos


Definir casos de teste que executem todos os comandos pelo menos uma
vez (passa por todos os nodos do grafo).


Cobertura de comando medida, de acordo com o nmero de comandos
exercitados divididos pelo total de comandos, multiplicado por 100%.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste e Cobertura de Comandos

1. a = Integer.parseInt(args[0]);
2. b = Integer.parseInt(args[1]);
3. while(a < 0){
4. if (b < 0){
5. b = b + 2;
6. }
7. a = a + 1;
8. }
9. c = a + b;
Prof. Andr Luiz Andreolli Engenharia de Software
a b C (resultado)
-1 -1 1
Engenharia de Software
Teste e Cobertura de Deciso


Uma deciso um IF, um loop (ex. do-while ou repeat-until), ou um Case,
no qual existem duas ou mais possibilidades de sadas ou resultados a partir
de um comando.



Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Teste e Cobertura de Deciso

1. a = Integer.parseInt(args[0]);
2. b = Integer.parseInt(args[1]);
3. while(a < 0){
4. if (b < 0){
5. b = b + 2;
6. }
7. a = a + 1;
8. }
9. c = a + b;
Prof. Andr Luiz Andreolli Engenharia de Software
a b C (resultado)
-1 -1 1
0 0 0
-1 0 0
Engenharia de Software
Baseadas na experincia



Suposio de erro

Teste exploratrio

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste

2 Anlise e Modelagem de Teste


Criar o procedimento de execuo dos testes, priorizando-os.

Criar massa de dados, caso necessrio.

Preparar o ambiente de teste.

Escrever scripts para automatizao dos testes.

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Preparando o ambiente de teste

O ambiente de teste deve ser o mais prximo possvel do de produo.

O procedimento de criao do ambiente de teste deve ser documentado.

O ambiente de teste deve ser isolado dos demais.

Caso seja preciso, envolver o pessoal de infra o mais cedo possvel.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste

3 Implementao do Teste

Nunca demais lembrar...
Documente toda execuo dos testes.
Tenha todos os casos de testes prontos e atualizados.
Use a sua experincia e conhecimento ao seu favor.
Testar no s seguir um procedimento!
Se algo estiver errado no caso de teste, avise!
Ateno a palavra chave!

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
5 mtodos para encontrar falhas


Aprenda a quebrar as regras, de vez em quando. Explore!

Busque padres!

Toque onde di mais!

Escute os passos do bug se aproximando!

Dois melhor do que um. Trabalhe em par!
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Achei uma falha! O que fao?


Reporte de falha

Detalhe ao mximo!
A caixa de mensagem no segue o padro.
Aps no preencher os dados de critrio do filtro, a mensagem de erro
foi apresentada num messagebox diferente do padro das demais
mensagens de erro.

Descreva o passo-a-passo, informe as configuraes do ambiente de teste,
prioridade, impacto, tipo, coloque provas do incidente (ex. log, printscreen,
etc).

Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
A falha foi corrigida, e agora?

Reteste.


Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste

4 Execuo do Teste

Avaliar critrios de sada e reportar resultados

Checar os registros de teste (logs) mediante o critrio de encerramento
especificado.

Avaliar se so necessrios testes adicionais ou se o critrio de sada
especificado deve ser alterado.

Elaborar um relatrio de teste resumido para os interessados.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Documentos gerados

Log de Teste

Promover informaes relacionadas aos detalhes da execuo dos testes.
Muito til para retestes
Ajuda a determinar os resultados de algum aspecto do esforo de teste


Relatrio de Incidente de Teste

Objetivo documentar todos eventos que ocorreram durante o processo de
teste
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
Atividades de Teste

5 Avaliar critrios de sada e reportar resultados

Quando os testes devem parar?

O nmero de bugs achados que esto fechados maior do que o nmero
de bugs que se esperava achar.
Todos os testes foram executados.
A porcentagem de cobertura da aplicao pelos testes j o suficiente.
Todas as funcionalidades funcionam corretamente.
O sistema atende as mtricas de confiabilidade, disponibilidade e
durabilidade definidas no Plano de Teste.
Prof. Andr Luiz Andreolli Engenharia de Software
Engenharia de Software
O software tornou-se confivel.
A estabilidade alcanada atingiu o esperado.
O nmero e severidade dos bugs caram a um nvel satisfatrio.
O tempo mdio entre defeitos encontrados muito alto.
Prof. Andr Luiz Andreolli Engenharia de Software
Prof. Andr Luiz Andreolli Engenharia de Software
Obrigado