SSC 0721 Teste e Inspeção de Software

Documentos relacionados
SSC 0721 Teste e Validação de Software

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Conceitos básicos de programação

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

Testes de correção (de defeitos)

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Teste de Software Parte 2. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

SIN Exemplo de Prova do Conteúdo Semestral

Sintaxe da linguagem Java

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Teste de Software. Teste Funcional Teste Estrutural. Teste Baseado em Erros (Análise de Mutantes)

Técnicas de Teste Estrutural. Teste de Fluxo de Controle. Introdução. Introdução. Introdução. Introdução. Introdução

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Teste de Software Parte 2. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Aula 05. Modularização Função Subrotina Recursividade

T(0) = 0 T(n) = 2*T((n-1)/2) + 1

Análise de Algoritmos

Linguagens de Programação Conceitos e Técnicas. Amarrações

Simulado de Linguagem de Programação Java

Aula 7 Estruturas de Repetição Cleverton Hentz

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Estruturas de Controle

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

Prof. A. G. Silva. 13 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de setembro de / 21

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Prova Final de Linguagens de Programação - DCC024B - Sistemas de Informação

Palavras Reservadas da Linguagem Java

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Tipos de dados e comandos POO

Estruturas de controle Parte 1

Linguagem de Programação III

Programação de Computadores I Funções de Repetição da Linguagem C PROFESSORA CINTIA CAETANO

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Métodos em Java. Prof. Esp. André Aparecido da Silva (Aulas 31 a 33) Disponível em:

Logica de Programacao. Jorge Augusto F. de Souza Edward Boszczowski

Linguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira

Estruturas de Controle em c#

Introdução a Testes de Software. Ricardo Argenton Ramos

Teste de Validação. ações visíveis ao usuário e entradas e saídas do sistema reconhecíveis pelo usuário

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Métodos Computacionais. Comandos Condicionais e de Repetição em C

Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#:

" # $ % & ' ( ) 1/6 29/11/2004 : : : A1 (Custódio) A2 (Custódio) B2 (Dirceu) A3 (Dirceu) B3( Dirceu) B1 (Marcus) B4 (Marcus) PARTE TEÓRICA

Problema do Caminho Hamiltoniano

Grafos tipo abstrato de dados

PROGRAMAÇÃO JAVA. Parte 3

UNIDADE 4 Tomada de decisão e funções de controlo

Algoritmo de Kruskal. Algoritmo de Kruskal. Floresta geradora 26. Subfloresta S 20.3

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Sintaxe Básica de Java Parte 2

Algoritmos II prof. Daniel Oliveira

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Introdução à Programação. Estruturas de Repetição

Implementação: C++ e além; refatoração; testes

Recursividade. Prof. Jesus José de Oliveira Neto

Diagramas Sintáticos

SSC 0301 IC para Engenharia Ambiental

Linguagem de Programação

Variáveis primitivas e Controle de fluxo

LINGUAGEM DE PROGRAMAÇÃO ESTRUTURADA CAPÍTULO 5 ESTRUTURAS DE REPETIÇÃO EM C#

MÉTODOS DE PESQUISA DE DADOS EM MEMÓRIA PRIMÁRIA. Material da Prof. Ana Eliza

Strings e Arrays POO

Ambiente de Programação JAVA POO

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Programação Estruturada e Orientada a Objetos

Conceitos básicos. Computação eletrônica: Gurvan Huiban

Estruturas de Decisão

Linguagens de Programação I

CONTROLE DE FLUXO. Algoritmos e Programação. Prof. Alceu Britto Slides cedidos pelo Prof. Edson J. R. Justino (PUCPR) Aula 9 e 10

Introdução à Programação. Estruturas de Repetição

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

1 Da aula teórica ao Java

Prof. Rogério Rocha 1

TCC 00308: Programação de Computadores I Introdução

double x; x = enigmab1(100);

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Algoritmos e Programação

Algoritmos II Aula 11 Funções e Procedimentos

Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível:

SSC 0301 IC para Engenharia Ambiental

Como construir um compilador utilizando ferramentas Java

Implementação do TAD DiGrafo Ponderado usando Matriz de Adjacência. Profa. Dra. Denise Guliato FACOM - UFU

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Algoritmos Combinatórios: Introdução

Exceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares

Fundamentos de programação

Computação 1 - Python Aula 7 - Teórica: Estrutura de Repetição com teste de parada: while 1/ 23

Teste estrutural. Teste baseado na estrutura do código Mais precisamente, Critério de adequação baseia-se no código!

Prof. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1

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

Transcrição:

SSC 0721 Teste e Inspeção de Software Teste Estrutural GFC Prof. Marcio E. Delamaro delamaro@icmc.usp.br SSC 0721 Teste e Inspeção de Software ICMC/USP p. 1

O que é o teste estrutural Supõe a existência de uma implementação Ela é analisada Estruturas de interesse devem ser exercitadas Comandos, desvios, caminhos SSC 0721 Teste e Inspeção de Software ICMC/USP p. 2

O Grafo de fluxo de controle Abstração de uma unidade: função, método ou procedimento Representa as possíveis sequências de execução dos comandos dessa unidade GFC G = N,E,s é um grafo direcionado N é o conjunto de vértices E é o conjunto de arestas s N é o vértice inicial SSC 0721 Teste e Inspeção de Software ICMC/USP p. 3

GFC conjunto de vértices Cada vértice representa um bloco sequencial indivisível de comandos S 1,S 2,S 3,S 4,S 5 Sempre ques 1 é executado, os demais comandos são executados nessa sequêncial Para ques i+1 seja executado, S i tem que ser executado imediatamente antes SSC 0721 Teste e Inspeção de Software ICMC/USP p. 4

