Aula 21 Testes 1. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio
|
|
- Márcio Gesser Espírito Santo
- 5 Há anos
- Visualizações:
Transcrição
1 Aula 21 Testes 1 Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio
2 Especificação Objetivo dessa aula Apresentar os conceitos básicos utilizados ao testar módulos Apresentar 3 critérios de seleção de casos de teste caixa branca: cobertura de instruções, de arestas, de decisões Referência básica: Capítulo 15 Slides adaptados de: Staa, A.v. Notas de Aula em Programacao Modular; / 32
3 Sumário Objetivos e Processo de teste Registro de falhas ou defeitos Critérios de seleção de casos de teste Critérios de cobertura de instruções, de arestas e de decisões Teste de repetições, arrasto Transformação de casos de teste abstratos em casos de teste úteis 3 / 32
4 Motivação Trem fantasma Na década de 90, na Inglaterra, ocorreu um problema nos sensores das linhas férreas situadas em túneis O sistema alertava o trem a parar devido à suspeita de outro trem na linha A causa do problema era a névoa de água salgada que confundia os sensores Motivo da falha: Provavelmente os requisitos do sistema não levavam em conta a névoa de água salgada como um possível evento Mai 2016 Bruno Cafeo - OPUS Group/LES/DI/PUC-Rio 4 / 49
5 Motivação Metrô em Nova Iorque Em 1995, duas composições colidiram matando um maquinista e ferindo 54 pessoas A distância entre os sinais (projetado em 1918) era menor que a distância de parada necessária para os trens em 1995 (maiores, mais pesados e mais rápidos) Os trens foram atualizados sem modificação no sistema de controle Motivo da falha: Atualização de uma parte do sistema sem validar o sistema como um todo. Mai 2016 Bruno Cafeo - OPUS Group/LES/DI/PUC-Rio 5 / 49
6 Motivação Ariane 5 Em 1996, o veículo espacial Ariane 5 saiu de sua rota e explodiu segundos após o lançamento. Levou uma década para ser desenvolvido e custou 7 bilhões de dólares Componentes reutilizados do veículo Ariane 4 foram a causa do acidente Motivo da falha: A variável que armazenava cálculo da velocidade horizontal do foguete deveria ter 64 bits (floating point), mas possuía 16 bits (signed integer). O valor era maior que gerando uma falha de conversão!!! Mai 2016 Bruno Cafeo - OPUS Group/LES/DI/PUC-Rio 6 / 49
7 Motivação Alguém já testou algum produto de software? Quais foram os maiores desafios? Mai 2016 Bruno Cafeo - OPUS Group/LES/DI/PUC-Rio 7 / 49
8 O que são testes? Testes são técnicas de controle da qualidade baseados na condução de experimentos controlados Em um experimento controlado: dispõe-se de uma hipótese: o módulo a testar corresponde exatamente à sua especificação não tem funcionalidade a mais não tem funcionalidade a menos satisfaz todos os requisitos não funcionais formula-se um conjunto de experimentos: a massa de teste conjunto de dados e comandos os resultados dos testes que suportam a hipótese os resultados esperados para cada dado e/ou comando procura-se identificar condições que tenham elevada chance de mostrar que a hipótese não vale 8 / 32
9 O que são testes? Em um experimento controlado (cont.): executa-se o teste (efetua-se o experimento) obtêm-se os resultados dos testes comparam-se os resultados esperados com os obtidos caso todos os experimentos comprovem que o resultado esperado é igual ao obtido, conclui-se que o programa corresponde à sua especificação, considerando o teste realizado a conclusão será sempre dependente da massa de teste utilizada a rigor testes deveriam ser repetidos com variadas massas de teste e variadas condições de realização deles quanto maior o rigor do experimento, mais confiança poder-se-á depositar na conclusão 9 / 32
10 Postura ao testar Em geral o teste deve ser orientado à destruição procurar demonstrar que o módulo não corresponde exatamente à especificação procurar demonstrar que o módulo não funciona ao invés de demonstrar que corresponde à especificação ao invés de ver se funciona algumas vezes o teste será orientado à avaliação (auditoria funcional) verificar se resolve o problema do usuário quão bem o faz mesmo aqui o interesse é descobrir os casos em que não o faz tão bem quanto o esperado 10 / 32
11 Características de testes Testes são caros há quem diga que testes correspondem a entre 30 e 50% do esforço de desenvolvimento problema é como foi obtida esta estatística? demorados através da automação dos testes reduz-se significativamente (ordens de grandeza) o esforço despendido ineficientes encontram poucas falhas a cada execução ineficazes estatísticas mostram que somente encontram cerca de 65% dos problemas devem ser projetados cuidadosamente visando aumentar eficiência e eficácia 11 / 32
12 Objetivos do teste Encontrar o maior número de falhas relevantes possível encontrar todas é um ideal em geral não alcançável Encontrar falhas funcionais o módulo não corresponde exatamente à sua especificação Estimar o grau de qualidade do teste completeza (cobertura) do teste ver contadores de passagem riscos de defeitos remanescentes os defeitos remanescentes são sempre desconhecidos 12 / 32
13 Processo de teste Requisitos de qualidade Especificação Solicitação de alteração Corrigir artefato Selecionar critérios Produzir casos de teste Produzir artefato instrumentado Efetuar teste Falha do artefato Reduzir instrumentação Corrigir casos de teste Falha dos casos de teste Diagnosticar falhas OK final OK intermediário Solicitação de alteração Falha da especificação Artefato aceito Laudos finais fluxo de laudos fluxo do processo fluxo de informação Massas de teste aceitas Especificação aceita Armadura de teste aceita 13 / 32
14 Controle da suficiência dos testes Podem ser utilizadas diversas formas para controlar a suficiência dos testes medir a cobertura dos testes mede-se com o uso de contadores, vide aula de instrumentação (módulo CONTA) esta técnica de controle da suficiência de testes pode ser utilizada junto com qualquer critério de seleção de casos de teste existem vários critérios de completeza caso um ou mais dos contadores contenha zero e não for possível argumentar que o contador será sempre zero para qualquer instância de uso estamos diante de: ou código morto ou código de interceptação de falha 14 / 32
15 Controle da suficiência dos testes Código morto é uma função ou fragmento de código, que jamais poderá ser exercitado em qualquer condição de uso normal ou de tratamento de falha Código morto deve ser excluído do programa manutenção de código morto é uma despesa inútil Interceptação de falha não é código morto interceptação de falhas é proteção contra lesões causas endógenas, exógenas ou decorrentes do mau uso tipicamente consta de assertivas executáveis e o código de tratamento para o caso das assertivas falharem evidentemente o código de tratamento jamais deveria ser executado caso o artefato esteja operando de forma correta 15 / 32
16 Controle da suficiência dos testes Outra forma de avaliar a suficiência de testes é medir o intervalo de tempo entre falhas realizam-se continuamente testes (ou utiliza-se o módulo em produção) com dados variantes mede-se o intervalo de tempo decorrido entre falhas consecutivas Caso o intervalo observado seja maior do que um número estipulado, assume-se que o artefato tenha sido suficientemente testado corre-se o risco de que o artefato ainda contenha um número possivelmente grande de defeitos desconhecidos depende da forma do uso MTBF mean time between failures é um indicador de risco, quanto maior o MTBF menor o risco 16 / 32
17 Controle da suficiência dos testes Não são critérios que determinam a suficiência dos testes: esgotamento do prazo para entrega do artefato esgotamento dos recursos disponíveis para desenvolver o artefato Infelizmente tendem a ser os critérios mais populares 17 / 32
18 Critérios de seleção de casos de teste Critérios de seleção de casos de teste são utilizados para gerar os casos de teste que compõem a massa de teste a geração pode ser manual, ou parcial ou totalmente automatizada Categorias de critérios de seleção de casos de teste teste caixa preta gera os casos utilizando somente a especificação a massa pode ser desenvolvida antes ou junto com o código teste caixa branca (teste estrutural) gera os casos de teste utilizando o código completo e a especificação teste de estruturas de dados gera os casos de teste utilizando modelos e/ou o código de declaração da estrutura de dados e a especificação 18 / 35
19 Critérios de seleção de casos de teste Um critério de seleção de casos de teste é válido: existindo defeitos no artefato testado, acusa falhas que permitam localizar esses defeitos confiável: é indiferente à escolha dos dados e ações usados na massa de teste completo: exercita todo o código segundo um padrão de completeza eficaz: quanto mais falhas encontrar, provocadas por diferentes defeitos quanto mais defeitos for capaz de identificar eficiente: quanto menos recursos necessitar para executar os testes 19 / 35
20 Critérios: caixa branca Passo 1: produção do fluxograma MAT_tpCondRet f1(int i, int j) { if ( ( i < 10 ) && ( j < 10 ) ) { i = ( i + j ) / 2; if ( i > 5 ) { j = 10; else { i = 10; } } return MAT_CondRetOK; }
21 Critérios: caixa branca MAT_tpCondRet f1(int i, int j) { } Passo 1: produção do fluxograma if ( ( i < 10 ) && ( j < 10 ) ) { } i = ( i + j ) / 2; if ( i > 5 ) { else { } j = 10; i = 10; return MAT_CondRetOK; S if ( ( i < 10 ) && ( j < 10 )) i = ( i + j ) / 2 ; if ( i > 5 ) j = 10 ; i = 10 ; S N N
22 Critérios de cobertura: instruções Cobertura de instruções A if ( ( i < 10 ) && ( j < 10 )) N (vértices) Cada instrução é executada pelo menos uma vez no B S i = ( i + j ) / 2 ; conjunto de todos os casos de teste rotulam-se as instruções e C criam-se os casos de teste S if ( i > 5 ) N cada caso percorre pelo D E menos uma instrução ainda não percorrida j = 10 ; i = 10 ; até que todas as instruções tenham sido percorridas i = 4 ; j = 8 A B C D i = 4 ; j = 4 A B C E Jun 2009 LES/DI/PUC-Rio 22 / 32
23 Critérios de cobertura: arestas Cobertura de arestas I Cada aresta é percorrida pelo if ( ( i < 10 ) && ( j < 10 )) N B menos uma vez no conjunto de todos os casos de teste D A i = ( i + j ) / 2 ; C S N if ( i > 5 ) j = 10 ; i = 10 ; F S E rotulam-se as arestas e criam-se os casos de teste cada caso percorre pelo menos uma aresta ainda não percorrida até que todas as arestas tenham sido percorridas i = 4 ; j = 8 I A C D F i = 4 ; j = 6 I A C E F Suficiente? Jun 2009 LES/DI/PUC-Rio 23 / 32
24 Critérios de cobertura: arestas Cobertura de arestas I Cada aresta é percorrida pelo if ( ( i < 10 ) && ( j < 10 )) N B menos uma vez no conjunto de todos os casos de teste D A i = ( i + j ) / 2 ; C S N if ( i > 5 ) j = 10 ; i = 10 ; F S E rotulam-se as arestas e criam-se os casos de teste cada caso percorre pelo menos uma aresta ainda não percorrida até que todas as arestas tenham sido percorridas i = 4 ; j = 8 I A C D F i = 4 ; j = 6 I A C E F i = 3 ; j = 10 I B F Jun 2009 LES/DI/PUC-Rio 24 / 32
25 Critérios de cobertura: decisões A (v, v) if ( ( i < 10 ) N D (f, f) && ( j < 10 )) S i = ( i + j ) / 2 ; S if ( i > 5 ) N B (v, f) C (f, v) E (v) F (f) j = 10 ; i = 10 ; Cobertura de decisões Cada combinação ao avaliar membros das expressões lógicas é exercitada pelo menos uma vez no conjunto de todos os casos de teste Neste caso, as decisões são rotuladas i = 4 ; j = 9 A, E i = 1 ; j = 1 A, F i = 4 ; j = 10 B i = 10 ; j = 4 C i = 10 ; j = 10 D Possíveis combinações de decisões: v,v,v v,v,f v,f f,v f,f LES/DI/PUC-Rio Neste caso, são necessários no mínimo 5 casos de teste 25 / 35
26 Critérios de cobertura: repetições Caso cobertura de instrução executar a repetição para n > 1 iterações; Caso cobertura de arestas executar a repetição para: n = 0 iterações n = 1 iteração n >= 2 iterações Caso cobertura de decisões como na cobertura de arestas em adição: cada uma das possibilidades de se decidir pelo término foi exercitada para os 3 casos acima break, ou return no corpo da repetição expressão de controle de término composta 26 / 35
27 Critérios de cobertura: repetições O custo do teste cresce com o número de iterações portanto o número de iterações a testar no caso n > 1 deverá ser pequeno e ser suficientemente grande para que o teste possa ser assumido válido 27 / 35
28 Arrasto Arrasto é o maior dos menores números de iterações necessárias para que todas as variáveis ou estados inicializados antes e modificados durante a repetição passem a depender exclusivamente de valores computados em iterações anteriores de uma mesma instância de execução dessa repetição Exemplos: A[0] = 0 ; A[1] = 0 ; A[2] = 0 ; A[3] = 0 ; memset( A, 0, sizeof( A )) ; pelem = ProcurarSimbolo( ptabela, psimbolo ) ; todos têm Arrasto == 0 Arrasto: força de resistência ao avanço de um objeto em um fluido, resultante da ação do meio 28 / 35
29 Critérios de cobertura: repetições O arrasto é o número mínimo de iterações a realizar para que todos os valores que possam ser modificados durante a repetição tenham sido de fato modificados 29 / 35
30 Arrasto Arrasto é o menor número de iterações necessárias para que todas as variáveis ou estados inicializados antes e modificados durante a repetição passem a depender exclusivamente de valores modificados em iterações anteriores de uma mesma instância de execução dessa repetição Exemplos: for (i = 0; i < TamVet; i++) { Vet[i] = 0; } Soma = 0; for (i = 0; i < TamVet; i++) { Soma += Vet[i]; } i somente é atualizado apenas depois do fim da 1a. Interação todos têm Arrasto == 1 Jun 2009 LES/DI/PUC-Rio 30 / 35
31 Arrasto: exemplos Série de Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,... lei de formação F n = F n-2 + F n-1 tem Arrasto ==? int main() { int tam, f1, f2, f3, cont; do { printf("digite o tamanho da sequencia: "); scanf("%i", &tam); if (tam <= 0) printf("digite um numero positivo!!"); } while (tam <= 0); } printf("0-1 - "); f1 = 0; f2 = 1; for (cont = 3; cont <= tam ; cont++) { f3 = f2 + f1; printf("%i - ", f3); f1 = f2; f2 = f3; } return 0;? Jun 2009 LES/DI/PUC-Rio 31 / 35
32 Arrasto: exemplos Série de Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,... lei de formação F n = F n-2 + F n-1 tem Arrasto == 3 int main() { int tam, f1, f2, f3, cont; do { printf("digite um numero: "); scanf("%i", &tam); if (tam <= 0) printf("digite um numero positivo!!"); } while (tam<=0); Ainda não satisfaz as condições do arrasto Quando variável passa depender somente de valores gerados em iterações anteriores } printf("0-1 - "); f1 = 0; f2 = 1; for (cont = 3; cont <= tam ; cont++) { f3 = f2 + f1; printf("%i - ", f3); f1 = f2; f2 = f3; } return 0; cont f3 f1 f Jun 2009 LES/DI/PUC-Rio 32 / 35
33 Arrasto: exemplos for ( i = 0 ; i < 10 ; i++ )... for ( pelem = porg ; pelem!= NULL ; pelem = pelem->pprox )... fgets, fputs, fread, fwrite tpestado Corrente ; Corrente = DefinirPrimeiro( ValorProcurado ) ; while (!Terminou( Corrente )) { if ( Comparar( ObterValor( Corrente ), ValorProcurado ) == EH_IGUAL ) { return Corrente ; } /* if */ Corrente = DefinirProximo( Corrente, ValorProcurado ) ; } /* while */ return ESTADO_NIL ; Todos têm Arrasto == 1 33 / 35
34 Arrasto: exemplos A Intercalar arquivos Buffer A Buffer B B Abrir arquivos E Ler 1o. reg de A Ler 1o. reg de B C 2 Efetuar a intercalação F Intercalar pares regs correntes D Fechar arquivos { enquanto RegA.Chave < máximo ou RegB.Chave < máximo } {RegA.Chave < RegB.Chave} {RegA.Chave == RegB.Chave} G Transferir reg de A para S H Transferir regs de A para E e de B para E {RegA.Chave > RegB.Chave} I Transferir reg de B para S Tem Arrasto ==? Jun 2009 LES/DI/PUC-Rio 34 / 35
35 Arrasto: exemplos Tem Arrasto == 2 A Intercalar arquivos Abrir arquivos MAIOR DOS... menores números de iterações B Buffer A Buffer B Caso 1 E Ler 1o. reg de A Ler 1o. reg de B Transferir reg de A para S C 2 Efetuar a intercalação Intercalar pares regs correntes {RegA.Chave < RegB.Chave} {RegA.Chave == RegB.Chave} G F Caso 2 H Transferir regs de A para E e de B para E Fechar arquivos { enquanto RegA.Chave < máximo ou RegB.Chave < máximo } {RegA.Chave > RegB.Chave} Transferir reg de B para S buffers mudam com duasbuffers mudam com somente uma interações interação Jun 2009 LES/DI/PUC-Rio 35 / 35 D I
36 Arrasto: exemplos A Intercalar arquivos B Abrir arquivos E Ler 1o. reg de A Ler 1o. reg de B C 2 Efetuar a intercalação F Intercalar pares regs correntes D Fechar arquivos { enquanto RegA.Chave < máximo ou RegB.Chave < máximo } {RegA.Chave < RegB.Chave} {RegA.Chave == RegB.Chave} G Transferir reg de A para S H Transferir regs de A para E e de B para E {RegA.Chave > RegB.Chave} I Transferir reg de B para S Tem Arrasto == 2 36 / 35
37 Critérios de cobertura: repetições O arrasto é o número mínimo de iterações a realizar para que todos os valores que possam ser modificados durante a repetição tenham sido de fato modificados corresponde ao número mínimo de iterações para atingir o estado genérico é função do projetista determinar o arrasto Os casos de teste a para as repetições são: caso 0 iteração (caso especial) caso 1 iteração (base da indução) caso n >= arrasto + 1 iterações (simula o passo de indução) devem sempre ser considerados os casos de término: break ou return no corpo da iteração atingiu a condição de término 37 / 35
38 Critério cobertura de decisões: exemplo Esquema do algoritmo para pesquisa em qualquer tabela tpestado Corrente ; Corrente = DefinirPrimeiro( ValorProcurado ) ; while (!Terminou( Corrente )) { if ( Comparar( ObterValor( Corrente ), ValorProcurado ) == EH_IGUAL ) { return Corrente ; } /* if */ Corrente = DefinirProximo( Corrente, ValorProcurado ) ; } /* while */ return ESTADO_NIL ; arrasto == 1 38 / 35
39 Critério cobertura de decisões: exemplo Caso 0 iterações: tabela vazia tabela com 1 ou mais elementos e acha o primeiro elemento Caso 1 iteração: tabela com 1 elemento e não acha o elemento tabela com 2 ou mais elementos e acha o segundo elemento Caso arrasto + 1 iterações: tabela com 2 elementos e não acha o elemento tabela com 3 ou mais elementos e acha o segundo elemento 39 / 35
40 FIM 40 / 32
Aula 23 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016
Aula 23 Testes 3 Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Slides adaptados de: Staa, A.v. Notas de Aula em Programacao Modular; 2008. Especificação Objetivo dessa
Leia maisAula 20 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016
Aula 20 Testes 3 Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Slides adaptados de: Staa, A.v. Notas de Aula em Programacao Modular; 2008. Teste de Caixa Branca O que
Leia maisProgramação Modular: Prova, Trabalho e Considerações Finais
Programação Modular: Prova, Trabalho e Considerações Finais Alessandro Garcia LES/DI/PUC-Rio Junho 2016 Prova 22/06 Toda matéria Em particular, material após P1 Dicas: Revisem os exercícios dados em sala
Leia maisTeste Estrutural 1. Arndt von Staa Departamento de Informática PUC-Rio Maio 2017
1 Teste Estrutural 1 Arndt von Staa Departamento de Informática PUC-Rio Maio 2017 Especificação Objetivo desse módulo Apresentar os conceitos de teste estrutural visando o teste de unidades. Apresentar
Leia maisTeste Estrutural 1. Arndt von Staa Departamento de Informática PUC-Rio Fevereiro 2018
1 Teste Estrutural 1 Arndt von Staa Departamento de Informática PUC-Rio Fevereiro 2018 Especificação Objetivo desse módulo Apresentar os conceitos de teste estrutural visando o teste de unidades. Apresentar
Leia maisAula 27 Testes Caixa Branca. Alessandro Garcia Willian Oizumi LES/DI/PUC-Rio Novembro 2014
Aula 27 Testes Caixa Branca Alessandro Garcia Willian Oizumi LES/DI/PUC-Rio Novembro 2014 Especificação Objetivo dessa aula Apresentar os conceitos básicos utilizados ao testar módulos Apresentar 3 critérios
Leia maisConceitos básicos de programação
Especificação de comandos Objectivo: O objectivo da especificação formal de comandos é a necessidade de assegurar a correcção dos comandos a desenvolver. Torna-se necessário desenvolver uma metodologia
Leia maisApêndice 1. Recomendações para testes de módulos
Recomendações para testes de módulos - 1 Apêndice 1. Recomendações para testes de módulos O presente conjunto de recomendações tem por objetivo definir um conjunto mínimo de critérios de seleção de casos
Leia maisProgramação Modular: Exercício T4 e Considerações Finais
Programação Modular: Eercício T4 e Considerações Finais Alessandro Garcia LES/DI/PUC-Rio Cronograma Aula 13/6: Eercício do T3 relativo a: critérios de cobertura de teste caia-branca instrumentação para
Leia maisTeste de Software. Karen Frigo Busolin Novembro / 2010
Teste de Software Karen Frigo Busolin Novembro / 2010 Processo de Testes de Software Possibilitar aos profissionais maior visibilidade e organização dos trabalhos. Representa uma estruturação de etapas,
Leia maisRespostas Exercício: Cobertura Teste Caixa Branca
Respostas Eercício: Cobertura Teste Caia Branca Alessandro Garcia LES/DI/PUC-Rio Junho 2016 Eercício 1 a) Fluograma Note que eistem dois comandos (13 e 14), com rótulos G e H, na mesma linha. G 1. #include
Leia maisAula 04 Princípios de Modularidade 3 e Introdução à Teste de Software Alessandro Garcia
Aula 04 Princípios de Modularidade 3 e Introdução à Teste de Software Alessandro Garcia LES/DI/PUC-Rio Março 2017 Avisos O horário de monitoria será no seguinte horário: 6ª. Feira, 13:00 15:00 (15 alunos
Leia maisLinguagem C++ Estruturas de controle Parte II Estruturas de repetição
Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um
Leia maisAula 10 Especificação de Requisitos
Aula 10 Especificação de Requisitos Alessandro Garcia LES/DI/PUC-Rio Setembro 2016 Especificação Objetivos dessa aula Apresentar a importância e o que são especificações de requisitos, bem como conceitos
Leia maisTeste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo
Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Casos de Teste e Cenários de Teste Técnicas de Teste Técnica de Teste Estrutural 2 Casos
Leia maisAula 5 Introdução à Teste de Módulos. Alessandro Garcia LES/DI/PUC-Rio Agosto 2017
Aula 5 Introdução à Teste de Módulos Alessandro Garcia LES/DI/PUC-Rio Agosto 2017 Avisos Monitoria, horário: Sextas, 11:00 às 13:00 9º. Andar do Prédio Pe. Leonel Franca Próxima aula: exercício (T1) Alessandro
Leia maisQualidade de Software e Atividades de Verificação e Validação
e Atividades de Verificação e Validação Profa. Ellen Francine Barbosa {francine}@icmc.usp.br Instituto de Ciências Matemáticas e de Computação ICMC/USP Roteiro I Trem Fantasma Desastre no Metrô de Nova
Leia maisEstruturas de Repetição
Estruturas de Repetição Disciplina: Algoritmos e Programação Luciano Moraes Da Luz Brum Universidade Federal do Pampa Unipampa Campus Bagé Email: lucianobrum18@gmail.com Horários de atendimento: (outros
Leia maisEstruturas de repetição
Título em português: FEITIÇO DO TEMPO (1993) Sinopse: Um repórter de televisão que faz previsões de meteorologia vai à uma pequena cidade para fazer uma matéria especial sobre o inverno. Querendo ir embora
Leia maisLINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Leia maisSSC 0721 Teste e Validação de Software
SSC 0721 Teste e Validação de Software Conceitos básicos Prof. Marcio E. Delamaro delamaro@icmc.usp.br SSC 0721 Teste e Validação de Software ICMC/USP p. 1 O que é teste Atividade de executar um programa
Leia maisModulo 4: while do while (limites de variáveis)
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 4: while do while (limites de variáveis) Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro Até aqui apreendemos as estruturas: If e If...else Switch
Leia maisAula 17 Decomposição sucessiva
Aula 17 Decomposição sucessiva Francisco Dantas LES/DI/PUC-Rio Agosto 2008 Especificação Objetivos dessa aula Apresentar o método de desenvolvimento baseado em decomposição sucessiva Apresentar uma técnica
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.4. Estruturas de Controle 3.4.1. Comandos
Leia maisMedidas de Esforço de Desenvolvimento de Software
Medidas de Esforço de Desenvolvimento de Software Unidade 1 Fundamentos de Métricas e Medidas Luiz Leão luizleao@gmail.com http://www.luizleao.com Unidade 1 Fundamentos de métricas e medidas Introdução
Leia maisAula 11 Assertivas. Alessandro Garcia LES/DI/PUC-Rio Abril 2016
Aula 11 Assertivas Alessandro Garcia LES/DI/PUC-Rio Abril 2016 Especificação Objetivo dessa aula Discutir como especificar funções Apresentar assertivas de entrada, de saída e estruturais como um instrumento
Leia maisEstruturas de Repetição
Prof.: Edwar Saliba Júnior Fevereiro 2012 1 Nomenclaturas: Loopings, Laços ou Malhas de Repetição; Possibilidades de Parada: Quantidade de repetições previamente definida (melhoria na legibilidade e qualidade
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 9 Subalgoritmos, funções e passagem de parâmetros Profa. Marina Gomes marinagomes@unipampa.edu.br 22/06/2017 Engenharia de Computação - Unipampa 1 Modularização Facilita a
Leia maisTeste de Software. Competência: Entender as técnicas e estratégias de testes de Software
Teste de Software Competência: Entender as técnicas e estratégias de testes de Software Conteúdo Programático Introdução O que é teste de software? Por que é necessário testar um software? Qual a causa
Leia maisAnálise e Projeto de Algoritmos
Análise e Projeto de Algoritmos 2018.2 Modelo de Computação Determinação de como os cálculos são realizados pelo computador e que funcionalidades ele possui. Máquina de Turing É um modelo de computação
Leia maisLINGUAGEM C: COMANDOS DE REPETIÇÃO
LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições
Leia maisLINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Leia maisQualidade de software. Prof. Emiliano Monteiro
Qualidade de software Prof. Emiliano Monteiro Por que realizar revisões por pares? 1. Para melhorar a qualidade. 2. Captura 80% de todos os erros se feito corretamente. 3. Captura erros de codificação
Leia maisAlgoritmos e Estruturas de Dados I Linguagem C
Algoritmos e Estruturas de Dados I (DCC/003) Algoritmos e Estruturas de Dados I Linguagem C Aula Tópico 11 Recursividade 1 Recursão Na linguagem C, uma função pode chamar outra função. A função main()
Leia maisEntrada Processamento Saída
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade Disciplina: PEOO Professor: Eberton da Silva Marinho e-mail: ebertonsm@gmail.com Data:
Leia maisEstruturas de Repetição
Estruturas de Repetição Alguns cálculos realizados pelo computador são feitos de forma repetitiva Exemplos: Cálculo de 25! fat = 25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2*1; Soma
Leia maisREUSO E REUSABILIDADE
REUSO E REUSABILIDADE Manutenção de Software Profa. Cynthia Pinheiro Antes de mais nada... 2ª Lista de Exercícios Já está disponível no site a 2ª Lista de Exercícios Entrega: dia 03/10, no horário da aula.
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 5 Estruturas de Repetição Profa. Marina Gomes marinagomes@unipampa.edu.br 26/04/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje Estrutura de repetição Comando for
Leia maisGarantia de Qualidade
Garantia de Qualidade Teste de Software Profa Rosana Braga Material produzido por docents do Labes e revisado por Simone Souza Disciplina: Engenharia de Software ICMC/USP O Processo de Engenharia de Software
Leia maisProgramação Estruturada Aula - Estruturas de Repetição
Programação Estruturada Aula - Estruturas de Repetição Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br 2 TESTE NO INÍCIO: WHILE Fundamentos TESTE NO INÍCIO: WHILE Estes comandos permitem
Leia maisLinguagem C. André Tavares da Silva.
Linguagem C André Tavares da Silva dcc2ats@joinville.udesc.br Lógica de Programação O objetivo da lógica de programação é exercitar os métodos de raciocínio e elaborar soluções coerentes para determinados
Leia maisUnidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano
Linguagem de Programação 1 Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano Objetivo: Apresentar a composição lógica em estruturas de decisão e as
Leia maisTeste de Software. Proj. Desenvolvimento de Software. Prof. Cleverton Hentz. 30 de agosto de Material Apresentado
Teste de Software Proj. Desenvolvimento de Software Prof. Cleverton Hentz cleverton.hentz@ifrn.edu.br 30 de agosto de 2017 Material Apresentado Sumário de Aula 1 Introdução 2 Níveis de Teste 3 Terminologia
Leia maisLINGUAGEM C CONTROLE DE FLUXO
LINGUAGEM C CONTROLE DE FLUXO Introdução à Programação Prof. Cayo Fontana SUMÁRIO Instruções Condicionais Simples Composta Seleção Instruções de Repetição Instruções de Desvio INSTRUÇÕES CONDICIONAIS Praticamente
Leia maisAula 5 ESTRUTURAS DE REPETIÇÃO (WHILE)
Aula 5 ESTRUTURAS DE REPETIÇÃO (WHILE) Profa. Dra. Elisa Yumi Nakagawa 1o semestre/2017 Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURAS CONDICIONAIS Estrutura Condicional Simples Estrutura Condicional
Leia maisDesenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software
Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 7 Maio 2012 1. Especificação de requisitos 2. Projeto
Leia maisGerência de Projetos e Qualidade de Software. Prof. Walter Gima
Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVO Compreender uma série de técnicas de testes, que são utilizadas para descobrir defeitos em programas Conhecer as diretrizes que
Leia maisIntrodução a Testes de Software. Ricardo Argenton Ramos
Introdução a Testes de Software Ricardo Argenton Ramos ricargentonramos@gmail.com Agenda da Aula Introdução sobre Testes; Testes Funcionais de software; Testes Estruturais de Software; Teste de Software
Leia maisTeste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo
Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Técnica de Teste Estrutural Critérios de Teste 2 Casos de Teste Diante da impossibilidade
Leia maisComputação 1 - Python Aula 7 - Teórica: Estrutura de Repetição com teste de parada: while 1/ 23
Computação 1 - Python Aula 7 - Teórica: Estrutura de Repetição com teste de parada: while 1/ 23 Permite que o programador especifique que o programa deve repetir um conjunto de comandos enquanto uma dada
Leia mais#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Leia maisAED2 - Aula 22 Busca em largura, cálculo de distâncias
AED2 - Aula 22 Busca em largura, cálculo de distâncias Relembrando a busca genérica, usando um versão alternativa: marque todos os vértices como não encontrados. marque s como encontrado. coloque s no
Leia maisAlgoritmos e Técnicas de Programação. Professora: Luciana Faria
Algoritmos e Técnicas de Programação Professora: Luciana Faria Estrutura de Repetição condicional Estrutura de repetição Nas aulas anteriores verificamos que a execução sequencial dos comandos da função
Leia maisMC-102 Aula 07 Comandos Repetitivos
MC-102 Aula 07 Comandos Repetitivos Instituto de Computação Unicamp 11 de Setembro de 2016 Roteiro 1 Variável Indicadora Números Primos Números em Ordem 2 Variável Contadora Números Primos 3 Outros Exemplos
Leia maisMétodos Computacionais em Física
Métodos Computacionais em Física Tatiana G. Rappoport tgrappoport@if.ufrj.br 2014-2 Informações gerais Todas as informações sobre o curso, ementa, cronograma, listas de exercício etc podem ser encontradas
Leia maisSSC643 -Avaliação de Desempenho de Sistemas Computacionais -
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC643 -Avaliação de Desempenho de Sistemas Computacionais - Aula 2 Sarita Mazzini Bruschi
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal
Leia maisProgramação de Computadores I Funções de Repetição da Linguagem C PROFESSORA CINTIA CAETANO
Programação de Computadores I Funções de Repetição da Linguagem C PROFESSORA CINTIA CAETANO Comando WHILE O comando while executa um bloco de comandos enquanto a condição testada for verdadeira (diferente
Leia maisAula 10 Comandos de Repetição
Aula 10 Comandos de Repetição Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br 1 Introdução Em certas situações é necessária
Leia maisRecursão David Déharbe
Recursão David Déharbe 1 1 Objetivos da aula O conceito de recursão. Exemplos. Programação em C. 2 2 Roteiro da aula Revisão de funções; Motivação; Definição; Dois exemplos básicos; Recursão mútua; Dois
Leia maisIntrodução a Teste de Software
Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software
Leia maisAula 19 Instrumentação Parte 1
Aula 19 Instrumentação Parte 1 Alessandro Garcia LES/DI/PUC-Rio Novembro 2016 Hoje... Especificação Objetivo dessa aula Motivar instrumentação de programas Necessidade do controle de espaços dinâmicos
Leia maisEstruturas de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisAula 7 Oficina de Programação Estruturas de Repetição no C. Profa. Elaine Faria UFU
Aula 7 Oficina de Programação Estruturas de Repetição no C Profa. Elaine Faria UFU - 2017 Aula de Hoje Estruturas de repetição: do while while for Introdução Apresentar as estruturas de repetição do while,
Leia maisAula 17 Revisão. Alessandro Garcia LES/DI/PUC-Rio Abril 2010
Aula 17 Revisão Alessandro Garcia LES/DI/PUC-Rio Abril 2010 Matéria da Prova Todo material dado até o dia de hoje capítulos correspondentes do livro são indicados no início de cada aula material referenciado
Leia maisINTRODUÇÃO A ENGENHARIA DE SOFTWARE
Universidade TESTE Estadual DE SOFTWARE Vale do Acaraú O que são testes? INTRODUÇÃO A ENGENHARIA DE SOFTWARE Teste é um processo de avaliar um sistema ou um componente de um sistema para verificar se ele
Leia maisProgramação Procedimental
Programação Procedimental Maria Adriana Vidigal de Lima Universidade Federal de Uberlândia - 2013 1 Escrita de Algoritmos 1.1 Técnicas de Programação e Algoritmos Na elaboração de programas maiores e complexos
Leia maisEngenharia de Software
Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação
Leia maisAula 02 Conceitos e Princípios de Modularidade 1
Aula 02 Conceitos e Princípios de Modularidade 1 Alessandro Garcia LES/DI/PUC-Rio Agosto 2016 Lembretes Horário das aulas inicio cada aula a partir de 13:15 Sítio (site) da disciplina: www.inf.puc-rio.br/~inf1301
Leia maisModularidade - Funções e Procedimentos
Modularidade - Funções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situações, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de entrada
Leia maisAula 02 Conceitos e Princípios de Modularidade 1
Aula 02 Conceitos e Princípios de Modularidade 1 Alessandro Garcia LES/DI/PUC-Rio Março 2017 Lembretes Horário das aulas vamos ter que começar as 13:00 Definição de horário de monitoria Sítio (site) da
Leia maisAula 15: Repetição (Parte 3)
Aula 15: Repetição (Parte 3) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Breve Revisão Comandos de Decisão
Leia maisRecursividade. Objetivos do módulo. O que é recursividade
Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade
Leia maisAlgoritmos e Programação (While Do While - Do) Prof. Me. Adelson Felipe Dias Nogueira
Algoritmos e Programação (While Do While - Do) Prof. Me. Adelson Felipe Dias Nogueira E-mail: adelson.nogueira@pitagoras.com.br Aplicação: 1) Como imprimir os três primeiros número ímpares? Aplicação:
Leia maisTeste de Software. Objetivo: Executar software para revelar erros/falhas ainda não descobertos. Pode gastar 40% do esforço de desenvolvimento
Teste de Software 3 Teste de Software Objetivo: Executar software para revelar erros/falhas ainda não descobertos Pode gastar 40% do esforço de desenvolvimento 2 Teste de Software Defeito (fault, defects)
Leia maisExercícios Repetição
Curso de Engenharia de Controle e Automação Disciplina: Informática para a Automação Professor: Marcelo Cendron Exercícios Repetição 1.1 8.3 Exercícios 1. Faça um programa utilizando o comando while, que
Leia maisVETORES Motivação AULA 19
AULA 19 VETORES 19.1 Motivação Considere o problema de calcular a média aritmética das notas de 5 alunos de uma disciplina e determinar e escrever o número de alunos que obtiveram nota superior à média
Leia maisAula 14: Repetição (Parte 2)
Aula 14: Repetição (Parte 2) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Laços de repetição Comando de repetição
Leia maisAula 9 Especificação de Requisitos
Aula 9 Especificação de Requisitos Alessandro Garcia LES/DI/PUC-Rio Abril 2016 Especificação Objetivos dessa aula Apresentar a importância e o que são especificações de requisitos, bem como conceitos relacionados
Leia maisLINGUAGEM C: ARQUIVOS
LINGUAGEM C: ARQUIVOS Prof. André Backes Arquivos 2 Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial;
Leia mais7 Conclusão e Trabalhos Futuros
7 Conclusão e Trabalhos Futuros O teste é uma etapa importante no desenvolvimento de software. Quando realizado de forma apropriada pode identificar uma grande parcela dos defeitos contidos no software,
Leia maisespecificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje
1 Introdução Testar é o conjunto de tarefas ou passos executados para verificar se um produto ou serviço atende à sua proposta. Dessa forma, a execução de testes em um programa contribui para a melhoria
Leia mais4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
Leia maisTeste de Software. Planejamento de Teste. Rosemary Silveira Filgueiras Melo
Teste de Software Planejamento de Teste Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Atividades de Teste Conceitos importante no Contexto de Teste Abordagem de Teste 2 Atividades de
Leia maisAula 11. Assertivas. Alessandro Garcia LES/DI/PUC-Rio Setembro 2009
Aula 11 Assertivas Alessandro Garcia LES/DI/PUC-Rio Setembro 2009 Especificação Objetivo dessa aula Apresentar assertivas de entrada, de saída e estruturais como um instrumento de especificação Referência
Leia maisIntrodução à Programação. Expressões Booleanas e Comandos Condicionais
Introdução à Programação Expressões Booleanas e Comandos Condicionais Comandos Condicionais Misture os ingredientes Unte forma com manteiga Despeje a mistura na forma Algoritmo para preparação de bolo
Leia maisProf. A. G. Silva. 13 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de setembro de / 21
INE5603 Introdução à POO Prof. A. G. Silva 13 de setembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 13 de setembro de 2017 1 / 21 Estruturas de repeteção (INTRODUÇÃO) Prof. A. G. Silva INE5603
Leia maisComandos de Controle do Programa
Comandos de Controle do Programa Comandos de Seleção - if, else, switch Comandos de Iteração - for, while, do-while Comandos de Desvio - return, goto, break, continue O Comando if O if O else O if-else-if
Leia maisTeste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.
Teste de Software Prof. Camila Pedro de Assis Sobreira Jr. 2 Técnicas de Testes Técnica de Teste Funcional Técnica de Teste Estrutural 3 Testes Funcionais Teste de Especificação de Requisitos. Teste de
Leia maisEngenharia de Software
Prof. M.Sc. Ronaldo C. de Oliveira ronaldooliveira@facom.ufu.br FACOM - 2011 Verificação e Validação (V&V) S.L.Pfleeger (Cap.8 & 9) R.Pressman (Cap.13 & 14) I.Sommerville (Cap.22 & 23) Introdução Verificação
Leia maisEstágio II. Aula 01 Qualidade de Software. Prof. MSc. Fred Viana
Estágio II Aula 01 Qualidade de Software Prof. MSc. Fred Viana Agenda Qualidade de Software Definições Dimensões Qualidade e Produtividade Por que testar um software Definições de Teste Motivação Por que
Leia maisEngenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.
Engenharia de Software Aula 21 Revisão da Prova 2 Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@dcc.ufmg.br 16 Maio 2018 Aula 16: POO Um programa OO é geralmente constituído de várias classes
Leia maisC Comandos de Controle
C Comandos de Controle Adriano Cruz adriano@nce.ufrj.br 19 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Revisão da Seção Introdução Comandos de Teste Comandos de
Leia mais1. A principal razão de dividir o processo de teste em tarefas distintas é:
Simulado CTFL- BSTQB Tempo de duração: 60 minutos 1. A principal razão de dividir o processo de teste em tarefas distintas é: a) Cada fase do teste tem uma proposta diferente b) É mais fácil para gerência
Leia maisProgramação I Estruturas de Repetição
Programação I Estruturas de Repetição Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Expressões compactas Frequentemente existe a necessidade de escrever expressões da forma:
Leia maisLaços de repetição for, while, do-while
Computação Eletrônica Laços de repetição for, while, do-while Prof: Luciano Barbosa Estruturas de Repetição Imagine um programa que calcula a média de um aluno. Este programa é bastante simples, bastaria:
Leia mais1 TECNOLOGIA ELEMENTAR CAPÍTULO 4 E-books PCNA. Vol. 1 TECNOLOGIA ELEMENTAR CAPÍTULO 4 ROTINAS DE REPETIÇÃO. Página 1
1 TECNOLOGIA ELEMENTAR CAPÍTULO 4 E-books PCNA Vol. 1 TECNOLOGIA ELEMENTAR CAPÍTULO 4 ROTINAS DE REPETIÇÃO Página 1 2 TECNOLOGIA ELEMENTAR CAPÍTULO 4 SUMÁRIO Apresentação -----------------------------------------------------------
Leia mais