Uploaded by Lineu Mialaret

TSWI5-Aula9-1Sem-2023

advertisement
Instituto Federal de Educação, Ciência e
Tecnologia de São Paulo - IFSP
Câmpus Jacareí
Tecnologia em Análise e Desenvolvimento de Sistemas ADS
10 Semestre de 2023
Teste de Software – TSWI5
Prof. Lineu Mialaret
Aula 9: Teste Estrutural (1)
©Prof. Lineu
TSWI5 - Aula 9 - 1/51
Teste Funcional
 Teste Funcional é um tipo de teste que utiliza como
entrada a especificação funcional.
• Procura verificar se todas as funcionalidades previstas
foram implementadas e se respondem como esperado.
• Incapaz de verificar funcionalidades ou comportamentos
extras não especificados.
 O Teste de Unidade, já estudado é um tipo de Teste
Funcional.
©Prof. Lineu
TSWI5 - Aula 9 - 2/51
Teste Estrutural
 Teste Estrutural usa como ponto de entrada o código
fonte.
 Características do teste estrutural:
• Mais propenso a automação.
• Procura
exercitar o maior número possível de
possibilidades de execução do programa, de acordo com
algum critério pré-definido.
• No teste estrutural, a especificação funcional é usada
apenas como oráculo.
©Prof. Lineu
TSWI5 - Aula 9 - 3/51
Teste Funcional X Estrutural
 Teste Estrutural e Teste Funcional são complementares:
• Teste estrutural ajuda a detectar comportamentos que
foram
implementados
especificados.
(programados)
mas
não
• Teste funcional detecta comportamentos que foram
especificados, mas não implementados – e que o teste
estrutural não (jamais) testaria.
©Prof. Lineu
TSWI5 - Aula 9 - 4/51
Teste Estrutural
 Duas principais categorias de teste:
• Teste de fluxo de controle.
• Teste de fluxo de dados.
 Compartilham uma característica importante: baseiam-se
no conceito de Grafo de Programa ou Grafo de Fluxo de
Programa.
©Prof. Lineu
TSWI5 - Aula 9 - 5/51
Grafo de um Programa
 Grafo de Fluxo de Programa:
