840 likes | 971 Views
Engenharia de Software. Técnicas de Testes de Software. 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. Classe de Equivalência.
E N D
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
Código Idade Resultado CT001 -1 CT002 0 CT003 1 CT004 15 CT005 16 CT006 17 CT007 17 CT008 18 CT009 19 CT010 54 CT011 55 CT012 56 CT013 98 CT014 99 CT015 100 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 Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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
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 Tabela de Decisão • Representação: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tabela de decisão binária Regra 1 Regra 2 Regra 3 Regra 4 Condições Casado? Sim Sim Não Não Torcedor do meu time? Sim Não Sim Não Ações Desconto (R$) 60 25 50 0 Tabela de Decisão • Exemplo 1: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tabela de decisão com múltiplas ações Regra 1 Regra 2 Regra 3 Regra 4 Condições Condição-1 Sim Sim Não Não Condição-2 Sim Não Sim Não Ação Ação-1 executar X executar Y executar X executar Z Ação -2 executar A executar B executar B executar B Tabela de Decisão • Exemplo 2: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tabela de decisão com condições não binárias Regra 1 Regra 2 Regra 3 Regra 4 Condições Condição-1 0–1 1–10 10–100 100–1000 Condição-2 <5 5 6 or 7 >7 Ações Ação-1 executar X executar Y executar X executar Z Ação-2 executar A executar B executar B executar B Tabela de Decisão • Exemplo 3: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tabela de decisão com condições não binárias Regra 1 Regra 2 Regra 3 Regra 4 Condições Condição-1 0–1 1–10 10–100 100–1000 Condição-2 <5 5 6 or 7 >7 Ações Ação-1 executar X executar Y executar X executar Z Ação-2 executar A executar B executar B executar B Tabela de Decisão • Convertendo uma tabela de decisão para uma tabela de casos de teste: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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 Tabela de Decisão • Exemplo convertido: 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 double-mode 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
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 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}. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Array Ortogonal L18(2137) 1 2 3 4 5 6 7 8 1 1 1 1 1 1 1 1 1 2 1 1 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 4 1 2 1 1 2 2 3 3 5 1 2 2 2 3 3 1 1 6 1 2 3 3 1 1 2 2 7 1 3 1 2 1 3 2 3 8 1 3 2 3 2 1 3 1 9 1 3 3 1 3 2 1 2 10 2 1 1 3 3 2 2 1 11 2 1 2 1 1 3 3 2 12 2 1 3 2 2 1 1 3 13 2 2 1 2 3 1 3 2 14 2 2 2 3 1 2 1 3 15 2 2 3 1 2 3 2 1 16 2 3 1 3 2 3 1 2 17 2 3 2 1 3 1 2 3 18 2 3 3 2 1 2 3 1 Pairwise • Array ortogonal com colunas com diferentes intervalos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
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.html • 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