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