Prévia do material em texto
1 Técnicas de teste DE CAIXA PRETA conteúdo 1. Particionamento de Equivalência (PE) 2. Análise de Valores Limite (AVL) 3. Teste de Tabela de Decisão 4. Teste de Transição de Estado 2 Particionamento De Equivalência TÉNICAS DE TESTE Particionamento de Equivalência (PE) Análise de Valores Limite (AVL) Teste de Tabela de Decisão Teste de Transição de Estado CAIXA PRETA Teste de Comandos e Cobertura de Comandos Testes de Desvios e Cobertura de Desvios CAIXA BRANCA Adivinhação de Erros Teste Exploratório BASEADO NA EXPERIÊNCIA Teste Baseado em Checklist TÉCNICAS DE TESTE 3 PRINCÍPIO DE TESTE DE SOFTWARE Testes Exaustivos são Impossíveis! TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. A B I2 I6 I5I3 I4 C D I1 4 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. A B I2 I6 I5I3 I4 C D I1 Considere um trecho de Código com 4 estruturas de decisão TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. A B I2 I6 I5I3 I4 C D I1 E 6 instruções 5 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. A B I2 I6 I5I3 I4 C D I1 Quantos caminhos existem? TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. A B I2 I6 I5I3 I4 C D I11. Caminho: A, I1, I6 2. Caminho: !A, B, D, I5, I6 3. Caminho: !A, B!, D, I4, I6 4. Caminho: !A, !B, C, I3, I6 5. Caminho: !A, !B, !C, I2, I6 6 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. 1. Caminho: A, I1, I6 2. Caminho: !A, B, D, I5, I6 3. Caminho: !A, B!, D, I4, I6 4. Caminho: !A, !B, C, I3, I6 5. Caminho: !A, !B, !C, I2, I6 A B I2 I6 I5I3 I4 C D I1 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. 1. Caminho: A, I1, I6 2. Caminho: !A, B, D, I5, I6 3. Caminho: !A, B!, D, I4, I6 4. Caminho: !A, !B, C, I3, I6 5. Caminho: !A, !B, !C, I2, I6 A B I2 I6 I5I3 I4 C D I1 7 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. 1. Caminho: A, I1, I6 2. Caminho: !A, B, D, I5, I6 3. Caminho: !A, B!, D, I4, I6 4. Caminho: !A, !B, C, I3, I6 5. Caminho: !A, !B, !C, I2, I6 A B I2 I6 I5I3 I4 C D I1 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. 1. Caminho: A, I1, I6 2. Caminho: !A, B, D, I5, I6 3. Caminho: !A, B!, D, I4, I6 4. Caminho: !A, !B, C, I3, I6 5. Caminho: !A, !B, !C, I2, I6 A B I2 I6 I5I3 I4 C D I1 8 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. 3 iterações do loop teremos 125 caminhos possíveis. A B I2 I6 I5I3 I4 C D I1 3 Vezes TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. 20 iterações do loop teremos 95.367.431.640.625 caminhos possíveis. A B I2 I6 I5I3 I4 C D I1 20 Vezes 9 TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. • Realizar um teste exaustivo, cobrindo todas as combinações possíveis, é geralmente impraticável. • Durante a atividade de teste, o testador é limitado a usar apenas um subconjunto das entradas possíveis. TESTES EXAUSTIVOS SÃO IMPOSSÍVEIS. • Este subconjunto deve ser selecionado de forma a maximizar a probabilidade de identificar defeitos no programa. • Prioriza-se a eficiência na descoberta de defeitos sobre a abrangência total das entradas possíveis. 10 PARTICIONAMENTO DE EQUIVALÊNCIA (PE) A técnica de Particionamento de Equivalência busca superar a impossibilidade de testes completos. PARTICIONAMENTO DE EQUIVALÊNCIA (PE) • Embora possa haver um número enorme de possíveis entradas; • O número de comportamentos esperados de um programa nessas entradas é geralmente finito. 11 • Esse número é especialmente limitado; • Quando consideramos comportamentos relacionados a aspectos específicos da operação da aplicação. PARTICIONAMENTO DE EQUIVALÊNCIA (PE) EXEMPLO 1 – TAXAS DE IMPOSTO • Um sistema define o valor do imposto de acordo com a renda. • O imposto pode ser de 0%, 19%, 33% ou 45%. • Existem potencialmente infinitos valores possíveis para a renda; • Mas apenas 4 tipos de decisões possíveis são tomadas pelo sistema. 12 EXEMPLO 2 – IMPRIMIR FOLHA • Um usuário preenche um formulário da web e depois deseja imprimi-lo; • A impressão pode ser frente ou frente e verso; • Existem várias maneiras de preencher um formulário, especialmente se for complexo. EXEMPLO 2 – IMPRIMIR FOLHA O que queremos testar neste caso são apenas 2 tipos de comportamento: 1. A impressão correta quando for frente; 2. A impressão correta quando for frente e verso. 13 EXEMPLO 3 – COMPRA DE INGRESSOS • O usuário preenche um formulário, incluindo o campo "idade". • Em seguida, ele pode comprar um ingresso; • Com o procedimento sendo diferente dependendo da idade dele. EXEMPLO 3 – COMPRA DE INGRESSOS Escolher Opção Preencher Formulário Mensagem de Erro Logout Compra Menor Idade Compra Maior Idade Incorreto Correto Sair Comprar Ingresso Idade = 18 Existem muitas possibilidades para preencher o formulário, mas apenas 4 ações possíveis 14 AÇÃO 1 – MENSAGEM DE ERRO Escolher Opção Preencher Formulário Mensagem de Erro Logout Compra Menor Idade Compra Maior Idade Incorreto Correto Sair Comprar Ingresso Idade = 18 AÇÃO 2 – LOGOUT Escolher Opção Preencher Formulário Mensagem de Erro Logout Compra Menor Idade Compra Maior Idade Incorreto Correto Sair Comprar Ingresso Idade = 18 15 AÇÃO 3 – COMPRA MENOR DE IDADE Escolher Opção Preencher Formulário Mensagem de Erro Logout Compra Menor Idade Compra Maior Idade Incorreto Correto Sair Comprar Ingresso Idade = 18 AÇÃO 4 – COMPRA MAIOR DE IDADE Escolher Opção Preencher Formulário Mensagem de Erro Logout Compra Menor Idade Compra Maior Idade Incorreto Correto Sair Comprar Ingresso Idade = 18 16 PARTICIONAMENTO DE EQUIVALÊNCIA (PE) Normalmente é possível reduzir o comportamento de teste de um programa para um número finito de variantes. CLASSES DE EQUIVALÊNCIA O método de particionamento de equivalência divide um domínio dado em subconjuntos chamados partições ou classes de equivalência 17 CLASSES DE EQUIVALÊNCIA • De forma que para cada 2 elementos de uma mesma partição • Temos o mesmo comportamento do programa. EXEMPLO – CLASSES DE EQUIVALÊNCIA • Se um sistema atribui um desconto para estudantes; • Então todos os estudantes formarão uma partição de equivalência; • Correspondendo à atribuição do desconto. 18 CLASSES DE EQUIVALÊNCIA • Do ponto de vista do testador, valores pertencentes à mesma partição são tratados da mesma forma. • Portanto, cada elemento de uma determinada partição é uma escolha igualmente boa para teste. CLASSES DE EQUIVALÊNCIA • Se um elemento detectar um defeito, qualquer outro também detecta; • Se não detectar, os outros também não detectam. 19 CLASSES DE EQUIVALÊNCIA O critério reduz o domínio de entrada a um tamanho passível de ser tratado durante a atividade de teste Programa P D(P) DOMÍNIO DE ENTRADA DO Programa EXEMPLO: CLASSES DE EQUIVALÊNCIA Um museu oferece meia-entrada na plataforma de compras de ingressos online para: 1. Crianças/adolescentes de 6 a 18 anos; 2. Idosos (60 anos ou mais); 3. Estudantes acima de 18 anos; 4. Professores das redes pública e privada de ensino. 20 EXEMPLO: CLASSES DE EQUIVALÊNCIA • Caso de Teste: testar a funcionalidade de atribuir desconto de meia entrada; • Técnica: Particionamento de Equivalência (PE) Programa P D(P) DOMÍNIO DE ENTRADA DO Programa Visitantes do museu EXEMPLO: CLASSES DE EQUIVALÊNCIA Classes de Equivalência: 4 classes • Valores pertencentes à mesma classe são tratados da mesma forma. • Cada elemento de uma determinada classe é uma escolha igualmente boa para teste. Estudantes Programa P Crianças e Adolescentes Idosos Professores D(P) 21 EXEMPLO: CLASSES DE EQUIVALÊNCIA • A técnica de particionamento de equivalência é versátil; • Pode ser utilizada em qualquer situação: • Em qualquer nível de teste • Em qualquer tipo de teste. 1. TESTE FUNCIONAL 2. TESTE NÃO FUNCIONAL 3. TESTE CAIXA BRANCA 4. TESTE CAIXA PRETA EXEMPLO: CLASSES DE EQUIVALÊNCIA • Isso ocorre porque se resume à divisãodos dados possíveis em grupos. • Essa técnica pode ser aplicada para: • Domínios de Entrada; • Domínios de Saída; • Domínios Internos: variáveis que não são diretamente fornecidas na entrada nem retornadas na saída. 1. TESTE FUNCIONAL 2. TESTE NÃO FUNCIONAL 3. TESTE CAIXA BRANCA 4. TESTE CAIXA PRETA 22 EXEMPLO: CLASSES DE EQUIVALÊNCIA • O domínio que dividimos em partições de equivalência não precisa ser um domínio numérico; • Pode ser qualquer conjunto não vazio. Programa P D(P) DOMÍNIO DE ENTRADA DO Programa DOMÍNIOS PARA APLICAR TÉCNICAS DE P.E. • Números Naturais: divisão em números pares e ímpares. • Palavras: divisão por comprimento da palavra, uma letra, duas letras, etc. • Dados Temporais: divisão por ano de nascimento, por mês em um determinado ano, etc. • Variáveis Categóricas: Windows, Linux, macOS • Exemplo: divisão em partições de um único elemento, ({Windows}, {Linux}, {macOS}). Programa P D(P) DOMÍNIO DE ENTRADA DO Programa 23 CORRETUDE DO PARTICIONAMENTO É muito importante que a partição que façamos seja correta, o que significa que: 1. Cada elemento do domínio pertence exatamente a uma partição de equivalência. 2. Nenhuma partição de equivalência está vazia. CORRETUDE DO PARTICIONAMENTO CORRETO ✓ INCORRETO ✕ INCORRETO ✕ 24 EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS • Um programa lê 3 valores inteiros não negativos de uma caixa de diálogo de entrada. • Os 3 valores representam os comprimentos dos lados de um triângulo. • O programa exibe uma mensagem informando se o triângulo é escaleno, isósceles, equilátero ou não é um triângulo. EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS Equilátero Isósceles Escaleno 25 EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS Suponhamos que queiramos aplicar a técnica de Partições de Equivalência (EP) • Domínio de Entrada: conjunto de todas as possíveis triplas (a, b, c) de inteiros não negativos; • Domínio de Saída: o tipo de triângulo. 〈 (2, 2, 4), Inexistente 〉 EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS • Parece natural dividir o domínio de entrada em 4 partições ou classes • Correspondentes às 4 possíveis saídas mencionadas anteriormente. Inexistente Programa P Equilátero Isósceles Escaleno D(P) 26 EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS • No entanto, ao analisar mais de perto; • Descobre-se que todo triângulo equilátero também é um triângulo isósceles; • Estamos lidando com uma partição de equivalência, que é um subconjunto adequado de outra partição Equilátero Isósceles EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS • Equilátero: triângulo no qual todos os 3 lados têm o mesmo comprimento • Todos os 3 ângulos internos são iguais, cada um medindo 60 graus. Equilátero Isósceles 27 EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS • Isósceles: Um triângulo isósceles é um triângulo com pelo menos 2 lados de igual comprimento. • Isso significa que pelo menos 2 lados do triângulo são iguais. Equilátero Isósceles EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS • Todo triângulo equilátero é também um triângulo isósceles. • Vocês lembram que o triângulo equilátero possui 3 lados iguais? • Então, temos pelo menos 2 lados são iguais, assim como no triângulo isósceles. (40, 40, 40) (40, 40, 40) (90, 90, 70) Equilátero Isósceles 28 EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS A. Entradas representando triângulos equiláteros; B. Entradas representando triângulos isósceles, que não são equiláteros; C. Entradas representando triângulos escalenos; D. Entradas que se enquadram na categoria "não é um triângulo”. 〈 (10, 10, 10), Equilátero 〉 〈 (70, 70, 70), Equilátero 〉 〈 (40, 40, 40), Equilátero 〉 〈 (60, 60, 40), Isósceles 〉 〈 (50, 30, 50), Isósceles 〉 〈 (90, 90, 70), Isósceles 〉 〈 (50, 70, 90), Escaleno 〉 〈 (30, 40, 60), Escaleno 〉 〈 (30, 20, 40), Escaleno 〉 〈 (1, 2, 3), Inexistente 〉 〈 (2, 5, 10), Inexistente 〉 A B C D EXEMPLO 1 - CORRETUDE DO PARTICIONAMENTO | TRIÂNGULOS Agora, essa divisão está correta • Cada tripla de números fornecidos como entrada; • Corresponde exatamente a uma das 4 partições possíveis acima. 〈 (10, 10, 10), Equilátero 〉 〈 (70, 70, 70), Equilátero 〉 〈 (40, 40, 40), Equilátero 〉 〈 (60, 60, 40), Isósceles 〉 〈 (50, 30, 50), Isósceles 〉 〈 (90, 90, 70), Isósceles 〉 〈 (50, 70, 90), Escaleno 〉 〈 (30, 40, 60), Escaleno 〉 〈 (30, 20, 40), Escaleno 〉 〈 (1, 2, 3), Inexistente 〉 〈 (2, 5, 10), Inexistente 〉 EQUILÁTERO Isósceles Não Equiláteros Escalenos Inexistente 29 EXEMPLO 2 - ORDENAÇÃO Queremos classificar o conjunto de todas as possíveis sequências finitas de números em relação à sua ordenação. EXEMPLO 2 - CORRETUDE DO PARTICIONAMENTO | ORDENAÇÃO Uma divisão natural de equivalência desses dados em partições de equivalência poderia ser assim: A. Sequências Ascendentes; B. Sequências Descendentes C. Sequências Não Ordenadas. (1, 2, 3, 4 , 5) (5, 4, 3, 2, 1) (5, 1, 5, 2, 3) A B C 30 EXEMPLO 2 - CORRETUDE DO PARTICIONAMENTO | ORDENAÇÃO Uma sequência de um único elemento é tanto uma sequência ascendente quanto uma sequência descendente. (3) EXEMPLO 2 - CORRETUDE DO PARTICIONAMENTO | ORDENAÇÃO Onde classificar a sequência vazia (contendo 0 elementos)? ( ) 31 EXEMPLO 2 - CORRETUDE DO PARTICIONAMENTO | ORDENAÇÃO A divisão correta deve levar em conta esses "casos limite" EXEMPLO 2 - CORRETUDE DO PARTICIONAMENTO | ORDENAÇÃO • Partição 1: a sequência vazia; • Partição 2: todas as sequências de um único elemento; • Partição 3: todas as sequências ascendentes com pelo menos dois elementos; • Partição 4: todas as sequências descendentes com pelo menos dois elementos; • Partição 5: todas as sequências não ordenadas com mais de dois elementos; ( ) (1) (2) (3) (1, 2, 3, 4, 5) (1, 2, 3) (1, 2) P1 P2 P3 (5, 4, 3, 2, 1) (3, 2, 1) (2, 1) P4 (5, 1, 4, 2, 3) (1, 3, 2) P5 32 PARTIÇÕES VÁLIDAS • Partições Válidas: contêm valores "normais", "corretos", ou seja, valores esperados (aceitos) pelo sistema; • Valores Válidos, são: • Aqueles que devem ser processados pelo sistema; • Aqueles para os quais a especificação define seu processamento. PARTIÇÕES INVÁLIDAS • Partições Válidas: contêm valores que o componente ou sistema deve rejeitar; • Exemplo: dados com sintaxe incorreta, excedendo intervalos aceitáveis, etc. • Valores Incorretos, são: • Aqueles que devem ser ignorados ou rejeitados pelo sistema. • Aqueles para os quais a especificação não define seu processamento. 33 EXEMPLO 2 - ORDENAÇÃO • As 5 partições identificadas são consideradas válidas; • Pois contêm dados corretos esperados pelo sistema. ( ) (1) (2) (3) (1, 2, 3, 4, 5) (1, 2, 3) (1, 2) P1 P2 P3 (5, 4, 3, 2, 1) (3, 2, 1) (2, 1) P4 (5, 1, 4, 2, 3) (1, 3, 2) P5 EXEMPLO 2 - ORDENAÇÃO Partição Inválida: aquelas que contêm elementos que não são strings numéricas. (“A”, “D”, “C”, “E”) (“!”, “3”, “2”) P6 34 DERIVANDO CASOS DE TESTES • Na técnica de particionamento de equivalência (EP), os itens de cobertura são as partições de equivalência. • O conjunto mínimo de casos de teste para alcançar 100% de cobertura • É aquele que inclui cada partição de equivalência. DOMÍNIO UNIDIMENSIONAL - DERIVANDO CASOS DE TESTES • Domínio Unidimensional: um único domínio e uma única divisão; • O número mínimo de casos de teste é igual ao número de partições de equivalência identificadas. D(P) CASOS DE TESTE Programa T DOMÍNIO DE ENTRADA DO Programa 35 DOMÍNIO MULTIDIMENSIONAL - DERIVANDO CASOS DE TESTES • Domínio Multidimensional: mais de um domínio • O número de casos de teste depende de como tratamos as combinações de partições inválidas • E possíveis dependências entre valores e partições de diferentes domínios. D(P) CASOS DE TESTE Programa T DOMÍNIO DE ENTRADA DOPrograma COBERTURA DE TESTES | PARTIÇÕES DE EQUIVALÊNCIA (PE) A cobertura, geralmente expressa como uma porcentagem, é medida como: A. O número de partições de equivalência testadas usando pelo menos um valor; B. Número total de partições de equivalência definidas; 36 EXEMPLO – COBERTURA DE TESTES | PESEL • O PESEL é o número de identificação pessoal do cidadão usado pelo governo polonês; • Cada cidadão polonês tem um número de PESEL único; • É composto por 11 dígitos. O formato dos números de PESEL é YYMMDDZZZXQ EXEMPLO – COBERTURA DE TESTES | PESEL • YYMMDD: representa a data de nascimento, com informações do século codificadas no campo do mês; • ZZZ: é um número de identificação único. • X: indica o sexo, onde números pares representam feminino e números ímpares representam masculino. • Q: é um dígito de verificação usado para verificar a validade do PESEL. O formato dos números de PESEL é YYMMDDZZZXQ 37 CLASSES DE EQUIVALÊNCIA | PESEL Nascimento: 1800 - 1899 Entrada PESEL Correto PESEL Incorreto Menor De Idade Maior De Idade Sintaxe Inválida Semântica Inválida Nascimento: 1900 - 1999 Nascimento: 2000 - 2006 Nascimento: 2007 - 2099 Nascimento: 2100 - 2199 Nascimento: 2200 - 2299 Somente Dígitos (Curto) Somente Dígitos (Longo) Caracteres Proibidos Digito Verificador Incorreto Número de Dia Errado Outros Problemas EXEMPLO – COBERTURA DE TESTES | PESEL Definimos os seguintes casos de teste: • PESEL de um adulto nascido em 1898. • PESEL de um adulto nascido em 1999. • PESEL = "1234" (muito curto). D(P) CASOS DE TESTE Programa T DOMÍNIO DE ENTRADA DO Programa 38 EXEMPLO – COBERTURA DE TESTES | PESEL • Este conjunto de 3 casos de teste • Cobre 3 das 12 partições de equivalência identificadas • Alcançando uma cobertura de 25%. DOMÍNIO MULTIDIMENSIONAL - DERIVANDO CASOS DE TESTES Uma abordagem alternativa é necessária quando os testes precisam abranger partições de equivalência de múltiplos domínios simultaneamente. 39 DOMÍNIO MULTIDIMENSIONAL - DERIVANDO CASOS DE TESTES • Nessa situação, é uma boa prática não criar casos de teste que cubram duas ou mais partições inválidas; • Devido ao que é chamado de “Defect Masking“ (Mascaramento de Defeitos) DEFECT MASKING – MASCARAMENTO DE DEFEITOS • Definição: Defeito que não é detectado por um conjunto de testes. • Causas: Pode ocorrer quando testes não cobrem todas as situações possíveis. • Consequências: Defeitos permanecem não detectados, resultando em falhas no software 40 DERIVANDO CASOS DE TESTES | DOMÍNIO MULTIDIMENSIONAL 1. Crie o menor número possível de casos de teste • Compostos apenas por dados de teste de partições válidas; • Que cubram todas as partições válidas de todos os domínios. CASOS DE TESTE T DERIVANDO CASOS DE TESTES | DOMÍNIO MULTIDIMENSIONAL 2. Para cada partição inválida não coberta: • Crie um caso de teste separado ; • No qual os dados dessa partição ocorrerão; • E todos os outros dados virão das partições válidas. CASOS DE TESTE T 41 EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL • Um sistema dá uma nota para um estudante com base em 2 dados: • Exercícios: 0 - 50 • Prova: 0 - 50 • O aluno passa no curso se a pontuação total exceder 50. EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL Os dados de entrada do caso de teste consistirão em duas partes: 1. Pontos de Exercícios 2. Pontos de Prova. D(P) CASOS DE TESTE Programa T DOMÍNIO DE ENTRADA DO Programa 42 EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL Domínio da variável A = “Notas de Exercício” • (A1) Partição Válida: números de 0 a 50. • (A2) Partição Inválida: números menores que 0. • (A3) Partição Inválida: números maiores que 50. Notas de Exercícios 0 50.00 A2 A1 A3 A EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL Domínio da variável B = “Nota de Prova” • (B1) Partição Válida: números de 0 a 50. • (B2) Partição Inválida: números menores que 0. • (B3) Partição Inválida: números maiores que 50. Nota de Prova 0 50.00 B2 B1 B3 B 43 EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL Queremos cobrir todas as partições de equivalência dos 2 domínios, A e B. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL As partições válidas são A1 e B1 Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B 44 EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL Todas as outras (A2, A3, B2, B3) são partições Inválidas. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL • Cada caso de teste contém como dados de entrada: • Pontos de exercício; • Pontos de prova; • Cada caso de teste deve cobrir uma partição de cada domínio. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B 45 EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL 1. Cobrimos as partições válidas primeiro • Como só temos uma partição válida em cada domínio; • Um caso de teste é suficiente, por exemplo: • TC1: A = 25, B = 30 • Cobrindo a partição válida A1 e a partição válida B1. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL • Temos 2 partições inválidas para cobrir em A e 2 em B. • Precisamos de mais 4 casos de teste em que essas partições serão testadas individualmente; Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B 46 EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL • TC 2: A = -8, B = 35 • Cobrindo a partição inválida A2; • Adicionalmente cobre B1 Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL • TC 3: A = 48, B = -11 • Cobrindo a partição inválida B2; • Adicionalmente cobre A1. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B 47 EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL • TC 4: A = 64, B = 4 • Cobrindo a partição inválida A3; • Adicionalmente cobre B1 Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B EXEMPLO - DERIVANDO CASOS DE TESTES | MULTIDIMENSIONAL • TC 5: A = 12, B = 154 • Cobrindo a partição inválida B3; • Adicionalmente cobre A1. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B 48 EXEMPLO – DEFECT MASKING| DOMÍNIO MULTIDIMENSIONAL • Se estivéssemos testando uma situação em que ambos os valores viessem de partições inválidas; • Poderia ocorrer o fenômeno de “Defect Masking". EXEMPLO – DEFECT MASKING| DOMÍNIO MULTIDIMENSIONAL Suponha que o sistema verifique que um aluno tenha passado em uma disciplinaatravés do seguinte procedimento 49 EXEMPLO – DEFECT MASKING| DOMÍNIO MULTIDIMENSIONAL ENTRADA: Nota de Exercícios, Nota de Prova SE ((Nota de Exercícios + Nota de Prova) > 50) ENTÃO RETORNE “Aprovado” SENÃO RETORNE “Reprovado” EXEMPLO – DEFECT MASKING| DOMÍNIO MULTIDIMENSIONAL Agora considere o seguinte caso de teste: • TC6: A = -28, B = 105 • Cobre as partições inválidas A2 e B3. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B 50 EXEMPLO – DEFECT MASKING| DOMÍNIO MULTIDIMENSIONAL • Nessa situação, a pontuação total será: -28 + 105 = 77 • Portanto, o sistema retornará um resultado de “Aprovado” ENTRADA: Nota de Exercícios, Nota de Prova SE ((Nota de Exercícios + Nota de Prova) > 50) ENTÃO RETORNE “Aprovado” SENÃO RETORNE “Reprovado” EXEMPLO – DEFECT MASKING| DOMÍNIO MULTIDIMENSIONAL • Apesar das entradas estarem incorretas; • Este é um exemplo de como o defeito em um dos valores pode ser mascarado pelo outro; • Resultando em um comportamento aparentemente correto do sistema. Notas de Exercícios 0 50.00 A2 A1 A3 A Nota de Prova 0 50.00 B2 B1 B3 B 51 COBERTURA DE CADA ESCOLHA • Aplicada ao caso multidimensional, ou seja, no caso em que há mais de um domínio • Cada caso de teste cobre uma partição da distribuição de cada domínio. • Essa cobertura é um dos tipos mais simples (e fracos) aplicados ao caso multidimensional. COBERTURA – CADA ESCOLHA • Ela requer que cada partição de cada domínio seja testada pelo menos uma vez; • Na prática, utilizando este método, o testador tenta fazer com que o próximo caso de teste; • Cubra o maior número possível de itens de cobertura previamente não cobertos. 52 EXEMPLO: COBERTURA – CADA ESCOLHA • Estamos testando um software de prateleira para venda geral. • Isso significa que precisamos testá-lo em diferentes ambientes. • O programa funciona com diferentes sistemas operacionais e navegadores. • Portanto, é necessário testar o funcionamento de diferentes navegadores em diferentes sistemas operacionais. EXEMPLO: COBERTURA – CADA ESCOLHA Vamos assumir que temos os seguintes 4 navegadores para testar: • Google Chrome (GC) • Firefox (F) • Safari (S) • Opera (O) 53 EXEMPLO: COBERTURA – CADA ESCOLHA E os seguintes três sistemas operacionais: • Windows (W) • Linux (L) • iOS EXEMPLO: COBERTURA – CADA ESCOLHA • Para simplificar, não incluímos versões específicas de sistemas operacionais ou navegadores. • Cada tipo de navegador forma uma partição de equivalência de um único elemento, • Resultando em quatro partições: {GC}, {F}, {S} e {O}. 1.{GC} 2.{F} 3.{S} 4.{O} 54 EXEMPLO: COBERTURA – CADA ESCOLHA • Cada sistema operacional, por sua vez, cria 1 partição de equivalência de um único elemento; • Resultando em um total de três partições: {W}, {L} e {iOS}. 1.{W} 2.{L} 3.{iOS} EXEMPLO: COBERTURA – CADA ESCOLHA • Para cada partição identificada, deve haver um caso de teste cobrindo um valor dessa partição. • Os casos de teste são representados por um par de dados de teste: (tipo de navegador, sistema operacional). 1.{GC} 2.{F} 3.{S} 4.{O} 1.{W} 2.{L} 3.{iOS} 55 EXEMPLO: COBERTURA – CADA ESCOLHA No exemplo, 4 casos de teste são suficientes para atender ao critério de cobertura, por exemplo: • TC1: (GC, W) • TC2: (F, L) • TC3: (S, iOS) • TC4: (O, W) 1.{GC} 2.{F} 3.{S} 4.{O} 1.{W} 2.{L} 3.{iOS} TIPOS DE PROBLEMAS DETECTADOS • A técnica de particionamento de equivalência identifica problemas decorrentes do processamento de dados defeituosos; • Problemas decorrentes de erros no modelo de domínio. 56 análise De Valores Limite TÉNICAS DE TESTE Particionamento de Equivalência (PE) Análise de Valores Limite (AVL) Teste de Tabela de Decisão Teste de Transição de Estado CAIXA PRETA Teste de Comandos e Cobertura de Comandos Testes de Desvios e Cobertura de Desvios CAIXA BRANCA Adivinhação de Erros Teste Exploratório BASEADO NA EXPERIÊNCIA Teste Baseado em Checklist TÉCNICAS DE TESTE 57 ANÁLISE DE VALOR LIMITE - BOUNDARY VALUE ANALYSIS (BVA) • Análise de Valor Limite (Boundary Value Analysis - BVA) • Técnica construída sobre a técnica de Particionamento de Equivalência (PE); • É versátil e detecta problemas semelhantes ao Particionamento de Equivalência (PE); ANÁLISE DE VALOR LIMITE - BOUNDARY VALUE ANALYSIS (BVA) • A diferença está na seleção de elementos específicos das partições de equivalência para teste na Análise de Valor Limite . • Na Análise de Valor Limite, escolhemos os elementos que estão nos limites dessas partições para teste. 58 ANÁLISE DE VALOR LIMITE - BOUNDARY VALUE ANALYSIS (BVA) • Um valor limite de uma partição é o menor ou o maior elemento dessa partição. • Para falar de "menor" e "maior", é necessário definir uma relação de ordem nos elementos do domínio ANÁLISE DE VALOR LIMITE - BOUNDARY VALUE ANALYSIS (BVA) • A técnica BVA só pode ser aplicada a domínios cujos elementos estão ordenados por alguma relação de ordem, por exemplo: • Conjuntos de números naturais, inteiros ou reais; • Valores relacionados a data ou hora. 59 VALORES DE FRONTEIRA Os valores de fronteira são sempre definidos para uma partição de equivalência específica. EXEMPLO DE VALORES DE FRONTEIRA | IDADE • Considere o domínio "idade", contendo os números naturais entre 1 e 120; • Dividido em 2 classes de equivalência (1, 2, ..., 18) P1 – CRIANÇAS (19, 20, ..., 120) P2 – ADULTOS 60 EXEMPLO DE VALORES DE FRONTEIRA | IDADE Valores de Fronteira • P1 – Crianças • Menor: 1 • Maior: 18 (1, 2, ..., 18) P1 – CRIANÇAS 181 Valores de Fronteira EXEMPLO DE VALORES DE FRONTEIRA | IDADE Valores de Fronteira • P2 – Adultos • Menor: 19 • Maior: 120 12019 Valores de Fronteira (19, 20, ..., 120) P2 – ADULTOS 61 DERIVANDO CASOS DE TESTES 1. Identifique o domínio que você deseja analisar; 2. Realize o particionamento de equivalência deste domínio em partições de equivalência; DERIVANDO CASOS DE TESTES 3. Para cada partição de equivalência identificada: • Determine seus valores de fronteira: • Às vezes a análise pode ser limitada apenas a certas partições; • Pode não ser necessário levar em conta todas as partições de equivalência determinadas. 62 DERIVANDO CASOS DE TESTES 4. Para cada valor de fronteira • Determine os itens de cobertura: os elementos a serem testados para este valor de fronteira. DERIVANDO CASOS DE TESTES Os valores de fronteira (condições de teste) não são necessariamente os mesmos que os elementos a serem selecionados para teste (itens de cobertura). 63 DERIVANDO CASOS DE TESTES • Isso dependerá de quais partições estamos considerando e da variante escolhida do método BVA. • Isso ocorre porque existem duas variantes principais do BVA • BVA de 2 valores • BVA de 3 valores. BVA DE 2 VALORES • Para cada valor de fronteira identificado, • Esse valor e seu vizinho mais próximo que não pertence à partição à qual o valor de fronteira pertence • São selecionados para teste. 7610 Valores de Fronteira (1, 2, 3, 4, 5, 6) P 64 BVA DE 3 VALORES • Para cada valor de fronteira identificado; • selecionamos esse valor e ambos os seus vizinhos para teste; • Independentemente das partições a que pertencem. 765210 Valores de Fronteira (1, 2, 3, 4, 5, 6) P EXEMPLO – ANÁLISE DE VALOR LIMITE Um sistema oferece descontos em bilhetes para passageiros: • Desconto Infantil: menores de 18 anos; • Desconto Sênior: maiores de 65 anos; • Sem Desconto: Passageiros com idade entre 18 e 65 anos. 65 PASSO 1. IDENTIFIQUE O DOMÍNIO • A variável a ser analisada é a idade do passageiro; • Que é um númerointeiro não negativo. D(P) = { 0, 1, 2,..., 127 } PASSO 2. IDENTIFIQUE AS CLASSES DE EQUIVALÊNCIA • P1 – Desconto Infantil • P2 – Bilhete Regular • P3 – Desconto Sênior (0, 1, ..., 17) P1 (18, 19, ..., 64, 65) P2 (66, 67, ..., 127) P3 66 PASSO 3. IDENTIFIQUE VALORES DE FRONTEIRA 170 Valores de Fronteira (0, 1, ..., 17) P1 – DESCONTO INFANTIL 6518 Valores de Fronteira (18, 19, ..., 65) P2 – BILHETE REGULAR 12766 Valores de Fronteira (66, 67, ..., 127) P3 – DESCONTO SÊNIOR PASSO 4. IDENTIFIQUE OS VALORES A SEREM TESTADOS • Se aplicarmos o BVA de 2 valores para todas as partições de equivalência; • Todos os valores de fronteira identificados devem ser considerados para teste; 18170-1 Valores de Fronteira (0, 1, ..., 17) P1 – DESCONTO INFANTIL 66651817 Valores de Fronteira (18, 19, ..., 65) P2 – BILHETE REGULAR 1281276665 Valores de Fronteira (66, 67, ..., 127) P3 – DESCONTO SÊNIOR 67 PASSO 4. IDENTIFIQUE OS VALORES A SEREM TESTADOS Casos de Teste – BVA 2 Valores • 〈(0, 17), Desconto Infantil 〉 • 〈(18, 65), Bilhete Regular 〉 • 〈(66, 127), Desconto Sênior 〉 170 Valores de Fronteira (0, 1, ..., 17) P1 – DESCONTO INFANTIL 6518 Valores de Fronteira (18, 19, ..., 65) P2 – BILHETE REGULAR 12766 Valores de Fronteira (66, 67, ..., 127) P3 – DESCONTO SÊNIOR PASSO 4. IDENTIFIQUE OS VALORES A SEREM TESTADOS • Esses valores são suficientes • Devido à simetria entre quaisquer 2 valores de fronteira adjacentes de duas partições. 170 Valores de Fronteira (0, 1, ..., 17) P1 – DESCONTO INFANTIL 6518 Valores de Fronteira (18, 19, ..., 65) P2 – BILHETE REGULAR 12766 Valores de Fronteira (66, 67, ..., 127) P3 – DESCONTO SÊNIOR 68 PASSO 4. IDENTIFIQUE OS VALORES A SEREM TESTADOS • 65 como um valor de fronteira de P2 tem um vizinho 66 de fora da partição • Que também é um valor de fronteira de P3 • E seu vizinho de outra partição é 65. • Supomos aqui que o valor -1 é inviável. 18170-1 Valores de Fronteira (0, 1, ..., 17) P1 – DESCONTO INFANTIL 66651817 Valores de Fronteira (18, 19, ..., 65) P2 – BILHETE REGULAR 1281276665 Valores de Fronteira (66, 67, ..., 127) P3 – DESCONTO SÊNIOR PASSO 4. IDENTIFIQUE OS VALORES A SEREM TESTADOS Se aplicarmos o BVA de 3 valores para todas as partições de equivalência; 18171610-1 Valores de Fronteira (0, 1, ..., 17) P1 – DESCONTO INFANTIL 666564191817 Valores de Fronteira (18, 19, ..., 65) P2 – BILHETE REGULAR 128127126676665 Valores de Fronteira (66, 67, ..., 127) P3 – DESCONTO SÊNIOR 69 PASSO 4. IDENTIFIQUE OS VALORES A SEREM TESTADOS 18171610-1 Valores de Fronteira (0, 1, ..., 17) P1 – DESCONTO INFANTIL 666564191817 Valores de Fronteira (18, 19, ..., 65) P2 – BILHETE REGULAR 128127126676665 Valores de Fronteira (66, 67, ..., 127) P3 – DESCONTO SÊNIOR Casos de Teste – BVA 3 Valores • 〈(-1, 17), “Erro: Idade Inválida” 〉 • 〈(0, 17), Desconto Infantil 〉 • 〈(1, 16), Desconto Infantil 〉 • 〈(18, 65), Bilhete Regular 〉 • 〈(19, 64), Bilhete Regular 〉 • 〈(66, 127), Desconto Sênior 〉 • 〈(67, 126), Desconto Sênior 〉 • 〈(66, 128), “Erro: Idade Inválida” 〉 COBERTURA Análise de Valor Limite os itens de cobertura são os valores limite das partições de equivalência. 70 COBERTURA - BVA DE 2 VALORES A. Número de valores limite testados B. Número total de valores limite identificados. EXEMPLO - COBERTURA | BVA DE 2 VALORES 7610 Valores de Fronteira (1, 2, 3, 4, 5, 6) P • Se testarmos 3 valores limites: { 0, 1, 6 } • Número total de Limites: 4 • Alcançamos uma cobertura de 75%. 71 COBERTURA - BVA DE 3 VALORES A. Número de valores limite testados com seus vizinhos B. Número total de valores limite identificados, incluindo seus vizinhos. EXEMPLO - COBERTURA | BVA DE 3 VALORES 765210 Valores de Fronteira (1, 2, 3, 4, 5, 6) P • Se testarmos 4 valores limites: { 0, 1, 5, 6 } • Número total de Limites: 6 • Alcançamos uma cobertura de 66,66%. 72 teste de tabela De Decisão TÉNICAS DE TESTE Particionamento de Equivalência (PE) Análise de Valores Limite (AVL) Teste de Tabela de Decisão Teste de Transição de Estado CAIXA PRETA Teste de Comandos e Cobertura de Comandos Testes de Desvios e Cobertura de Desvios CAIXA BRANCA Adivinhação de Erros Teste Exploratório BASEADO NA EXPERIÊNCIA Teste Baseado em Checklist TÉCNICAS DE TESTE 73 TESTE DE TABELA DE DECISÃO É uma técnica usada para verificar a correção das implementações de regras de negócio. TESTE DE TABELA DE DECISÃO Uma regra de negócio geralmente assume a forma de uma implicação lógica: SE (condição) ENTÃO (ação); 74 EXEMPLO 1 – REGRAS DE NEGÓCIO LEIA idadeCliente; SE (idadeCliente 10000) ENTÃO liberarEmprestimoBancario(); liberarCartaoGold(); 75 EXEMPLO – TABELA DE DECISÃO Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) EXEMPLO – TABELA DE DECISÃO • Um cliente possui um cartão de fidelidade • Fez compras no valor de R$1.250,00 até o momento • A última compra ocorreu há 5 dias. Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) 76 EXEMPLO – TABELA DE DECISÃO • Essa situação corresponde a regra de negócio 1; • O sistema vai dar 10% de desconto para o cliente. Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) DERIVANDO CASOS DE TESTE DA TABELA DE DECISÃO Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) 1. Identificar Condições Únicas; 2. Identificar Ações Correspondentes; 3. Gerar Combinações de Condições; 4. Determinar Ações para Cada Combinação; 5. Designar Casos de Teste e Avaliar Saídas. 77 PASSO 1 - IDENTIFICAR CONDIÇÕES ÚNICAS • Identifique todas as condições possíveis, listando-as nas linhas superiores da tabela; • Divida condições compostas, se necessário; • Se baseie em especificações, conversas com o cliente e senso comum. Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) PASSO 2 - IDENTIFICAR AÇÕES • Identifique todas as ações que dependem das condições; • Liste nas linhas inferiores da tabela; • Se baseie nas especificações e nas frases precedidas por palavras como: "então", "neste caso", "o sistema deve", etc. Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) 78 PASSO 3 – GERAR COMBINAÇÕES DE CONDIÇÕES • Crie todas as combinações de condições possíveis e remova aquelas inviáveis; • Para cada combinação viável; • Crie uma coluna separada na tabela com os valores de cada condição listados. Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) PASSO 4 - DETERMINAR AÇÕES PARA CADA COMBINAÇÃO • Identifique as ações e sua execução para cada combinação de condições; • Preencha a parte inferior da coluna correspondente na tabela de decisão. Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) 79 PASSO 5 - DESIGNAR CASOS DE TESTE E AVALIAR SAÍDAS • Para cada coluna da tabela de decisão, atribua um caso de teste em que a entrada represente a combinação de condições especificadas. • O teste é bem-sucedido se, após a execução, o sistema tomar as ações conforme descrito na parte inferior da tabela, na coluna correspondente. • Essas entradas de ação representam a saída esperada para o caso de teste. Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) PASSO 5 - DESIGNAR CASOS DE TESTE E AVALIAR SAÍDAS Regras de Negócio 87654321Condições NNNNSSSSTem cartão fidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) Casos de Teste 1. 〈(true, true, true), 10 〉 2. 〈(true, true, false), 5 〉 3. 〈(true, false, true), 5 〉 4. 〈(true, false, false), 0 〉 5. 〈(false, true, true), 0 〉 6. 〈(false, true, false), 0 〉 7. 〈(false, false, true), 0 〉 8. 〈(false, false, false), 0 〉 80 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? • Se precisarmos determinar manualmente combinações de condições; • E temos medo de que possamos perder algumas combinações; • Podemos usar um método de árvore muito simples; • Para determinar sistematicamente todas as combinações de condições. COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? ValorCódigoVariável AltoA Rendimentos BaixoB JovemJ Idade AdultoA IdosoI RuralR Residência UrbanaU 81 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? IDADE RESIDÊNCIA RENDIMENTOSCriar uma árvore com todas as combinações de valores de trios (idade, rendimentos, residência). COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR IDADE RESIDÊNCIA RENDIMENTOS Da raiz, derivar todas as possibilidades da primeira condição (rendimentos) para obter o primeiro nível da árvore. 82 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR IDADE RESIDÊNCIA RENDIMENTOS • A partir de cada vértice do primeiro nível; • derivar todas as possibilidades da segunda condição (idade); • Para obter o segundo nível da árvore. COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR IDADE RESIDÊNCIA RENDIMENTOS • A partir de cada vértice do segundo nível • Derivar todos os possíveis valores da terceira condição (local de residência). 83 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR IDADE RESIDÊNCIA RENDIMENTOS Se houver mais condições, proceder de forma análoga. COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR • Cada combinação de condições; • Corresponde a uma série de rótulos de vértices ao longo dos caminhos da raiz; • Para os vértices mais baixos da árvore. 84 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR • O número de combinações é igual ao número de vértices no nível mais baixo da árvore. • No nosso caso 12 combinações COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR • Cada combinação pode ser inserida nas colunas da tabela de decisão • Garantindo que nenhuma seja deixada de fora. 85 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições ARendimentos JIdade RResidência COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições AARendimentos JJIdade URResidência 86 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições AAARendimentos AJJIdade RURResidência COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições AAAARendimentos AAJJIdade URURResidência 87 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições AAAAARendimentos IAAJJIdade RURURResidência COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições AAAAAARendimentos IIAAJJIdade URURURResidência 88 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições BAAAAAARendimentos JIIAAJJIdade RURURURResidência COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições BBAAAAAARendimentos JJIIAAJJIdade URURURURResidência 89 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições BBBAAAAAARendimentos AJJIIAAJJIdade RURURURURResidência COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições BBBBAAAAAARendimentos AAJJIIAAJJIdade URURURURURResidência 90 COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições BBBBBAAAAAARendimentos IAAJJIIAAJJIdade RURURURURURResidência COMO DETERMINAR TODAS COMBINAÇÕES DE CONDIÇÕES? A B J UR A UR I UR J UR A UR I UR Regras de Negócio 121110987654321Condições BBBBBBAAAAAARendimentos IIAAJJIIAAJJIdade URURURURURURResidência 91 COMBINAÇÕES INVIÁVEIS • Em alguns casos, depois de listar todas as possíveis combinações de condições • Você pode descobrir que algumas delas são inviáveis por várias razões. Regras de Negócio 4321Condições NNSSIdade > 18 NSNSIdade 18 NSNSIdade 18 NSNSIdade 18 NSNSIdade 18 NSNSIdade 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) Casos de Teste 1. 〈(true, true, true), 10 〉 2. 〈(true, true, false), 5 〉 3. 〈(true, false, true), 5 〉 4. 〈(true, false, false), 0 〉 5. 〈(false, false, false), 0 〉 96 EXEMPLO 2 - COBERTURA Regras de Negócio 87654321Condições NNNNSSSSTem cartãofidelidade? NNSSNNSSQuantidade total de compras > 1.000 NSNSNSNSFez compras nos últimos 30 dias? 87654321Ações 000005510Atribuir Desconto (%) • Exercitarmos 5 casos de testes de colunas viáveis; • Número total de colunas viáveis: 8 • Alcançamos uma cobertura de 5 / 8 = 62,5%. TESTE de Transição de Estado 97 TÉNICAS DE TESTE Particionamento de Equivalência (PE) Análise de Valores Limite (AVL) Teste de Tabela de Decisão Teste de Transição de Estado CAIXA PRETA Teste de Comandos e Cobertura de Comandos Testes de Desvios e Cobertura de Desvios CAIXA BRANCA Adivinhação de Erros Teste Exploratório BASEADO NA EXPERIÊNCIA Teste Baseado em Checklist TÉCNICAS DE TESTE TESTE DE TRANSIÇÃO DE ESTADO O teste de transição de estado é uma técnica utilizada para verificar o comportamento de um componente ou sistema. 98 TESTE DE TRANSIÇÃO DE ESTADO • Como um componente ou sistema, se comporta ao longo do tempo; • E como ele muda de estado sob a influência de vários tipos de eventos. Estado A Estado B Transição Loop Início Fim TESTE DE TRANSIÇÃO DE ESTADO • O modelo que descreve esse aspecto comportamental é chamado de diagrama de transição de estado. • Na literatura, diferentes variantes desse modelo são chamadas de: • Autômato Finito; • Autômato de Estado Finito; • Máquina de estados; • Sistema de transição rotulada. Estado A Estado B Transição Loop Início Fim 99 DIAGRAMA DE TRANSIÇÃO DE ESTADO discar/ x := 1 discar[xIncorreta CobertaCasos de Teste S1 (B) ?S1 (B) ? S3 (A) ?S1 (C) S3 (A) ? S3 (C) ?S1 (C) S3 (C) ? S4 (A) ?S1 (C) S3 (B) S4 (A) ? S4 (B) ?S1 (C) S3 (B) S4 (B) ? S4 (C) ?S1 (C) S3 (B) S4 (C) ? Em nosso exemplo temos 6 transições inválidas para cobrir 1. S1 (B) ? 2. S3 (A) ? 3. S3 (C) ? 4. S4 (A) ? 5. S4 (B) ? 6. S4 (C) ? Início Fim S1 S2 S3 S4 C B A B C A EXEMPLO: COBERTURA DE TODAS AS TRANSIÇÕES Se conseguirmos disparar um evento que não está definido no modelo, podemos interpretá-lo de pelo menos duas maneiras Início Fim S1 S2 S3 S4 C B A B C A 111 EXEMPLO: COBERTURA DE TODAS AS TRANSIÇÕES 1. Se o sistema mudou de estado, isso deve ser considerado uma falha • Como o modelo não permite tal transição, • Não deveria ser possível ativá-la. Início Fim S1 S2 S3 S4 C B A B C A EXEMPLO: COBERTURA DE TODAS AS TRANSIÇÕES 2. Se o sistema não mudou de estado, então isso pode ser considerado um comportamento correto (ignorando o evento). • No entanto, devemos ter certeza de que semanticamente esta é uma situação aceitável. Início Fim S1 S2 S3 S4 C B A B C A 112 BIBLIOGRAFIA STAPP, Lucjan; ROMAN, Adam; PILAETEN, Micha ël. ISTQB – Certified Tester Foundation Level: A Self-Study Guide Syllabus v4.0. Chapter 2. Testing in the Context of a Software Development Cycle - Test Levels. Springer, 2023. BIBLIOGRAFIA MYERS, Glenford J.; BADGETT, Tom; SANDLER, Corey. The Art of Software Testing. Wiley, 2011. 113 BIBLIOGRAFIA SOMMERVILLE, Ian. Engenharia de Software. Cap. 2 – Processo de Software. pág. 18. Cap. 3 – Desenvolvimento Ágil de Software. pág. 38. Pearson, 2019. BIBLIOGRAFIA PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de Software: Uma Abordagem Profissional. Cap. 4.1 Modelos de Processos Prescritivos, pág. 41. AMGH, 2021. 114 BIBLIOGRAFIA BOURQUE, Pierre.; FAIRLEY, Richard E. (Dick). SWEBOK V3.0. Chapter 8. Software Engineering Process, pág. 81. AMGH, 2021. Diego Augusto Barros é bacharel em Sistemas de Informação pela Pontifícia Universidade Católica de Minas Gerais (2012) e mestre em Ciência da Computação pela Universidade Federal de Minas Gerais (2015). Sua pesquisa concentra-se nas áreas de Visualização de Dados e Interação Humano-computador, e investiga fatores cognitivos e perceptivos envolvidos na análise de grandes conjuntos de dados, que resultam em novos sistemas interativos para comunicação e análise visual. Seus principais interesses nas áreas são: visualização de informação, Visual Analytics, métodos de avaliação de interfaces, interação com sistemas, tecnologias web, sistemas de informação, engenharia de software e informática na educação. diegoaugustobarros.com @diegoaugustobarros @profdiegoaugusto PROF. DIEGO AUGUSTO BARROS