Engenharia de Software
Técnicas de Testes de Software
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Técnicas de Teste de Software
Técnicas Funcionais
Classe de Equivalência
Valor de Fronteira
Tabela de Decisão
Pairwise
Teste de Caso de Uso
Técnicas Estruturais
Fluxo de controle
Fluxo de dados
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classe de Equivalência
Objetivo: reduzir a quantidade de casos de teste e
manter uma cobertura razoável.
Classes de equivalência: consiste de um conjunto de
dados onde cada elemento do produto é tratado da
mesma forma pelo sistema (intervalo de valores).
Um grupo de testes formam uma classe de
equivalência se você acredita que:
Todos eles testam a mesma coisa
Se um elemento gera um erro, os demais provavelmente
gerarão.
Se um elemento não gera um erro, os demais provavelmente
não gerarão.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classe de Equivalência
Exemplo: Um módulo de um sistema de recursos
humanos decide se pode ou não empregar uma
pessoa, de acordo com as seguintes regras:
0 – 16 => Não contrate
16 – 18 => Pode contratar com tempo parcial
18 – 55 => Pode contratar com tempo integral
55 – 99 => Não contrate
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classe de Equivalência
Implementação I
If (applicantAge == 0) hireStatus="NO";
If (applicantAge == 1) hireStatus="NO";
… If (applicantAge == 14) hireStatus="NO";
If (applicantAge == 15) hireStatus="NO";
If (applicantAge == 16) hireStatus="PART";
If (applicantAge == 17) hireStatus="PART";
If (applicantAge == 18) hireStatus="FULL";
If (applicantAge == 19) hireStatus="FULL";
… If (applicantAge == 53) hireStatus="FULL";
If (applicantAge == 54) hireStatus="FULL";
If (applicantAge == 55) hireStatus="NO";
If (applicantAge == 56) hireStatus="NO";
… If (applicantAge == 98) hireStatus="NO";
If (applicantAge == 99) hireStatus="NO";
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classe de Equivalência
Implementação II
If (applicantAge >= 0 && applicantAge <=16)
hireStatus="NO";
If (applicantAge >= 16 && applicantAge <=18)
hireStatus="PART";
If (applicantAge >= 18 && applicantAge <=55)
hireStatus="FULL";
If (applicantAge >= 55 && applicantAge <=99)
hireStatus="NO";
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classe de Equivalência
Implementação III
If (applicantAge >= 0 && applicantAge <=16)
hireStatus="NO";
If (applicantAge >= 16 && applicantAge <=18)
hireStatus="PART";
If (applicantAge >= 18 && applicantAge <=41)
hireStatus="FULL";
// strange statements follow
If (applicantAge == 42 && applicantName == "Lee")
hireStatus="HIRE NOW AT HUGE SALARY";
If (applicantAge == 42 && applicantName <> "Lee")
hireStatus="FULL";
// end of strange statements
If (applicantAge >= 43 && applicantAge <=55)
hireStatus="FULL";
If (applicantAge >= 55 && applicantAge <=99)
hireStatus="NO";
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classe de Equivalência
Passos para usar a técnica:
Primeiro, identificar as classes de equivalência.
Segundo, criar um caso de teste para cada classe
de equivalência
Terceiro, criar casos de teste adicionais para cada
classe de equivalência se existe recursos
disponíveis *
criar casos de teste preventivos(válidos e
inválidos)
* Casos de teste adicionais raramente descobrem defeitos
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Classe de Equivalência
Aplicabilidade:
Pode ser aplicada igualmente aos níveis
de teste unitário, integração, sistema e
aceitação;
É recomendada para sistemas que
recebam entradas que podem variar num
determinado intervalo
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Valor de Fronteira
Definição: técnica que, baseada na
especificação e no sistema, testa a
fronteira das classes de equivalência.
Objetivo: encontrar a origem dos erros
escondidos na fronteira das classes de
equivalência.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Valor de Fronteira
Exemplo 1: defeito na especificação
0 – 16 => Não contrate
16 – 18 => Pode contratar com tempo parcial
18 – 55 => Pode contratar com tempo integral
55 – 99 => Não contrate
Exemplo 2: defeito no código fonte
If (applicantAge >= 0 && applicantAge <=16)
hireStatus="NO";
If (applicantAge >= 16 && applicantAge <=18)
hireStatus="PART";
If (applicantAge >= 18 && applicantAge <=55)
hireStatus="FULL";
If (applicantAge >= 55 && applicantAge <=99)
hireStatus="NO";
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Valor de Fronteira
Passos para usar a técnica:
Primeiro, identificar as classes de equivalência.
Segundo, identificar as fronteiras de cada classe
de equivalência
Terceiro, criar casos de teste para cada fronteira
escolhendo um valor na fronteira, um valor abaixo
da fronteira e um valor acima da fronteira
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Valor de Fronteira
Casos de teste:
0 – 15 => Não contrate
16 – 17 => Pode contratar com tempo
parcial
18 – 54 => Pode contratar com tempo
integral
55 – 99 => Não contrate
Código
Idade
CT001
-1
CT002
0
CT003
1
CT004
15
CT005
CT006
16
17
CT007
17
CT008
18
CT009
19
CT010
54
CT011
CT012
55
56
CT013
98
CT014
99
CT015
100
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Resultado
Valor de Fronteira
Aplicabilidade:
Pode ser aplicada igualmente aos níveis
de teste unitário, integração, sistema e
aceitação;
É recomendada para sistemas que
recebam entradas que podem variar num
determinado intervalo
É necessário existir uma documentação
que defina as fronteiras entre as entradas
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Valor de Fronteira
Exercício 1:
Um módulo de um sistema acadêmico avalia a
situação anual de um aluno baseado na sua
média global. A avaliação segue a seguinte regra:
se mediaAluno <= 5 o aluno é reprovado diretamente
se 5 <= mediaAluno < 7 o aluno vai para recuperação
se mediaAluno >= 7 o aluno é aprovado por média
0 <= mediaAluno <= 10
Aplique a técnica Valor de Fronteira para
derivar os casos de testes que achar
necessário
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Valor de Fronteira
Exercício 2:
Um módulo de um sistema acadêmico avalia a situação
anual de um aluno baseado na sua média grobal.A
avaliação segue a seguinte regra:
se mediaAluno <= 5 o aluno é reprovado diretamente
se mediaAluno = 5 e percentualFalta <= 10% o aluno vai
para recuperação
se 5 <= mediaAluno < 7 o aluno vai para recuperação
se mediaAluno >= 7 o aluno é aprovado por média
se mediaAluno >= 7 e percentualFalta >= 70% o aluno vai
para recuperação
0 <= mediaAluno <= 10
Aplique a técnica Valor de Fronteira para derivar os
casos de testes que achar necessário
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Introdução:
São usadas para registrar complexas regras de
negócio do sistema
Elas podem servir como um guia para criar casos
de teste
Tabelas de decisão é uma ferramenta muito
importante para a vida de um testador
Muitos analistas, arquitetos, programadores e
testadores não são familiarizados com essa
técnica.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Representação:
Regra 1
Regra 2
…
Regra p
Condições
Condição-1
Condição-2
…
Condição-m
Ações
Ação-1
Ação-2
…
Ação-n
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Exemplo 1:
Tabela de decisão binária
Regra 1
Regra 2
Regra 3
Regra 4
Casado?
Sim
Sim
Não
Não
Torcedor do meu
time?
Sim
Não
Sim
Não
60
25
50
0
Condições
Ações
Desconto (R$)
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Exemplo 2:
Tabela de decisão com múltiplas ações
Regra 1
Regra 2
Regra 3
Regra 4
Condição-1
Sim
Sim
Não
Não
Condição-2
Sim
Não
Sim
Não
Ação-1
executar X
executar Y
executar X
executar Z
Ação -2
executar A
executar B
executar B
executar B
Condições
Ação
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Exemplo 3:
Tabela de decisão com condições não binárias
Regra 1
Regra 2
Regra 3
Regra 4
Condição-1
0–1
1–10
10–100
100–1000
Condição-2
<5
5
6 or 7
>7
Ação-1
executar X
executar Y
executar X
executar Z
Ação-2
executar A
executar B
executar B
executar B
Condições
Ações
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Convertendo uma tabela de decisão
para uma tabela de casos de teste:
Tabela de decisão com condições não binárias
Regra 1
Regra 2
Regra 3
Regra 4
Condição-1
0–1
1–10
10–100
100–1000
Condição-2
<5
5
6 or 7
>7
Ação-1
executar X
executar Y
executar X
executar Z
Ação-2
executar A
executar B
executar B
executar B
Condições
Ações
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Exemplo convertido:
Código
Condição-1
Condição -2
Resultados esperados
CT001
0
3
executar X / executar A
CT002
5
5
executar Y / executar B
CT003
50
7
executar X / executar B
CT004
500
10
executar Z / executar B
OBS: para adicionar mais casos de teste a tabela, podemos usar
a técnica Valor de Fronteira.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Aplicabilidade:
Geralmente é usado quando o sistema
precisa implementar regras de negócio
complexas
é aplicada quando as regras podem ser
representadas como uma combinação de
condições
quando as condições têm ações discretas
associadas com elas.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Tabela de Decisão
Exercício:
Um módulo de um sistema acadêmico avalia a situação
anual de um aluno baseado na sua média global. A
avaliação segue a seguinte regra:
se mediaAluno <= 5 o aluno é reprovado diretamente
se mediaAluno = 5 e percentualFalta <= 10% o aluno para
recuperação
se 5 <= mediaAluno < 7 o aluno vai para recuperação
se mediaAluno >= 7 o aluno é aprovado por média
se mediaAluno >= 7 e percentualFalta >= 70% o aluno vai
para recuperação
0 <= mediaAluno <= 10
Aplique a técnica Tabela de Decisão para derivar os
casos de testes que achar necessário
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Introdução:
Situação. Um website precisa operar corretamente com os seguintes
browsers: Internet Explorer 5.0, 5.5, e 6.0, Netscape 6.0, 6.1, e 7.0,
Mozilla 1.1, e Opera 7; usando de diferentes plug-ins: RealPlayer,
MediaPlayer, ou Nenhum; os clientes rodam em diferentes sistemas
operacionais: Windows 95, 98, ME, NT, 2000, e XP; recebendo
páginas de diferentes servidores: IIS, Apache, e WebLogic; o servidor
roda em em diferentes sistemas operacionais: Windows NT, 2000, e
Linux.
Combinações WEB:
8 browsers
3 plug-ins
6 SO cliente
3 servidores web
3 SO servidor
TOTAL: 1.296 combinações
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
A solução:
A resposta não é tentar testar todas as
combinações para todos os valores de
todas variáveis, mas testar todos os pares
(all pairs) de variáveis
Isto reduz significativamente o número de
testes que precisam ser criados e
executados
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Exemplo 1:
4 entradas
Cada entrada pode receber de 1 a 3
valores diferentes.
Combinações: 34 = 81 testes
Pairwise: 9 testes
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Exemplo 2:
13 entradas
Cada entrada pode receber de 1 a 3 valores
diferentes.
Combinações: 313 = 1.594.323 testes
Pairwise: 15 testes
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Exemplo 3:
20 entradas
Cada entrada pode receber de 1 a 10
valores diferentes.
Combinações: 1020 testes
Pairwise: 180 testes
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Relatos:
Brownlie of AT&T : detectou 28% mais
defeitos que o plano de testes com 1500
casos de testes, em 50% menos tempo
National Institute of Standards and
Technology: poderia ter detectado 98%
dos defeitos nos softwares médicos
Mozilla Web browser: poderia ter
detectado 76% dos defeitos encontrados
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Por que Pairwise trabalha tão bem?
Não existe nenhuma resposta
científica
Uma hipótese é que pairwise testa
todos os defeitos single-mode e doublemode
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Implementação:
Arrays ortogonais
Algoritmo AllPairs
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Arrays ortogonais :
Descoberto por Euler
Popularizou com uso em teste de hardware
É um array bi-dimensional de números
(array[m][n])
Representação: Ln(Xm), onde X é o número de
entradas a combinar 2 a 2 (X = 1..X)
Tem a seguinte propriedade: escolhida duas
colunas do array, é possível encontrar todas as
combinações de X.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Exemplo 1:
X = 3, combinações 2 a 2:{1,1}, {1,2}, {1,3}, {2,1},
{2,2}, {2,3}, {3,1}, {3,2}, e {3,3}.
Array Ortogonal L9(34)
1
2
3
4
1
1
1
1
1
2
1
2
2
2
3
1
3
3
3
4
2
1
2
3
5
2
2
3
1
6
2
3
1
2
7
3
1
3
2
8
3
2
1
3
9
3
3
2
1
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Array ortogonal com colunas com diferentes intervalos
Array Ortogonal L18(2137)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
1
1
1
2
2
2
3
3
3
1
1
1
2
2
2
3
3
3
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
4
1
2
3
1
2
3
2
3
1
3
1
2
2
3
1
3
1
2
5
1
2
3
2
3
1
1
2
3
3
1
2
3
1
2
2
3
1
6
1
2
3
2
3
1
3
1
2
2
3
1
1
2
3
3
1
2
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
7
1
2
3
3
1
2
2
3
1
2
3
1
3
1
2
1
2
3
8
1
2
3
3
1
2
3
1
2
1
2
3
2
3
1
2
3
1
Pairwise
Passos para usar arrays ortogonais:
1. Identificar as variáveis
2. Determinar os valores que cada variável pode
receber
3. Localizar uma array ortogonal que tenha uma
coluna para cada variável e seus valores
4. Mapear as atribuições de teste no array
ortogonal
5. Extrair os casos de teste
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Exemplo:
Situação. Um website precisa operar corretamente com os seguintes
browsers: Internet Explorer 5.0, 5.5, e 6.0, Netscape 6.0, 6.1, e 7.0,
Mozilla 1.1, e Opera 7; usando de diferentes plug-ins: RealPlayer,
MediaPlayer, ou Nenhum; os clientes rodam em diferentes sistemas
operacionais: Windows 95, 98, ME, NT, 2000, e XP; recebendo
páginas de diferentes servidores: IIS, Apache, e WebLogic; o servidor
roda em em diferentes sistemas operacionais: Windows NT, 2000, e
Linux.
Combinações WEB:
8 browsers
3 plug-ins
6 SO cliente
3 servidores web
3 SO servidor
TOTAL: 1.296 combinações
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
1. Identificar as variáveis
As variáveis são:
Browser
Plug-in
Sistema operacional cliente
Servidor web
Sistema operacional servidor
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
2. Determinar os valores de cada
variável
Os valores são:
Browser = Internet Explorer 5.0, 5.5 e 6.0, Netscape
6.0, 6.1 e 7.0, Mozilla 1.1 e Opera 7 (8 valores)
Plug-in = None, RealPlayer e MediaPlayer (3 valores)
Sistema operacional cliente = Windows 95, 98, ME,
NT, 2000 e XP (6 valores)
Servidor web = IIS, Apache e WebLogic (3 valores)
Sistema operacional servidor = Windows NT, 2000 e
Linux (3 valores)
Combinações: 8 x 3 x 6 x 3 x 3 = 1.296
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
3. Localizar uma array ortogonal que
tenha uma coluna para cada variável e
seus valores
Um array com 5 colunas = 5 variáveis
1 coluna com suporte aos valores de 1 a 8
3 colunas com suporte aos valores de 1 a 3
1 coluna com suporte aos valores de 1 a 6
O array seria o seguinte: 816133 (uma coluna de
1 a 8; uma coluna de 1 a 6; 3 colunas de 1 a 3)
Este array existe ?
Se não existe pegamos o menor dos maiores
arrays ortogonais
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Onde encontrar o array ?
http://www.research.att.com/~njas/oadir/index.ht
ml
Array mais adequado: L64(8243) = 64 casos
de teste
95% casos de teste a menos (1.296)
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
4. Mapear as atribuições de teste no
array ortogonal
Coluna 1 = Browser
Valores:
1 ↔ IE 5.0
2 ↔ IE 5.5
3 ↔ IE 6.0
4 ↔ Netscape 6.0
5 ↔ Netscape 6.1
6 ↔ Netscape 7.0
7 ↔ Mozilla 1.1
8 ↔ Opera 7
Resultado Parcial
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
4. Mapear as atribuições de teste no
array ortogonal
Coluna 2 = Plug-In
Valores:
1 ↔ None
2 ↔ RealPlayer
3 ↔ MediaPlayer
4 ↔ Not used (at this time)
Resultado Parcial
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
4. Mapear as atribuições de teste no
array ortogonal
Coluna 3 = Sistema operacional cliente
Valores:
1 ↔Windows 95
2 ↔ Windows 98
3 ↔ Windows ME
4 ↔ Windows NT
5 ↔ Windows 2000
6 ↔ Windows XP
7 ↔ Não usado
8 ↔ Não usado
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
4. Mapear as atribuições de teste no
array ortogonal
Coluna 4 = Servidor WEB
Valores:
1 ↔ IIS
2 ↔ Apache
3 ↔ WebLogic
4 ↔ Não usado
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
4. Mapear as atribuições de teste no
array ortogonal
Coluna 5 = Sistema operacional servidor
Valores:
1 ↔ Windows NT
2 ↔ Windows 2000
3 ↔ Linux
4 ↔ Não usado
Resultado Final
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
O que fazer com as colunas / células não
usadas do array ?
Colunas podem ser deletadas
E as linhas que tem células não usadas ?
Não podem ser deletadas, para manter a
ortogonalidade
Elas precisam ser substituídas por valores
válidos
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
5. Extrair os casos de teste
Cada linha do array é um caso de teste
Precisar ser complementado com os resultados
esperados
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Algoritmo Allpairs:
O testador não precisa procurar os arrays
ortogonais para seus testes
Geração automática dos pares
Ferramenta AETG:
http://aetgweb.argreenhouse.com.
Ferramenta AllPairs
http://www.satisfice.com
AllPairs Entrada
AllPairs Saída
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Pairwise
Algoritmo Allpairs:
~ siginifica um “Don’t care” (não importa)
A ferramenta AllPairs escolhe os valores menos usados
para substituir pelo ~
Por que obteve 48 casos de teste?
Resposta: por causa da natureza não-balanceada no algoritmo
Todos os casos de testes são válidos ?
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Teste de caso de uso
Jacobson define um "use case" como um cenário que descreve o uso
de um sistema por um ator para atingir um objetivo específico.
Um "cenário" é uma seqüência de passos que descreve interações
entre o ator e o sistema.
Testes sobre casos de uso são orientados a transações
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Teste de caso de uso
O valor de um caso de uso:
captura os requisitos funcionais do sistema na perspectiva do
usuário
Documentação independente da linguagem de programação
Pode ser usado para envolver ativamente os usuários na validação
dos requisitos
Pode ser uma documentação base para componentes, classes,
estrutura de base de dados e relações do sistema
Serve como uma base para desenvolver casos de teste do sistema.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Teste de caso de uso
Caso de Uso – Modelagem UML
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Teste de caso de uso
Caso de Uso – Especificação
Main Success Scenario
A: Actor
S: System
Extensions
Step
Action
1
A: Selects "Register for a course"
2
A: Selects course (e.g. Math 1060)
3
S: Displays course description
4
A: Selects section (Mon & Wed 9:00am)
5
S: Displays section days and times
6
A: Accepts
7
S: Adds course/section to student's course list
2a
Course does not exist
S: Display message and exit
4a
Section does not exist
S: Display message and exit
4b
Section is full
S: Display message and exit
6a
Student does not accept
S: Display message and exit
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Teste de caso de uso
Boas práticas para geração dos casos de teste
criar no mínimo um caso de teste para o fluxo principal e caso de
testes para cada extensão.
Usar as técnicas classe de equivalência e valor de fronteira, quando
necessário, para selecionar dados de entrada
Avaliar o risco das transações. Projetar menos casos de teste para
riscos menores e mais casos de teste para riscos maiores.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Teste de caso de uso
iniciar com dados normais para as transações mais freqüentes
com base nas fronteiras, fornecer dados válidos e inválidos.
Escolher transações que não são muitos usadas, mas são vitais para o
sistema
violar pré-condições (se isso pode acontecer no problema real).
verificar se a transação de caminho mais longo foi alcançada
executar transações em ordens lógicas diferentes do cenário normal
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Teste de caso de uso
Pense nas operações inesperadas que o usuário executará
Seja investigador
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
A maioria dos programadores já encontraram esse tipo de situação:
main()
{
int x;
if (x==42){ ...}
}
Teste de fluxo de dados é uma ferramenta poderosa para detectar uso
impróprio de valores de variáveis no código fonte.
É necessário ter conhecimento do código fonte.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
Variáveis tem um ciclo de vida definido. Elas são criadas, são usadas, e
são destruídas.
FORTRAN e BASIC: criação e destruição automática
C, C++, e Java): criação formal; Variáveis são explicitamente declaradas:
int x; // x is created as an integer
string y; // y is created as a string
Variáveis são usadas para alguma computação (a=b+1) ou usadas em
uma sentença condicional (if (a>42)). Em ambas, é importante a variável
ter sido inicializada antes do seu uso.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
Existem três possibilidades de ações sobre uma variável no código fonte:
~d – a variável não existe(~) e depois ela é definida (correta)
~u – a variável não existe e depois ela é usada (incorreta)
~k – a variável não existe e depois ela é destruída(Killed) (incorreta)
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
Considere a seguinte seqüência de defined (d), used (u) e killed (k):
dd – suspeito. Provavelmente um erro.
du – correto. Fluxo normal.
dk – suspeito. Provavelmente um erro.
ud – correto. Fluxo aceitável.
uu – correto. Fluxo aceitável.
uk – correto. Fluxo normal.
kd – correto. Fluxo aceitável.
ku – incorreto. Sempre é um erro.
kk – suspeito. Provavelmente um erro.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
Verificar quebra do padrão:
definir, usar, destruir
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
Os padrões define-use-kill
para x (tomados em pares
ao percorrermos os
caminhos) são:
~define – correto
define-define – suspeito
define-use - correto
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
Os padrões define-use-kill
para y (tomados em pares
ao percorrermos os
caminhos) são:
~use – suspeito
use-define – correto
define-use – correto
use-kill – correto
define-kill – suspeito
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de dados
Os padrões define-use-kill
para z (tomados em pares
ao percorrermos os
caminhos) são:
~kill – incorreto
kill-use – suspeito
use-use – correto
use-define – correto
kill-kill – suspeito
kill-define – correto
define-use – correto
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Essa abordagem de teste identifica os caminhos de execução no
código de um módulo de um programa e então cria e executa casos de
teste para cobrir esses caminhos.
Grafos de Fluxo
Grafos documentam a estrutura de controle do módulo
Os grafos consistem dos seguintes elementos:
Blocos de Processos
Pontos de Decisão
Pontos de Junção
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Bloco de Processo
Pontos de Decisão
Pontos de Junção
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
if (a>0) {x=x+1;}
if (b==3) {y=0;}
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
if (a>0 && c==1) {x=x+1;}
if (b==3 || d<0) {y=0;}
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Teste do Caminho Base (Tom McCabe)
O processo estruturado consiste dos seguintes passos:
Derivar o grafo do fluxo de controle do módulo
Cálcular a Complexidade Ciclomática (C)
Selecionar um conjunto mínimo dos caminhos independentes
(nonlooping) = C
Criar um caso de teste para cada caminho básico
Executar casos de testes
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
McCabe define:
C = arestas - nós + 2
Então, para o exemplo
temos:
C = 24 - 19 + 2 = 7
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Fluxo de Controle
Exemplo:
•ABDEGKMQS
•ACDEGKMQS
•ABDFILORS
•ABDEHKMQS
•ABDEGKNQS
•ACDFJLORS
•ACDFILPRS
Este conjunto de casos de teste irá garantir tanto cobertura de
comandos (nós) e decisões (arestas), mas não garante cobertura de
caminhos.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho