Técnicas de Teste de Software



Documentos relacionados
IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

Engenharia de Software II

Engenharia de Software II

Teste de Software Estrutural ou Caixa Branca. Disciplina de Engenharia de Software prof. Andrey Ricardo Pimentel

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Introdução a Verificação, Validação e Teste de Software

Engenharia de Software II

Testes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins

Juciara Nepomuceno de Souza Rafael Garcia Miani. Teste de Software

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Como melhorar a Qualidade de Software através s de testes e nua. Cláudio Antônio de Araújo 22/11/2008

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

Técnicas de Teste de Software

Fundamentos de Teste de Software

a) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema

IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

OPERADORES E ESTRUTURAS DE CONTROLE

Programação WEB I Estruturas de controle e repetição

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Testar os programas para estabelecer a presença de defeitos no sistema. Teste de Software. Teste de defeitos. Objetivos. Tópicos

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Técnicas de Caixa Preta de Teste de Software

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Práticas de. Engenharia de Software. Givanaldo Rocha de Souza

Introdução a Algoritmos Parte 04

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Engenharia de Software II

c. Técnica de Estrutura de Controle Teste do Caminho Básico

Teste de Software Parte 3. Prof.: Jonas Potros

Princípios do teste de software

Prof. Me. Marcos Echevarria

Aula 27 Testes Caixa Branca. Alessandro Garcia Willian Oizumi LES/DI/PUC-Rio Novembro 2014

Qualidade de Software. Profa. Cátia dos Reis Machado

Problemas insolúveis. Um exemplo simples e concreto

4 Segmentação Algoritmo proposto

1.6. Tratamento de Exceções

Teste de Software. Ricardo Argenton Ramos Engenharia de Software I

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

ESTRUTURA CONDICIONAL

Tutorial de Matlab Francesco Franco

Algoritmos com VisuAlg

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

GARANTIA DA QUALIDADE DE SOFTWARE

Sistemas Operacionais

Feature-Driven Development

9 Comandos condicionais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Sistemas Operacionais. Prof. André Y. Kusumoto

Princípios de Análise e Projeto de Sistemas com UML

Geração de código intermediário. Novembro 2006

Orientação a Objetos

OBS.: Simulado baseado no conteúdo abordado pelo capítulo 4 (Técnica de Modelagem de Teste) do Syllabus.

Fundamentos em Teste de Software. Vinicius V. Pessoni

Organização e Arquitetura de Computadores I

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Algoritmos e Estrutura de Dados III. Árvores

Projeto de Sistemas I

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Entendendo como funciona o NAT

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

PROGRAMAÇÃO II 4. ÁRVORE

2 echo "PHP e outros.";

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Arquitetura de Computadores. Tipos de Instruções

Teste de Software II Técnicas de Teste

Programação Elementar de Computadores Jurandy Soares

Linguagem algorítmica: Portugol

Java Como Programar, 8/E

Teste de Software Parte 1. Prof. Jonas Potros

Teste de Software. Profa. Cátia dos Reis Machado

Projeto de controle e Automação de Antena

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

Resolução de problemas e desenvolvimento de algoritmos

Introdução à Lógica de Programação

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Engenharia de Software II

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Computadores XXI: Busca e execução Final

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Especialização em Engenharia de Software e Banco de Dados

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

JSP - ORIENTADO A OBJETOS

Teste de software. Definição

Processos de gerenciamento de projetos em um projeto

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

Recursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.

Programação Básica em Arduino Aula 2

Curso de Programação Computadores

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Transcrição:

Técnicas de Teste de Software Fabrício Sousa fabricio@uesb.br

Projeto de Caso de Teste Conjunto de técnicas para criação de casos de testes Série de casos de testes que tem grande probabilidade de encontrar erros Técnicas de Teste de software Fornecem diretrizes sistemáticas Exercitam a lógica interna e interfaces Exercitam os domínios de entrada e saída 2

Fundamentos do Teste Testabilidade É simplesmente quão fácil um programa pode ser testado Características Operabilidade Observabilidade Contrabilidade Decomponibilidade Simplicidade Estabilidade 3

Testabilidade: Características Operabilidade Quanto melhor funciona, mais eficientemente pode ser testado Observalidade O que você ver é o que você testa Contrabilidade Quanto melhor você pode controlar o software, mais o teste pode ser automatizado e otimizado 4

Testabilidade: Características Decomponibilidade Controlando o escopo do teste, podemos isolar problemas mais rapidamente e realizar retestagem mais racionalmente Simplicidade Quanto menos houver a testar, mais rapidamente podemos testá-lo Escabilidade Quanto menos modificações, menos interrupções no teste 5

Testabilidade: Características Compreensibilidade Quanto menos informações temos, mais racionalmente vamos testar 6

Um bom teste......tem alta probabilidade de encontrar um erro....não é redundante...não deve ser muito simples nem muito complexo 7

Caso de teste Especificação de uma entrada para o programa e a correspondente saída esperada Entrada: conjunto de dados necessários para uma execução do programa Saída esperada: resultado de uma execução do programa (um oráculo é esperado) Um bom caso de teste tem alta probabilidade de revelar um erro ainda não descoberto 8

Projeto de Casos de Teste Projeto de teste pode ser tão difícil quanto o projeto do próprio produto a ser testado Poucos programadores/analistas gostam de teste; menos ainda de projeto de casos de teste 9

Técnicas de Projeto de Casos de Teste Maneira sistemática e planejada para conduzir os testes ( Critérios de Teste ) Conjunto de Casos de Teste T características desejáveis: i ) deve ser finito ii) o custo de aplicação deve ser razoável 10

Teste Caixa-Preta (Funcional) Testes feitos na interface do software Examina algum aspecto fundamental do software, pouco se preocupando com a estrutura lógica interna 11

Teste de Caixa-branca (Estrutural) Exame rigoroso do detalhe procedimental Casos de testes Abrangem todas as características Definir todos os caminhos lógicos Exercitar a lógica do programa de forma exaustiva Testes exaustivos são impossíveis para grandes sistemas 12

Teste de Caminho Básico Técnica de teste Caixa Branca Conjunto básico de caminhos de execução Garantia de execução de cada comando pelo menos uma vez 13

Teste de Caminho Básico: Grafo de Fluxo Grafo de fluxo ou grafo de programa Controle lógico Nó (círculo) Representa um ou mais comandos procedimentais Arestas (ligações) Fluxo de controle Deve terminar em um nó Região Áreas limitadas por arestas e nós 14

Teste de Caminho Básico: Grafo de Fluxo 15

Exemplo de Grafo de Controle 16

Teste Estrutural 17

Exercício 1: Construir fluxo de grafo 18

Resposta Exercício 19

Caminhos independentes de Programa É qualquer caminho ao longo do programa que introduz pelo menos um novo conjunto de comandos de processamento ou uma nova condição Exemplos: 1-2-7 1-2-3-5-6 20

Predicado Cada nó que contém uma condição Caracterizado por duas ou mais arestas saindo dele Exemplo: Quantos predicados tem o grafo abaixo? Um 21

Conjunto Base Garantia de que todos os caminhos tenham sido executados pelo menos uma vez Cada condição tenha sido executada no seu lado verdadeiro e no seu lado falso Complexidade ciclomática Métrica de software que fornece medida quantitativa da complexidade lógica de um programa Fornece limite superior para a quantidade de testes que garante que todos os caminhos sejam executados pelo menos uma vez 22

Complexidade ciclomática: cálculo 1. Número de regiões correspondente à complexidade ciclomática 2. complexidade ciclomática V(G) 1. V(G)= E N+2 1. E= nº de arestas (edges) 2. N= nº de nós (nodes) 3. V(G)=P+1 1. P= nº de predicados (predicate) 23

Região Áreas limitadas por arestas e nós. Sempre consideramos a região externa em relação ao conjunto universo

Exercícios 2: Conjunto base do exercício anterior 3: Quantas regiões? 4: Quantos predicados? 5: Complexidade ciclomática 6: Como podemos representar esse grafo no computador? 25

Matrizes de Grafos Matriz quadrada Tamanho Nº de nós do grafo Entrada da matriz Arestas (conexões) 26

Teste de Estrutura de Controle Amplia a cobertura Melhoram a qualidade do teste de caixa branca Tipos Teste de Condição Teste de Fluxo de dados Teste de ciclo 27

Teste de Condição Exercita as condições lógicas contidas em um módulo de programa Focaliza o teste de cada condição do programa para garantir que não contém erros Condição Simples E 1 <operador-relacional> E 2 E 1 e E 2 expressões aritméticas Operador relacional: <, <=, >, >=, =, Condição Composta OU ( ), E (&), Não ( ) 28

Teste de Condição Erros mais comuns: Operadores booleanos incorretos/faltanto/extra Variável booleana Parênteses booleanos Operador relacional Expressão aritmética 29

Teste de Ciclo (loops) Parte importante dos algoritmos Damos pouca atenção nos testes Técnica que focaliza exclusivamente a validade de construções de ciclo 30

Teste de Ciclo (loops) Ciclos simples Ciclos aninhados Ciclos concatenados Ciclos desestruturados 31

Ciclos simples Conjunto de teste que pode ser aplicado, sendo N, o nº máximo de execução do loop Pule o ciclo completamente Apenas uma passagem pelo ciclo Duas passagens pelo ciclo M passagens pelo ciclo em que M<N N-1, N, N+1, passagens pelo ciclo 32

Teste Caixa-preta (Funcional) Teste Comportamental Focaliza os requisitos funcionais Complementa o teste de caixa-branca Tenta encontrar erros da seguinte forma Funções omitidas ou incorretas Erros de interface Erros de estrutura de dados Erros de comportamento ou desempenho Erros de iniciação ou término 33

Teste Caixa-preta: Tipos Métodos baseados em Grafo Particionamento de Equivalência Análise de Valor-limite 34

Particionamento de Equivalência Divide o domínio de entrada de um programa em classes de dados Descobre classes de erros, reduzindo o total de casos de testes que precisam ser desenvolvidos 35

Particionamento de Equivalência As classes, que podem ser válidas ou inválidas, são definidas de acordo com as seguintes diretrizes: se a condição de entrada especifica um intervalo, são definidas uma classe válida e duas inválidas se a condição de entrada especifica um membro de um conjunto, são definidas uma classe válida e uma inválida se a condição de entrada for booleana, são definidas uma classe válida e uma inválida 36

37

Algoritmo para exemplificação De acordo com sua especificação existem, basicamente, quatro entradas: um inteiro positivo (entre 1 e 20 3 partições) uma cadeia de caracteres um caractere a ser procurado a opção por procurar por mais caracteres (duas partições: uma para s e outra para n ) 38

Algoritmo para exemplificação (cont.) o domínio de saída consiste de duas respostas, que levam a outra divisão do domínio de entrada: a posição na qual o caractere foi encontrado na string (caractere de entrada pertencente à string) uma mensagem declarando que ele não foi encontrado (caractere de entrada não pertencente à string) 39

40

Particionamento de Equivalência: observações Reduz o tamanho do domínio de entrada Concentra-se em criar dados de teste baseados unicamente na especificação É especialmente adequado para aplicações em que as variáveis de entrada podem ser facilmente identificadas e podem ter valores distintos Problemas: embora a especificação possa sugerir que um grupo de dados seja processado de forma idêntica, isso pode não ocorrer a técnica não fornece um guia para a determinação dos dados de teste 41

Análise do Valor Limite Complementa o Particionamento de Equivalência Coloca sua atenção em uma fonte propícia a erros os Limites de uma classe ou partição de equivalência 42

Análise do Valor Limite Se a condição de entrada especifica um intervalo limitado pelos valores de a e b Casos de testes Valores de A e B Imediatamente acima e imediatamente abaixo de A e B Se a condição de entrada especifica vários valores Casos de testes Números mínimos e máximos Valores imediatamente acima e imediatamente abaixo do mínimo e do máximo 43

Análise de Valor-limite: Exemplo Aplicação: os valores inteiros 0, 1, 20 e 21 encontrar o caractere na primeira e na última posição da cadeia de caracteres 44

Teste de Comandos Estabelece como requisito de teste que sejam executados todos os comandos do programa ao menos uma vez 45

46

Teste de Comandos É necessário concentrar-se nos comandos que são controlados por condições fornecer um valor para x que esteja fora do intervalo para forçar a execução dos comandos no loop (linhas 11-12) quando x está dentro do intervalo, ele será no mínimo 1 e o comando dentro do for (linha 16) será executado 47

Teste de Comandos o comando if (linha 25) precisa ser executado, com as alternativas then e else (linhas 26 e 28) procurar por um caractere que esteja na cadeia e que force a procura dentro dela A entrada no while (linha 23) é garantida O comando if (linha 30) precisa ser executado, com as alternativas then e else (linhas 31 e 33) um caractere que pertença e outro que não pertença à cadeia (combinando com o if anterior uma cadeia de caracteres a, de um caractere e valores para a variável c que ocorra e que não ocorra em a) por fim, é preciso terminar o loop para executar o comando end 48

Teste de Comandos É o nível mínimo de cobertura esperado no teste estrutural 49

Teste de Ramos Estabelece como dados de teste exercitar todas as saídas verdadeiro e falso de todas as decisões 50

Teste de Ramos É conveniente observar o grafo do programa Observando o grafo, é necessário gerar dados de teste que causem as duas saídas verdadeiro e falso que ocorrem nos nós 2, 5, 9, 10, 14 e 17 Para o nó 2, um valor da variável x menor que 1 ou maior que 20 causa a saída pelo ramo verdadeiro e um valor de x dentro desse intervalo causa a saída pelo ramo falso O nó 5, comando for (linha 15), terá as saídas verdadeiro e falso, desde que o valor de x seja ao menos 1 (e terá que ser para chegar nesse ponto) 51

Teste de Ramos (cont.) para o nó 9, loop while (linha 23), a saída verdadeiro (arco k) é garantida devido aos comandos das linhas 21 e 22; a saída falso (arco q) é garantida ou quando o caractere que está sendo procurado é encontrado ou quando o final da cadeia é encontrado O nó 10, if (linha 25), requer uma comparação que encontre o caractere que está sendo procurado (arcos l, n) e uma outra que cause o incremento de i (arcos m, o) o nó 14 (linha 30) precisa de um caractere que seja encontrado e um outro que não seja encontrado o nó 17 requer pelo menos mais uma iteração do loop repeat (arco r) antes que o final do programa seja encontrado (arco w) 52

Teste de Ramos (cont.) O conjunto de dados de testes é o mesmo do Teste de Comandos, mas neste, o caractere a poderia ser fornecido através de outra execução do programa Já no Teste de Ramos, a execução do loop repeat é 53 obrigatória

Teste de Condição Estabelece os requisitos de teste tal que todas as condições em uma decisão requeiram as duas saídas, verdadeiro e falso, se for possível, ao menos uma vez 54

Teste de Condição: exemplo é necessário considerar todos os nós identificados no Teste de Ramos, mas neste caso, devem ser consideradas todas as condições das decisões no loop while (linha 9), tem-se uma decisão com duas condições: while (x<1) or (x>20) do valores de x: 0 e 21 obtém-se a cobertura das condições se x=0 então a primeira condição é verdadeira e a segunda é falsa; se x=21 então a primeira condição é falsa e a segunda é verdadeira 55

Teste de Condição: exemplo (cont.) é necessário gerar um outro valor para x que esteja dentro do intervalo, de forma que seja possível a execução do resto do programa esse valor pode ser determinado pelo requisito imposto pela outra condição do programa, que corresponde ao loop for do comando: for i:=1 to x do para uma saída verdadeira a variável i deve ser menor ou igual a x; para uma saída falsa a variável i deve ser maior que x. Como x é pelo menos 1 para se chegar nessa parte do programa, o for é executado até que i seja maior que x 56

Teste de Condição: exemplo (cont.) loop while, linha 23 (nó 9): while (not(achou))and(i<=x) do as duas condições nessa decisão são verdadeiras quando se entra nesse loop Para torná-las com valor falso, é preciso prever as duas alternativas, ou seja, o caso de um caractere que pertença à string e o caso de um caractere que não pertença essas duas alternativas geram também os valores verdadeiro e falso para os comandos if da linha 25 e if da linha 30 57

Teste de Condição: exemplo (cont.) a última decisão a ser considerada é o comando until da linha 37 (nó 17): until (resposta = n ) or (resposta = N ) quando é fornecido o valor n, a primeira condição é verdadeira e a segunda é falsa; quando é fornecido o valor N, a primeira é falsa e a segunda é verdadeira (executar o programa duas vezes) 58

Teste de Condição: exemplo (cont.) o Teste de Condição pode não satisfazer o Teste de Ramos neste caso, o loop do repeat não é executado 59

Teste Baseado em Erros Os requisitos de teste são estabelecidos com base nos erros típicos e comuns cometidos durante o desenvolvimento do software Critério: Análise de Mutantes 60

Análise de Mutantes 61