Vértices exemplo public static void bubblesort(int[] x) { int n = x.length; for (int last = 1; last < n; last++) { for (int i = 0; i < n - last; i++) { if (x[i] > x[i+1]) { int aux = x[i]; x[i] = x[i+1]; x[i+1] = aux; SSC 0721 Teste e Inspeção de Software ICMC/USP p. 5

Vértices exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 6

Vértices exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ <-- for (int last = 1; /* 1 */ <-- last < n; /* 2 */ <-- last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ <-- SSC 0721 Teste e Inspeção de Software ICMC/USP p. 7

Vértices inicial/finais Todo GFC possui um único vértice inicial É aquele que contém o comando de entrada da unidade Pode possuir também vértices de saída São aqueles que não possuem sucessores Correspondem aos comandos de retorno da unidade SSC 0721 Teste e Inspeção de Software ICMC/USP p. 8

Arestas Se é possível executar-se o primeiro comando de um vérticej imediatamente após o último comando de um vérticei, então existe uma aresta (i, j) no GFC. SSC 0721 Teste e Inspeção de Software ICMC/USP p. 9

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 -->??? */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 10

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 --> 2 */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 11

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 --> 4, 9 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 12

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 */ last++) { /* 3 --> 2 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 13

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 --> 5 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 14

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 --> 7, 3 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 15

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 --> 5 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 16

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 --> 8, 6 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 17

Arestas exemplo public static void bubblesort(int[] x) { int n = x.length; /* 1 */ for (int last = 1; /* 1 */ last < n; /* 2 */ last++) { /* 3 */ for (int i = 0; /* 4 */ i < n - last /* 5 */ i++) { /* 6 */ if (x[i] > x[i+1]) { /* 7 */ int aux = x[i]; /* 8 */ x[i] = x[i+1]; /* 8 */ x[i+1] = aux; /* 8 --> 6 */ /* 9 */ SSC 0721 Teste e Inspeção de Software ICMC/USP p. 18

GFC exemplo 1 é o nó inicial 1 --> 2 2 --> 4, 9 3 --> 2 4 --> 5 5 --> 3, 7 6 --> 5 7 --> 6, 8 8 --> 6 8 7 1 2 4 9 5 3 6 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 19

Modelo de fluxo de controle A construção do GFC depende de uma interpretação do código. Depende da linguagem do programa sendo analisado Depende também da decisão de como cada estrutura da linguagem deve ser considerada O modelo descreve como uma unidade deve ser abstraída na forma de um grafo Uma ferramenta é a implementação do modelo de fluxo de controle que escolhemos. SSC 0721 Teste e Inspeção de Software ICMC/USP p. 20

MFC algumas questões Condições compostas if (a > b c > d ) a > b a > b c > d c > d S1 S1 S2 S2 Influência na aplicação dos critérios SSC 0721 Teste e Inspeção de Software ICMC/USP p. 21

MFC algumas questões Chamadas de subrotinas terminam um bloco de comandos? Como tratar chamadas de funções? x = f(a) + g(b + h(c)) Complexidade do GFC Dificuldade de visualização Influência na instrumentação Pré e pós-dominadores SSC 0721 Teste e Inspeção de Software ICMC/USP p. 22

MFC algumas questões Exceções Num bloco, alguns comandos podem gerar exceções e outros não Não é facil (impossível) identificar quais comandos geram exceções Todos compartilham o mesmo tratador O tipo de fluxo (aresta) é o mesmo? SSC 0721 Teste e Inspeção de Software ICMC/USP p. 23

MFC fonte executável while (true) { /*1*/ if ( a > b) /*2*/ S1; /*3*/ else break; / *4*/ S2; /*5*/ S3; /*6*/ 1 1 2 2 4 3 6 5 5 6 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 24

Conceitos Um caminho é uma sequência de vértices que são ligados por arestas. No exemplo (4, 5, 7, 6, 5, 3, 2) é um caminho. Um caminho completo é aquele que inicia no vértice de entrada e termina em um vértice de saída. Por exemplo: (1, 2, 9) ou (1, 2, 4, 5, 3, 2, 9) Cada caminho completo no GFC corresponde a um conjunto de possíveis execuções da unidade Em alguns casos esse conjunto pode ser vazio pois pode não existir dado de entrada que leve à execução do caminho. Um caminho (completo ou não) é dito não executável quando não existe nenhum dado no domínio de entrada do programa que leve à sua execução. SSC 0721 Teste e Inspeção de Software ICMC/USP p. 25

Exercícios (1) 15 void i n s e r c a o ( i n t a [ ], i n t s i z e ) { 16 i n t i, j, aux ; 17 f o r ( i = 1 ; i < s i z e ; i ++) { 18 aux = a [ i ] ; 19 j = i 1 ; 20 while ( j >= 0 && a [ j ] >= aux ) { 21 a [ j + 1] = a [ j ] ; 22 j ; 23 24 a [ j + 1] = aux ; 25 26 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 26

Exercícios (2) 28 p u b l i c s t a t i c void h e a p s o r t ( i n t n, double r a [ ] ) { 29 i n t l, j, i r, i ; 30 double r r a ; 31 32 l = ( n >> 1 ) + 1 ; 33 i r = n ; 34 f o r ( ; ; ) { 35 i f ( l > 1 ) { 36 r r a = r a[ l ] ; 37 e l s e { 38 r r a = r a [ i r ] ; 39 r a [ i r ] = r a [ 1 ] ; 40 i f ( i r == 1 ) { 41 r a [ 1 ] = r r a ; 42 return ; 43 44 45 i = l ; 46 j = l << 1 ; 47 while ( j <= i r ) { 48 i f ( j < i r && r a [ j ] < r a [ j + 1 ] ) { 49 ++ j ; 50 51 i f ( r r a < r a [ j ] ) { 52 r a [ i ] = r a [ j ] ; 53 j += ( i = j ) ; 54 e l s e { 55 j = i r + 1 ; 56 57 58 r a [ i ] = r r a ; 59 60 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 27

Exercícios (3) 62 void q u i c k s o r t ( i n t a [ ], i n t lo0, i n t h i 0 ) { 63 i n t l o = l o 0 ; 64 i n t h i = h i 0 ; 65 i n t mid ; 66 67 / / pause f o r redraw 68 i f ( h i 0 > l o 0 ) { 69 mid = a [ ( l o 0 + h i 0 ) / 2 ] ; 70 71 while ( l o <= h i ) { 72 while ( ( l o < h i 0 ) && ( a [ l o ] < mid ) ) 73 ++ l o ; 74 75 while ( ( h i > l o 0 ) && ( a [ h i ] > mid ) ) 76 h i ; 77 78 i f ( l o <= h i ) { 79 swap ( a, lo, h i ) ; 80 ++ l o ; 81 h i ; 82 83 84 85 i f ( l o 0 < h i ) 86 q u i c k s o r t ( a, lo0, h i ) ; 87 88 i f ( l o < h i 0 ) 89 q u i c k s o r t ( a, lo, h i 0 ) ; 90 91 92 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 28

Exercícios (4) 1 1 2 2 3 7 3 7 4 5 4 5 (A) 6 (B) 6 1 1 2 2 3 3 8 4 5 4 7 (C) 6 7 (D) 6 5 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 29

Solução (1) 0 15 void i n s e r c a o ( i n t a [ ], i n t s i z e ) { 16 i n t i, j, aux ; 17 f o r ( i = 1 ; i < s i z e ; i ++) { 18 aux = a [ i ] ; 19 j = i 1 ; 20 while ( j >= 0 && a [ j ] >= aux ) { 21 a [ j + 1] = a [ j ] ; 22 j ; 23 24 a [ j + 1] = aux ; 25 26 56 61 5 31 36 18 45 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 30

28 p u b l i c s t a t i c void h e a p s o r t ( i n t n, double r a [ ] ) { 29 i n t l, j, i r, i ; 30 double r r a ; 31 32 l = ( n >> 1 ) + 1 ; 33 i r = n ; 34 f o r ( ; ; ) { 35 i f ( l > 1 ) { 36 r r a = r a[ l ] ; 37 e l s e { 38 r r a = r a [ i r ] ; 39 r a [ i r ] = r a [ 1 ] ; 40 i f ( i r == 1 ) { 41 r a [ 1 ] = r r a ; 42 return ; 43 44 45 i = l ; 46 j = l << 1 ; 47 while ( j <= i r ) { 48 i f ( j < i r && r a [ j ] < r a [ j + 1 ] ) { 49 ++ j ; 50 51 i f ( r r a < r a [ j ] ) { 52 r a [ i ] = r a [ j ] ; 53 j += ( i = j ) ; 54 e l s e { 55 j = i r + 1 ; 56 57 58 r a [ i ] = r r a ; 59 60 Solução (2) 0 9 14 25 53 47 115 63 69 81 84 93 110 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 31 121

Solução (3) 62 void q u i c k s o r t ( i n t a [ ], i n t lo0, i n t h i 0 ) { 63 i n t l o = l o 0 ; 64 i n t h i = h i 0 ; 65 i n t mid ; 66 67 / / pause f o r redraw 68 i f ( h i 0 > l o 0 ) { 69 mid = a [ ( l o 0 + h i 0 ) / 2 ] ; 70 71 while ( l o <= h i ) { 72 while ( ( l o < h i 0 ) && ( a [ l o ] < mid ) ) 73 ++ l o ; 74 75 while ( ( h i > l o 0 ) && ( a [ h i ] > mid ) ) 76 h i ; 77 78 i f ( l o <= h i ) { 79 swap ( a, lo, h i ) ; 80 ++ l o ; 81 h i ; 82 83 84 85 i f ( l o 0 < h i ) 86 q u i c k s o r t ( a, lo0, h i ) ; 87 88 i f ( l o < h i 0 ) 89 q u i c k s o r t ( a, lo, h i 0 ) ; 90 91 92 26 35 56 29 50 65 47 72 87 11 94 100 108 114 122 SSC 0721 Teste e Inspeção de Software ICMC/USP p. 32 0

Solução (4) void m(int a, int b) { int i = 0; while (i < a + b) { if ( i % 2 == 0 ) i++; else i += 3; f(i); (A) void m(int a, int b) { int i = 0; while (i < a + b) { if ( i % 2 == 0 ) i++; else continue; f(i); (B) SSC 0721 Teste e Inspeção de Software ICMC/USP p. 33

Solução (4) void m(int a, int b) { int i = 0; while (i < a + b) { if ( i % 2 == 0 ) i++; else break; f(i); (C) void m(int a, int b) { int i = 0, j = 0; loop1: while (i < a + b) { while ( j < a + b) { if ( i + j > a ) continue loop1; j++; i++ return; (D) SSC 0721 Teste e Inspeção de Software ICMC/USP p. 34