• Grafo dirigido onde os nodos representam comandos e os
arcos representam o fluxo de execução
• Existe um arco de um nodo i para um nodo j se e somente
se j pode ser executado imediatamente após i.
©Prof. Lineu
TSWI5 - Aula 9 - 6/51
Grafo de um Programa (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 7/51
Grafo de um Programa (cont.)
 Quais comandos representar?
• Dependente do paradigma e da linguagem
• Em C/C++/Java não se representam as declarações de
variáveis porque
executáveis.
não
correspondem
a
comandos
• Todo grafo de programa tem um único nodo inicial e um
nodo final.
©Prof. Lineu
TSWI5 - Aula 9 - 8/51
Grafo de um Programa (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 9/51
Estruturas de um Grafo de Programa
©Prof. Lineu
TSWI5 - Aula 9 - 10/51
Teste da Caixa Branca
 O Teste de Caixa Branca abrange testes com base na
estrutura interna do sistema analisado.
• E essa estrutura pode englobar vários itens, como código,
design e fluxos de informações dentro do sistema de
software testado.
• A sua eficácia pode ser medida por meio da cobertura
estrutural do software, considerando quanto da estrutura
do componente de software (funções, decisões e
instruções) foi abordado no teste, esse valor é expresso
em porcentagem.
©Prof. Lineu
TSWI5 - Aula 9 - 11/51
Teste da Caixa Branca (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 12/51
Teste de Caixa Branca (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 13/51
Teste de Caixa Branca (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 14/51
Adequação
 Como não pode testar exaustivamente um sistema de
software, as duas questões centrais em teste de software
são:
• (a) O que constitui um conjunto adequado de casos de
teste?
• (b) Como gerar um conjunto finito de casos de teste que
satisfaça esses critérios de adequação?
 Goodenough e Gerhard definiram um conjunto de testes
como adequado se sua correta execução implica na
ausência de erros no programa, sendo que soluções
mais pragmáticas são baseadas em um insight básico:
se alguma unidade de código não for executada, ou seja,
não coberta, então por definição, o teste não pode
revelar quaisquer falhas contidas nele.
©Prof. Lineu
TSWI5 - Aula 9 - 15/51
Adequação (cont.)
 A adequação de um conjunto de testes pode, portanto,
ser medido por quanto de um programa é coberto pelo
conjunto de testes.
 Embora idealmente se gostaria de saber quanto do
possível comportamento do programa é coberto, não
uma maneira fácil de quantificar a cobertura
comportamento e, portanto, a maioria dos critérios
adequação gira em torno de medições relacionadas
código ou especificações do programa.
©Prof. Lineu
há
de
de
ao
TSWI5 - Aula 9 - 16/51
Medidas de Adequação (cont.)
 Muitos critérios de cobertura (coverage criteria) têm sido
propostos.
 Um critério de cobertura em teste de software deve
atender três propósitos:
©Prof. Lineu
TSWI5 - Aula 9 - 17/51
Medidas de Adequação (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 18/51
A Necessidade do Teste Estrutural
©Prof. Lineu
TSWI5 - Aula 9 - 19/51
Cobertura de Código
 A ideia de cobertura de código (code coverage) é intuitiva
e simples:
• Se nenhum teste executa uma instrução com defeito, então
o defeito não pode ser encontrado; e portanto, toda
instrução deve ser coberta (coverage) por algum teste.
©Prof. Lineu
TSWI5 - Aula 9 - 20/51
Cobertura de Código (cont.)
 Cobertura de código (code coverage) é o critério mais
básico.
• Um conjunto de casos de testes é considerado ser
adequado com o critério de cobertura de código se todas
as linhas do código são executadas.
©Prof. Lineu
TSWI5 - Aula 9 - 21/51
Programa Blackjack
 Suponha um programa que recebe o número de pontos
de dois jogadores de blackjack.
 O programa deve devolver o número de pontos do
vencedor.
 Quem chegar mais perto de 21 pontos ganha.
 Se um jogador ultrapassar 21 pontos, o jogador perde.
 Se ambos os jogadores perderem, o programa deve
retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 22/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 23/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 24/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 25/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 26/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 27/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 28/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
?
©Prof. Lineu
TSWI5 - Aula 9 - 29/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
?
©Prof. Lineu
TSWI5 - Aula 9 - 30/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
?
©Prof. Lineu
TSWI5 - Aula 9 - 31/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
?
©Prof. Lineu
TSWI5 - Aula 9 - 32/51
Programa Blackjack (cont.)
O programa que recebe o número de pontos de dois jogadores de blackjack.
O programa deve retornar o número de pontos do vencedor.
Neste jogo, quem chegar mais perto de 21 pontos ganha.
Se um jogador ultrapassar 21 pontos, o jogador perde.
Se ambos os jogadores perderem, o programa deve retornar 0.
©Prof. Lineu
TSWI5 - Aula 9 - 33/51
Programa Blackjack (cont.)
Using lines of code as a way to determine line coverage is a simple and
straightforward idea.
However, counting the covered lines is not always a good way of
calculating the coverage.
The number of lines in a piece of code depends on the decisions taken by
the programmer who writes the code.
©Prof. Lineu
TSWI5 - Aula 9 - 34/51
Programa Blackjack (cont.)
Using lines of code as a way to determine line coverage is a simple and
straightforward idea.
However, counting the covered lines is not always a good way of
calculating the coverage.
The number of lines in a piece of code depends on the decisions taken by
the programmer who writes the code.
©Prof. Lineu
TSWI5 - Aula 9 - 35/51
Programa Blackjack (cont.)
Using lines of code as a way to determine line coverage is a simple and
straightforward idea.
However, counting the covered lines is not always a good way of
calculating the coverage.
The number of lines in a piece of code depends on the decisions taken by
the programmer who writes the code.
©Prof. Lineu
TSWI5 - Aula 9 - 36/51
Cobertura de Decisão
 A Cobertura de código (instrução/linha) é geralmente
vista como um critério fraco, embora na prática, seja um
dos critérios mais comumente usados.
• Uma razão para isso é que é muito intuitivo e fácil de
entender.
• Critérios mais fortes são frequentemente com base no
grafo de fluxo de controle do programa em teste.
©Prof. Lineu
TSWI5 - Aula 9 - 37/51
Cobertura de Decisão (cont.)
 Seja o seguinte trecho de código.
 É possível atingir 100% de cobertura de código deste
trecho de instruções com um único teste onde e é menor
que 0 e b é igual a 0.
 Este caso de teste faria ambas as condições if avaliar
como verdadeiro, mas não haveria nenhum caso de teste
em que qualquer uma das condições fossem avaliadas
como falso.
©Prof. Lineu
TSWI5 - Aula 9 - 38/51
Cobertura de Decisão (cont.)
 Seja o seguinte trecho de código.
 A cobertura de decisão captura a noção de cobertura de
todas as arestas do grafo de fluxo de controle, o que
significa que cada condição if requer pelo menos um
teste em que é avaliado como verdadeiro e pelo menos
um teste em que é avaliado como falso.
©Prof. Lineu
TSWI5 - Aula 9 - 39/51
Cobertura de Decisão (cont.)
 Seja o seguinte trecho de código.
 No caso do trecho de código acima, precisa-se de pelo
menos dois casos de teste para atingir 100% de
cobertura de decisão, ou seja,
• t1: e<0 e b==0; e
• t2: e>=0 e b!=0.
©Prof. Lineu
TSWI5 - Aula 9 - 40/51
Cobertura de Decisão (cont.)
 Programas complexos geralmente dependem de muitas
condições complexas (por exemplo,
compostas por muitas condições).
instruções
if
• Quando se testar esses programas, visando 100% de
cobertura de linha, pode não ser suficiente para cobrir
todos os casos que se quer, ou seja, precisa-se de algum
critério mais forte.
• A cobertura de decisão funciona de maneira semelhante à
cobertura de código, exceto que com cobertura de decisão
conta-se (ou visa-se cobrir) todos os possíveis resultados
de decisão.
©Prof. Lineu
TSWI5 - Aula 9 - 41/51
Cobertura de Decisão (cont.)
 Um conjunto de casos de teste atingirá 100% de
ramificação (ou decisão) cobertura quando os testes
exercitam todos os resultados possíveis dos blocos de
decisão.
©Prof. Lineu
TSWI5 - Aula 9 - 42/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 43/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 44/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 45/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 46/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 47/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 48/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 49/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 50/51
Cobertura de Decisão (cont.)
©Prof. Lineu
TSWI5 - Aula 9 - 51/51
Download