Análise de Mutantes Hipótese do Programador Competente Programadores experientes escrevem programas corretos ou muito próximos do correto. Efeito de Acoplamento Casos de teste capazes de revelar erros simples são tão sensíveis que, implicitamente, também são capazes de revelar erros mais complexos. 62

Análise de Mutantes Garantir a ausência de determinados tipos de defeitos Considerando todos os programas Q, é possível provar a correção de P 63

Análise de Mutantes É impraticável executar e comparar todos os programas Q Estabelece-se então uma vizinhança F(P) que contém apenas um conjunto finito de Programas Esses programas contêm pequenos desvios sintáticos que representam defeitos simples 64

Análise de Mutantes Os operadores de mutação determinam o tipo de alteração sintática que deve ser feita para a criação dos mutantes Introduzir pequenas alterações semânticas através de pequenas alterações sintáticas que representam defeitos típicos Operadores dependem da linguagem alvo FORTRAN (22 operadores) C (71 operadores) 65

Exemplos de operadores de mutação Retira um comando de cada vez do programa Troca operador relacional por operador relacional Troca o comando while por do-while Interrompe a execução do laço após duas execuções Troca valores das constantes Requer valor negativo, positivo e zero para cada referência escalar 66

Análise de Mutantes Dados P e T Passos para a Aplicação da Análise de Mutantes P é executado com os casos de teste de T Mutantes são gerados Mutantes são executados com os casos de teste de T Mutantes são analisados 67

Exemplo: Mutação Considere o trecho do programa e o conjunto de teste obtido para o Teste de Ramos 68

Exemplo 1: Mutação (cont.) Mutante 1: alteração na linha 21 de: achou := FALSE para: achou := TRUE considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos a saída gerada seria: o caractere a aparece na posição 1 em vez de: o caractere a não ocorre na string fornecida, mutante seria morto por esse conjunto de dados de teste 69

Exemplo 2: Mutação (cont.) Mutante 2: alteração na linha 22 de: i := 1 para: x := 1 considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos o erro não é revelado; o mutante continua vivo pois a saída gerada por ele é igual à saída gerada pelo programa original, uma vez que a string é de tamanho 1 e o loop while da linha 23 executa exatamente uma vez (somente se o for sair com i=1) para matar esse mutante deve-se criar um caso de teste que possua uma string de tamanho maior que 1 e assim, qualquer caractere da posição 2 em diante será considerado como não pertencente à string, mesmo que faça parte dela 70

Exemplo 2: (cont.) Mutante 2: novos dados de teste para ser morto Dado de teste que mata o mutante 2 Obs: se o programa original fosse executado com esses dados, os caracteres v e C seriam encontrados nas posições 3 e 2 respectivamente. 71

Exemplo 3: Mutação (cont.) Mutante 3: alteração na linha 28 de: i := i + 1 para: i := i + 2 considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos o erro não é revelado; o mutante continua vivo pois a saída gerada por ele é igual à saída gerada pelo programa original, uma vez que a string é de tamanho 1 e o loop while da linha 23 executa exatamente uma vez (o incremento de 2 não será executado) para matar esse mutante deve-se criar um caso de teste que possua uma string de tamanho maior que 1 e, além disso, é necessário procurar por um caractere nas posições pares da string 72

Exemplo 3: mutantes Mutante 3: novos dados de teste para ser morto Obs: Se o programa original fosse executado com esse dado de teste, o caractere C seria encontrado na posição 2 73

Mutantes: Observações Teste de Mutação consegue mostrar a ausência de erros particulares, pois ao matar os mutantes está sendo mostrado que o programa original não possui aquele erro Esse critério força o testador a analisar cuidadosamente o programa, uma vez que ele precisa criar dados de teste que exponham os erros introduzidos Desvantagem: Ele é computacionalmente caro devido ao grande número de mutantes gerados e o tempo e recurso usados para compilar e executar todos eles 74

Aspectos genéricos das Estratégias de Teste A atividade de teste inicia-se no nível de módulos e caminha na direção da integração de todo o sistema diferentes técnicas de teste são apropriadas para diferentes situações a atividade de teste, em geral, é realizada pela equipe de desenvolvimento e, no caso de grandes projetos, por um grupo de teste independente as atividades de teste e depuração são atividades diferentes, mas a depuração é necessária em qualquer estratégia de teste 75

Relação entre o processo de software e uma estratégia de software 76