Aula 06 Introdução a Teste Automatizado. Alessandro Garcia LES/DI/PUC-Rio Março 2013

Tamanho: px
Começar a partir da página:

Download "Aula 06 Introdução a Teste Automatizado. Alessandro Garcia LES/DI/PUC-Rio Março 2013"

Transcrição

1 Aula 06 Introdução a Teste Automatizado Alessandro Garcia LES/DI/PUC-Rio Março 2013

2 Especificação Objetivo dessa aula Apresentar os uma técnica para a criação testes automatizados e mostrar como desenvolver dirigido por testes. Slides adaptados de: Staa, A.v. Notas de Aula em Programacao Modular; Referência básica: Monografia: Arcabouço para a Automação de Testes de Programas Redigidos em C; contido no arquivo TesteAutomatizado.zip acessível para download através do site da disciplina, aba: Software Referência adicional: Beck, K.; Test-Driven Development by Example; Reading, Massachusetts: Addison-Wesley; 2003 Ago 2008 Arndt von Staa LES/DI/PUC-Rio 2 / 27

3 Sumário Automação simplória Arcabouço de apoio ao teste automatizado Linguagem de diretivas de teste Interpretador de diretivas Exemplo de uso do arcabouço Arquitetura do arcabouço Vantagens e desvantagens Ago 2008 Arndt von Staa LES/DI/PUC-Rio 3 / 27

4 Custo e qualidade do Teste É uma atividade cara, porém essencial 30 50% do custo de desenvolvimento Causas Falta de planejamento Tempo escasso Falta de metodologia Inserção de novos defeitos Especificação incompleta Seleção de dados Dados óbvios, randômicos, viciados Casos de teste rigorosamente selecionados 4 / 30 LES/DI/

5 Exercício sobre Introdução à Teste Se organizem em grupos (2 a 3 pessoas): de preferência o grupo que irá realizar os trabalhos na disciplina Escrevam em uma folha de papel o seguinte cabeçalho: EXERCÍCIO 1: INTRODUÇÃO À TESTE Data: (data de hoje) Integrantes: (nome dos integrantes do grupo) Atividade 1: Casos de teste para uma função 5 / 30 LES/DI/

6 Exemplo: criando casos de teste Um bom conjunto de casos de teste é aquele que possui alta probabilidade em revelar defeitos na função ou no módulo que a contém int verificatriangulo (int segmentoab, int segmentoac, int segmentobc); EXERCÍCIO 1: INTRODUÇÃO À TESTE Data: (data de hoje) Integrantes: (nome dos integrantes do grupo) Atividade 1: Casos de teste para uma função C1: (a, b, c) -> (d) C2: (x, y, z) -> (k)... 6 / 30 LES/DI/

7 Criando casos de teste com a especificação EXERCÍCIO 1: INTRODUÇÃO À TESTE Data: (data de hoje) Integrantes: (nome dos integrantes do grupo) Atividade 1: Casos de teste para uma função C1: (a, b, c) -> (d) C2: (x, y, z) -> (k)... Atividade 2: Casos de teste com especificação C1: (a, b, c) -> (d) C2: (x, y, z) -> (k) 7 / 30 LES/DI/

8 Criando casos de teste com a especificação A função recebe como entrada três valores inteiros. Cada valor corresponde ao segmento de um lado do triângulo. Assim, o primeiro valor corresponde ao segmento do lado AB, o segundo valor ao segmento do lado AC e o terceiro valor correspondem ao segmento do lado BC. Esses três segmentos correspondem aos três lados que formam o triângulo ABC. A função recebe os três valores como entrada e verifica que tipo de triângulo é formado com base nos três segmentos. Por fim, a função retorna a quantidade de lados que possuem o mesmo tamanho. Assim, se o triângulo for equilátero, ou seja, os três lados possuem o mesmo tamanho, então a função retorna 3. Se o triângulo for isósceles (dois lados com o mesmo tamanho), então a função retorna 2. Se o triângulo for escaleno (os três lados possuem tamanhos diferentes), então a função retorna 0. Caso os três valores não correspondam a um triângulo, a função retorna o código -1. int verificatriangulo (int segmentoab, int segmentoac, int segmentobc); 8 / 30 LES/DI/

9 Casos de teste Um dos problemas comuns ao testar software é determinar quando os módulos foram suficientemente testados Mesmo usando a especificação, é difícil produzir bons casos de teste que sejam capazes de revelar a existência de defeitos Por exemplo, para o problema do triângulo, é necessário apenas quatro casos de testes para se testar a função em termos dos três tipos de triângulo 1 caso válido para triângulo equilátero (retorna 3) 1 casos válidos para triângulo isósceles (retorna 2) 1 caso válido para triângulo escaleno (retorna 0) 1 caso válido para valores que não correspondem a um triângulo (retorno -1) 9 / 30 LES/DI/

10 Criando casos de teste com a especificação int verificatriangulo(int segab, int segac, int segbc){ if ((segab == segac) && (segac == segbc)){ return 3; //equilatero } if (((segab == segac) && (segac!= segbc)) ((segac == segbc) && (segab!= segac)) ((segab == segbc) && (segbc!= segab))){ return 2; //isosceles } if ( (segab!= segac) && (segac!= segbc)) { return 0; //escaleno } } return -1; Qual é a saída para o caso de teste (2, 1, 1)? 10 / 30 LES/DI/

11 Criando casos de teste com a especificação Qual é a saída para o caso de teste (2, 1, 1)? 2 -> triângulo isósceles Esses valores não correspondem a um triângulo. Para se ter um triângulo, é necessário que ele tenha em cada um dos seus lados, uma medida menor que a soma das medidas dos outros dois lados. AB < AC + BC AC < AB + BC BC < AB + AC Observação: Se AB for o maior lado, para existir um triângulo, basta que AB < AC + BC. 11 / 30 LES/DI/

12 Função verificatriangulo int verificatriangulo(int segab, int segac, int segbc){ if ( (segab < segac+ segbc) && (segac< segab + segbc) && (segbc< segab + segac)){ if ((segab == segac) && (segac == segbc)){ return 3; //equilatero } if (((segab == segac) && (segac!= segbc)) ((segac == segbc) && (segab!= segac)) ((segab == segbc) && (segbc!= segac))){ return 2; //isosceles } if ( (segab!= segac) && (segac!= segbc)) { return 0; //escaleno } } return -1; } E agora, o código está livre de defeitos??? 12 / 30 LES/DI/

13 Completude dos casos de teste Um bom conjunto de casos de teste seria aquele que cobrisse os seguintes casos: 1 caso válido para triângulo equilátero (retorna 3) 1 caso válido para triângulo escaleno (retorna 0) 3 casos válidos para triângulo isósceles (retorna 2) 3 casos para testar Lk > Li + Lj (retorna -1) 3 casos para testar Lk = Li + Lj (retorna -1) 3 casos para testar um dos lados igual a 0 (retorna -1) 3 casos para testar um dos lados menor do que 0 (retorna -1) Testes somente são capazes de mostrar a presença de faltas, mas não a ausência delas. 13 / 30 LES/DI/

14 O que é um módulo controlador do teste? deve ser facilmente removível; instrumentação: discutido em aulas futuras 14 / 30 LES/DI/

15 Como testar um módulo? Uso de um módulo controlador do teste desenvolvido que auxilia a execução de casos de teste para testar um módulo sob teste Três formas: Teste manual: controlador exibe um menu e comparação é feita pelo próprio testador à olho nu Teste de comparação automatizado: Casos de teste são implementados em C Casos de teste são redigidos em scripts em uma linguagem com uma sintaxe própria 15 / 30 LES/DI/

16 Exemplo de Módulo em C Discutindo Estrutura do arquivo ARVORE.h Estrutura do arquivo ARVORE.c Alessandro Garcia LES - DI/PUC-Rio 16 /26

17 Condições de retorno /*********************************************************************** *$TC Tipo de dados: ARV Condicoes de retorno ************************************************************************/ typedef enum { ARV_CondRetOK = 0, /* Executou correto */ ARV_CondRetNaoCriouRaiz = 1, /* Não criou nó raiz */ Evento normal Eventos excepcionais ARV_CondRetErroEstrutura = 2, /* Estrutura da árvore está errada */ ARV_CondRetNaoEhFolha = 3, /* Não é folha relativa à direção de inserção desejada */ ARV_CondRetArvoreNaoExiste = 4, /* Árvore não existe */ ARV_CondRetArvoreVazia = 5, /* Árvore está vazia */ ARV_CondRetNohEhRaiz = 6, /* Nó corrente é raiz */ ARV_CondRetNaoPossuiFilho = 7, /* Nó corrente não possui filho na direção desejada */ ARV_CondRetFaltouMemoria = 8 /* Faltou memória ao alocar dados */ Mar } 2009 ARV_tpCondRet ; Alessandro Garcia LES/DI/PUC-Rio 17 /32

18 Teste Manual Controlador exibe um menu e comparação é feita pelo próprio testador à olho nu 1 Inserir nó à esquerda 2 Inserir nó à direita 3 Ir para nó filho à esquerda 4 Ir para nó filho à direita 5 Obter valor do nó corrente 6 Exibir a árvore em formato parentetizado 99 Terminar Escolha a opção: 18 / 30 LES/DI/

19 Vantagens e desvantagens do teste manual Vantagens É relativamente simples de programar. É mais fácil verificar a corretude caso esta se baseie em valores aproximados evidentemente, isto requer que o testador saiba determinar quais as aproximações aceitáveis Desvantagens O usuário não sabe quando testou tudo que deveria ser testado teste incompleto pode deixar defeitos remanescentes O usuário imagina o resultado esperado O usuário realiza testes que repetem condições já testadas teste redundante adiciona custo sem contribuir para descobrir novos defeitos O usuário corrige imediatamente ao encontrar uma falha após eliminar o defeito que provocou a falha, o módulo precisa ser retestado correção imediata aumenta o número de retestes 19 / 30 LES/DI/

20 Como testar um módulo? Uso de um módulo controlador do teste desenvolvido que auxilia a execução de casos de teste para testar um módulo sob teste Três formas: Teste manual: controlador exibe um menu e comparação é feita pelo próprio testador à olho nu Teste de comparação automatizado: Casos de teste são implementados em C Casos de teste são redigidos em scripts em uma linguagem com uma sintaxe própria 20 / 30 LES/DI/

21 Como reduzir o custo do reteste? Automatizar a execução dos testes estabelecer a seqüência de comandos de teste em uma espécie de programa obter os dados para os testes de cada comando efetuar a operação correspondente ao comando comparar o resultado esperado com o obtido sem essa comparação jamais teremos um teste continuar com o próximo comando emitir um relatório da execução do teste (laudo) Ago 2008 Arndt von Staa LES/DI/PUC-Rio 21 / 27

22 Exemplo simplório... ContaCaso ++ ; if ( CriarArvore( )!= ARV_CondRetOK ) { printf( "\nerro ao criar árvore" ) ; ContaFalhas ++ ; } ContaCaso ++ ; if ( InserirEsquerda('a' )!= ARV_CondRetOK ) { printf( "\nerro ao inserir nó raiz da árvore" ) ; ContaFalhas ++ ; } ContaCaso ++ ; if ( IrPai( )!= ARV_CondRetEhRaiz ) { printf( "\nerro ao ir para pai de nó raiz" ) ; ContaFalhas ++ ; }... Ago 2008 Arndt von Staa LES/DI/PUC-Rio 22 / 27

23 Por que é simplório? O código é muito repetitivo viola a regra de evitar duplicações de código As mensagens impressas não explicitam o porquê da falha quais foram os valores que causaram a mensagem? Não identifica com precisão o objetivo de cada caso de teste o leitor do código precisa inferir o objetivo a partir da leitura O módulo controlador do teste pode tornar-se muito extenso dificulta verificar se o teste é um bom teste O código não produz um laudo do teste Ago 2008 Arndt von Staa LES/DI/PUC-Rio 23 / 27

24 Como reduzir o volume de repetição? Criar um arcabouço (framework) com as funções de comparação. Framework Serviço do arcabouço Pontos de extensão Aplicação Ago 2008 Arndt von Staa LES/DI/PUC-Rio 24 / 27

25 Exemplo de uma função de comparação TST_tpCondRet TST_CompararInt( long ValorEsperado, long ValorObtido, char * pmensagem ) { if ( ValorObtido!= ValorEsperado ) { ContaFalhas ++ ; fprintf( parqlog, "\nerro >>> %s", pmensagem ) ; fprintf( parqlog, "Deveria ser: %ld É: %ld", ValorEsperado, ValorObtido ) ; return TST_CondRetErro ; } /* if */ return TST_CondRetOK ; } /* Fim função: TSTG &Comparar inteiro */ Ago 2008 Arndt von Staa LES/DI/PUC-Rio 25 / 27

26 Como fica o código agora?... if ( TST_CompararInt( ARV_CondRetOK, CriarArvore( ), "Erro ao criar árvore" )!= TST_CondRetOK ) { return ; } if ( TST_CompararInt( ARV_CondRetOK, InserirEsquerda('a' ), "Erro ao inserir nó raiz da árvore" )!= TST_CondRetOK ) { return ; } if ( TST_CompararInt( ARV_CondRetEhRaiz, IrPai( ), "Erro ao ir para pai na raiz" )!= TST_CondRetOK ) { return ; }... Ago 2008 Arndt von Staa LES/DI/PUC-Rio 26 / 27

27 Melhorou? Sim, pode-se adicionar mais funcionalidades ao arcabouço outros comparadores funções de auxílio... Sim, ganhou-se uniformidade Não, o código continua extenso Não, pára na primeira falha encontrada Ago 2008 Arndt von Staa LES/DI/PUC-Rio 27 / 27

28 Nossa solução Para quem programa Java, C++, C# e outros, existem diversos arcabouços: JUnit, CppUnit, CSUnit,... A solução que adotamos é um interpretador inspirado no JUnit Ago 2008 Arndt von Staa LES/DI/PUC-Rio 28 / 27

29 O roteiro de teste pode ser interpretado?... == Criar árvore =criar OK =irdir ArvoreVazia == Inserir à direita =insdir CharA OK == Obter o valor inserido =obter CharA OK == Ir para no pai, não tem =irpai EhRaiz == Inserir à esquerda =insesq CharB OK =obter CharB OK == Ir para no pai, tem =irpai OK =obter CharA OK... Ago 2008 Arndt von Staa LES/DI/PUC-Rio 29 / 27

30 O roteiro de teste pode ser interpretado? Declaração dos valores simbólicos formato =declararparm <nome simbólico> <tipo> <valor> tipos conhecidos: int, char, double, string, nome exemplos == Declarar as condições de retorno =declararparm OK int 0 =declararparm NaoArvore int 4 =declararparm ArvoreVazia int 5 == Declarar os valores contidos nos nós =declararparm CharErro char '!' =declararparm CharA char 'a' Ago 2008 Arndt von Staa LES/DI/PUC-Rio 30 / 27

31 Exemplo de fragmento do interpretador /* Testar ARV Adicionar filho à direita */ else if ( strcmp( ComandoTeste, INS_DIR_CMD ) == 0 ) { NumLidos = LER_LerParametros( "ci", &ValorDado, &CondRetEsperada ) ; if ( NumLidos!= 2 ) { return TST_CondRetParm ; } /* if */ return TST_CompararInt( CondRetEsperada, ARV_InserirDireita( ValorDado ), "Retorno errado inserir àa direita." ); } /* fim: Testar ARV Adicionar filho à direita */ Ago 2008 Arndt von Staa LES/DI/PUC-Rio 31 / 27

32 Arquitetura simplificada da nossa abordagem Diretivas de teste Módulo de leitura Programa principal Módulo de controle genérico Função de controle específica Módulo em teste Teste de item de interface Log do teste Ago 2008 Arndt von Staa LES/DI/PUC-Rio 32 / 27

33 Arquitetura simplificada da nossa abordagem *.script Diretivas de teste Módulo de leitura LERPARM.h interpreta os comandos genéricos e específicos Programa principal GENERICO.h Módulo de controle genérico Função TST_ESPC.h de controle específica Módulo em teste PRINCIP.h coordena a realização dos testes; disponibiliza funções genéricas de comparação Teste de item de interface Log do teste 33 / 30 LES/DI/

34 Arquitetura completa Diretivas de teste Programa principal Arcabouço de apoio ao teste automatizado Módulo de leitura das diretivas Módulo de controle genérico Log do teste Interpretador acesso Interpretador contador Módulo contador Módulo acesso Função de controle específica Módulo em teste Teste de item de interface Ago 2008 Arndt von Staa LES/DI/PUC-Rio 34 / 27

35 Como usar? Forma big bang 1. Especificar a interface do módulo arquivo.h 2. Especificar a linguagem de diretivas de teste, sintaxe =<nome da função> <lista parâmetros> <condição retorno> 3. Redigir a massa de teste nesta linguagem serve como uma especificação executável! 4. Redigir o módulo de teste específico 5. Redigir o módulo a ser testado 6. Rever cuidadosamente os cinco artefatos 7. Compilar usar a biblioteca: ArcaboucoTeste.lib 8. Executar o teste 9. Corrigir até zero falhas observadas pelo teste Ago 2008 Arndt von Staa LES/DI/PUC-Rio 35 / 27

36 Como usar? Forma iterativa preparação inicial 1. Especificar parcialmente a interface do módulo a desenvolver 2. Especificar a linguagem de diretivas de teste 3. Redigir parte da massa de teste nesta linguagem 4. Redigir a versão inicial do módulo de teste específico todos os comandos retornam TST_CondRetNaoImplementado 5. Redigir o enchimento (stub) do módulo a ser testado todas as funções fazem nada, se necessário retornam um valor neutro 6. Rever cuidadosamente os cinco artefatos 7. Compilar usar a biblioteca: ArcaboucoTeste.lib 8. Executar o teste 9. Corrigir até que sejam gerados somente erros de comando não implementado Ago 2008 Arndt von Staa LES/DI/PUC-Rio 36 / 27

37 Como usar? Forma iterativa iteração 1. Escolher as funções a serem implementadas 2. Rever ou completar a interface do módulo 3. Rever a linguagem de diretivas de teste 4. Redigir a massa de teste nesta linguagem 5. Redigir a parte do módulo de teste específico visando as funções 6. Redigir as funções do módulo a ser testado 7. Rever cuidadosamente os cinco artefatos 8. Compilar usar a biblioteca: ArcaboucoTeste.lib 9. Executar o teste 10. Corrigir até que esteja tudo correto sejam gerados somente erros de comando não implementado Ago 2008 Arndt von Staa LES/DI/PUC-Rio 37 / 27

38 Instalando arcabouço Criar uma pasta (ex: arcaboucolegal) Descompactar o Arquivo de instalação da versão 2.02 na pasta criada Copiar para a raiz da pasta (arcaboucolegal) o bat vsvars32 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32 Executar o vsvars32 Executar bats, scripts, testes,... Ago 2008 Arndt von Staa LES/DI/PUC-Rio 38 / 27

39 Visual Studio Visual Studio 2008 Editor - Demonstração Criar Projeto > Aplicação de Console Win32 Importar Arquivos ArcabouçoTeste.lib CESPDIN.H CONTA.H GENERICO.H LERPARM.H TST_ESPC.H MODULO -.H,.C e TST.C Build da Aplicação \debug\.exe GMake Compilação via prompt (sugestão) Ago 2008 Arndt von Staa LES/DI/PUC-Rio 39 / 29

40 Exemplo prático Exemplo \arcabouc\simples Adicionando nova funçõa adicionar prototipo de função no ARVORE.h adicionar definição da função no ARVORE.c no TestArv.C declarar constante de teste a ser chamada no script adicionar tratamento de comando no bloco no script adicionar constantes adicionar comando adicionar parâmetros e retorno esperado Ago 2008 Arndt von Staa LES/DI/PUC-Rio 40 / 27

41 Quais seriam as vantagens? Teste automatizado exige rigor ao escrever as especificações das interfaces o script de teste embora alguns não acreditem, rigor é sempre vantagem! Facilita o desenvolvimento incremental do módulo a cada incremento pode-se retestar integralmente o que já foi feito (teste de regressão) o que não foi alterado ou acrescido deveria continuar operando tal como esperado o que foi alterado e acrescido tem o teste ajustado A função de teste específico serve como exemplo de uso do módulo Ago 2008 Arndt von Staa LES/DI/PUC-Rio 41 / 27

42 Quais seriam as vantagens? O script de teste serve como especificação executável do módulo apesar de ser uma especificação incompleta e baseada em exemplos, freqüentemente é mais precisa do que especificações textuais Os problemas encontrados são repetíveis, facilitando a depuração reduz significativamente o esforço de teste quando se leva em conta a necessidade de reteste após corrigir ou evoluir o módulo Caso a realização do teste gere um arquivo de log documenta os laudos dos testes realizados assegura a existência da história da evolução durante o teste. passa a ser um atestado da qualidade do módulo Ago 2008 Arndt von Staa LES/DI/PUC-Rio 42 / 27

43 Quais seriam as vantagens? O esforço de redação do módulo de teste específico é pouco maior do que o esforço de redação de um controlador de teste manual. Através da linguagem de diretivas de teste pode-se realizar testes tão complexos e detalhados quanto se queira. casos de teste selecionados segundo critérios de seleção bem definidos redigir as diretivas de teste requer monos esforço do que redigir um controlador de teste contendo o roteiro Permite documentar os casos de teste os títulos ( == ) informam a intenção do caso de teste necessário para que outros possam mantê-los Ago 2008 Arndt von Staa LES/DI/PUC-Rio 43 / 27

44 Quais seriam as vantagens? Reduz o estresse do desenvolvedor é possível particionar o desenvolvimento em etapas desenvolvimento incremental cada qual culminando com um módulo parcial porém corretamente implementado Ago 2008 Arndt von Staa LES/DI/PUC-Rio 44 / 27

45 E quais seriam as desvantagens? O arquivo de diretivas é na realidade um programa pode conter defeitos se não tomar cuidado, a linguagem e/ou o script de teste tornam-se extensos e complicados Ao encontrar uma falha é necessário determinar se é defeito no módulo em teste defeito no módulo de teste específico defeito no script de teste defeito na especificação do módulo Ago 2008 Arndt von Staa LES/DI/PUC-Rio 45 / 27

46 E quais seriam as desvantagens? Custo inicial maior ganha-se ao retestar, ou seja, sempre J Ao alterar um módulo, obriga a evoluir è coevolução obviamente o módulo sob teste o módulo de teste específico o script de teste, isso pode tornar-se um problema se os casos de teste forem mal documentados se o script de teste for mal organizado se o script de teste não utilizar parâmetros simbólicos Nem sempre é possível utilizar teste automatizado exibição (rendering) de figuras, gráficos interfaces com os sistemas GUI (ex. windows) leiaute de janelas... Ago 2008 Arndt von Staa LES/DI/PUC-Rio 46 / 27

47 O Trabalho: Testando a Lista (diretório Lista) TESTELISTA.script Diretivas de teste Módulo de leitura LERPARM.h Programa principal GENERICO.h Módulo de controle genérico Função de controle específica Módulo em teste PRINCIP.h TST_ESPC.h TESTELIS.c Teste de item de interface LISTA.h LISTA.c Log do teste fixo 47 / 30 LES/DI/

48 O Trabalho: Testando a Lista (diretório Lista) TESTELISTA.script Diretivas de teste Módulo de leitura LERPARM.h Modificações não esqueçam de satisfazer os princípios de modularidade Programa principal GENERICO.h Módulo de controle genérico Função de controle específica Módulo em teste PRINCIP.h TST_ESPC.h TESTELIS.c Teste de item de interface LISTA.h LISTA.c Log do teste 48 / 30 LES/DI/

49 PARA CASA: exemplos práticos de uso do arcabouço Teste manual: Exemplo \arcabouc\manual: mostrado como construir um módulo e o respectivo controlador de teste manual Teste automatizado: Exemplo \arcabouc\simples: mostrado como construir um módulo e o respectivo módulo de teste específico utilizando a biblioteca do arcabouço de teste Comparar o módulo de teste específico com o controlador de teste manual os exemplos tratam de um módulo editor de árvores binárias Teste automatizado da Lista (Trabalho) Exemplo \arcabouc\simples 49 / 30 LES/DI/

50 Dicas para o Trabalho Já instalou, compilou e executou o arcabouço de testes? Seção 2 da monografia dá todos os passos de instalação A biblioteca do arcabouço precisa ser compatível com a versão da plataforma de desenvolvimento utilizada portanto, antes de utilizá-la, ela precisa ser recompilada Recomenda-se fortemente... = leia-se DEVE LER É parte da tarefa, mesmo antes da aula de teste automatizado, conforme descrito no enunciado: ler a monografia AutoTest... ler o arquivo...readme para verificar como instalar ler a documentação do GMake útil para gerar scripts de compilação e ligação arquivos.comp devem ser re-executados na sua máquina começar a utilizar os exemplos e arcabouço de testes / 30 LES/DI/

51 Dicas para o Trabalho Executar o exemplo TesteLista em linha de comando (CMD) 1. Regere a biblioteca do arcabouço: ArcaboucoTeste.lib Vide Leia.me 2. Recompilar os arquivos do exemplo: lista\compilatudo.bat 3. Executando lista\testelista.exe, detalhes são dados Não clique duas vezes sobre tal programa, não é uma aplicação windows e deve ser executa no console! 4. Executando lista\testelista.exe /stestelista.script Quem está sem grupo? 51 / 30 LES/DI/

52 Dicas para o Trabalho Não esqueça de rever cuidadosamente: critérios de avaliação procedimentos para entrega do trabalho Certifique-se que seu trabalho atende os seguintes pontos: estruturação: contém tanto o fonte dos módulos de implementação quanto módulos definição (interface) siga princípios de modularidade: interfaces simples e documentadas, alta coesão, baixo acoplamento,... obediência a padrões de programação execução do código não apresenta falhas testes rodam e, idealmente, cobrem condições anormais de uso Arquivos LEIAME.TXT e RELATOR.TXT 52 / 30 LES/DI/

53 Trabalho - Dúvidas É para fazer o teste de novas funções pelo script? SIM Será necessário modificar o arquivo TESTLIS.c para que eu possa realizar o teste da minha implementação do módulo Lista? SIM, pois certamente haverão modificações na interface do Módulo Lista Logo, deve-se modificar o módulo de teste 53 / 30 LES/DI/

54 Qual o nível de rigor dos testes? Árvore inexistente Árvore vazia 0 iterações Modelo de árvore binária ancorada praiz pcorrente Estas configurações devem ser usadas para testar a inserção, exclusão, manipulação... 1 iteração pesq Valor pdir 2 iterações Jun 2009 LES/DI/PUC-Rio 54 / 35

55 Não esquecer... Preencher tabela de atividades ao longo do processo. NÃO DEIXE PARA ÚLTIMA HORA, POIS VOCÊ NÃO SE LEMBRARÁ DO QUE FEZ TAL DIA, TAL HORA. Com relatórios similares a esse você aprende a planejar o seu trabalho. O relatório é INDIVIDUAL 55 / 30 LES/DI/

56 Fim Ago 2008 Arndt von Staa LES/DI/PUC-Rio 56 / 27

Aula 07 Teste Automatizado Parte II

Aula 07 Teste Automatizado Parte II Aula 07 Teste Automatizado Parte II Prof. Alessandro Garcia Eduardo Fernandes (assistente) LES/DI/PUC-Rio Março 2018 Especificação Objetivo dessa aula Apresentar como sistematicamente instalar e utilizar

Leia mais

Aula 04 Introdução a Teste Automatizado. Alessandro Garcia LES/DI/PUC-Rio Setembro 2013

Aula 04 Introdução a Teste Automatizado. Alessandro Garcia LES/DI/PUC-Rio Setembro 2013 Aula 04 Introdução a Teste Automatizado Alessandro Garcia LES/DI/PUC-Rio Setembro 2013 Especificação Objetivo dessa aula Apresentar os uma técnica para a criação testes automatizados e mostrar como desenvolver

Leia mais

Aula 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 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 mais

Aula 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 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 mais

Aula 08 Ferramentas de desenvolvimento. Alessandro Garcia Alexander Chávez Eduardo Fernandes Leonardo Sousa LES/DI/PUC-Rio Setembro 2017

Aula 08 Ferramentas de desenvolvimento. Alessandro Garcia Alexander Chávez Eduardo Fernandes Leonardo Sousa LES/DI/PUC-Rio Setembro 2017 Aula 08 Ferramentas de desenvolvimento Alessandro Garcia Alexander Chávez Eduardo Fernandes Leonardo Sousa LES/DI/PUC-Rio Setembro 2017 Especificação Objetivo dessa aula Apresentar algumas das ferramentas

Leia mais

Aula 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 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 mais

Aula 9 Especificação de Requisitos Exercício

Aula 9 Especificação de Requisitos Exercício Aula 9 Especificação de Requisitos Exercício Alessandro Garcia LES/DI/PUC-Rio Abril 2017 Exercício Faça a especificação de requisitos do programa do jogo FreeCell com base no que foi apresentado na aula

Leia mais

Aula 02 Conceitos e Princípios de Modularidade 1

Aula 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 mais

Aula 9 Especificação de Requisitos

Aula 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 mais

Aula 05 Instalação e Uso do Arcabouço. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016

Aula 05 Instalação e Uso do Arcabouço. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016 Aula 05 Instalação e Uso do Arcabouço Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016 Sumário Teste automatizado Instalação do arcabouço. Estrutura de diretórios do arcabouço. Como utilizar

Leia mais

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014 Aula 06 Introdução à Teste de Módulos II e Exercícios Alessandro Garcia LES/DI/PUC-Rio Março 2014 Princípios Discutidos até aqui Cada módulo deveria implementar uma única abstração similarmente: cada função

Leia mais

Aula 8 Especificação de Requisitos

Aula 8 Especificação de Requisitos Aula 8 Especificação de Requisitos Alessandro Garcia Abril 2017 Recados Enunciado do trabalho prático (T2) já está disponível no sítio da disciplina: http://www.inf.puc-rio.br/~inf1301/ Enviem mensagem

Leia mais

Aula 02 Conceitos e Princípios de Modularidade 1

Aula 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 mais

Aula 17 Revisão. Alessandro Garcia LES/DI/PUC-Rio Abril 2010

Aula 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 mais

Aula 10 Especificação de Requisitos

Aula 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 mais

Aula 10 Arquitetura de Software e Exercício. Alessandro Garcia LES/DI/PUC-Rio Abril de 2017

Aula 10 Arquitetura de Software e Exercício. Alessandro Garcia LES/DI/PUC-Rio Abril de 2017 Aula 10 Arquitetura de Software e Exercício Alessandro Garcia Abril de 2017 Não Esquecer... Preencher tabela de atividades ao longo do processo. NÃO DEIXE PARA ÚLTIMA HORA, POIS VOCÊ NÃO SE LEMBRARÁ DO

Leia mais

Apêndice 1. Recomendações para testes de módulos

Apê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 mais

especificaçã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

especificaçã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 mais

Programação Modular: Prova, Trabalho e Considerações Finais

Programaçã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 mais

3 Ferramenta Proposta 3.1. Objetivos

3 Ferramenta Proposta 3.1. Objetivos 3 Ferramenta Proposta 3.1. Objetivos O objetivo deste trabalho é a criação de um framework de testes que incorpore algumas das novas idéias encontradas na literatura. Sua principal característica deve

Leia mais

Arcabouço de Apoio ao Teste Automatizado para Programas Redigidos em C Leia.me

Arcabouço de Apoio ao Teste Automatizado para Programas Redigidos em C Leia.me Arcabouço de Apoio ao Teste Automatizado para Programas Redigidos em C Leia.me Arndt von Staa Março 2006 Apresentação Este texto descreve, resumidamente, o conteúdo do arquivo ArcaboucoTeste-2-00.zip que

Leia mais

Introdução ao Python. Programa Computacional

Introdução ao Python. Programa Computacional Programa Computacional É um algoritmo escrito em uma linguagem computacional (C, Fortran, Pascal, MATLAB, Python, etc.). É a tradução do algoritmo para uma linguagem que será interpretada pelo computador.

Leia mais

Engenharia de Software

Engenharia 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 mais

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias 1 IDES E PROGRAMAÇÃO Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias {claudio,macdias}@icmc.usp.br 2 Agenda Conceitos Instalação e Configuração Compilação e Execução de Código IDEs Exemplo

Leia mais

Gerando um programa executável a partir de um módulo Python

Gerando um programa executável a partir de um módulo Python Gerando um programa executável a partir de um módulo Python Wendel Melo (Departamento de Ciência da Computação UFRJ), Notas de aula de Computação II 15/03/2012 A linguagem de programação Python segue o

Leia mais

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b. Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

Leia mais

Teste de Software. Roberta Coelho

Teste de Software. Roberta Coelho Teste de Software Roberta Coelho Agenda Desafios do Teste de Software Atividades Realizadas em 2014 Atividades Planejadas Agenda Desafios do Teste de Software Atividades Realizadas em 2014 Atividades Planejadas

Leia mais

Programação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP

Programação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP Programação I Aula 17 Correção de programas DCC/FCUP DCC/FCUP 2019 1/ 30 Nesta aula 1 Classes de erros 2 Execução passo-a-passo 3 Testes na documentação 4 Asserções 5 Outros erros comuns DCC/FCUP 2019

Leia mais

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans. 1 - Criando meu primeiro programa em Java Para criar um programa Java podemos utilizar um editor de textos (Bloco de Notas/Windows, Notepad ++ ou GEdit/Linux) e o console do sistema operacional, ou um

Leia mais

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - O teste nas fases de vida e de desenvolvimento de um software. 1.2 - O teste na engenharia de sistemas e na engenharia de

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Aula 12 Modelos Arquitetural e Físico Outros Princípios de Modularidade

Aula 12 Modelos Arquitetural e Físico Outros Princípios de Modularidade Aula 12 Modelos Arquitetural e Físico Outros Princípios de Modularidade Alessandro Garcia LES/DI/PUC-Rio Outubro de 2016 Avisos e Lembretes Exercícios em sala T1 entrega das correções no fim da aula testes

Leia mais

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software Engenharia de Software Aula 03 Perguntas da Aula 2 Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 12 Março 2012 Inconsistente: perguntei laranjas, respondeu

Leia mais

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

Teste 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 mais

Introdução a Teste de Software

Introduçã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 mais

Instalação JDK 10/03/2017

Instalação JDK 10/03/2017 1 Instalação JDK 10/03/2017 Máquina Virtual Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação, responsável por traduzir o que sua aplicação

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Ciência da Computação Prof. Elias Ferreira Elaborador por: Ana Claudia Bastos Loureiro Monção JUNIT Teste de Software Processo de Software Um processo de software pode ser visto como o conjunto de atividades,

Leia mais

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

Engenharia 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 mais

Segundo Trabalho Prático

Segundo Trabalho Prático Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

Leia mais

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG Instalação JDK Joyce França Professora de Ciência da Computação - IFNMG Máquina Virtual Java utiliza-se do conceito de máquina virtual, onde existe uma camada extra entre o sistema operacional e a aplicação,

Leia mais

Laboratório 01 NetBeans

Laboratório 01 NetBeans Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof. Renato Pimentel Atividade individual. Laboratório 01 NetBeans 1 Introdução Os

Leia mais

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa Desenvolvimento de programas 1 Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração Análise do problema 2 Conhecer exatamente o que o problema

Leia mais

Aula 14. Modelagem Física (e Exercício)

Aula 14. Modelagem Física (e Exercício) Aula 14 Modelagem Física (e Exercício) Alessandro Garcia LES/DI/PUC-Rio Maio 2018 Avisos e Lembretes Prova P1: quarta, 09/05, início as 13:00 matéria dada até esta aula com consulta de material impresso

Leia mais

Estruturas de Repetição

Estruturas 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 mais

Terceiro Trabalho Prático. Este trabalho tem como objetivo ordenar um arquivo de dados e implementar as operações cosequenciais de merging e matching.

Terceiro Trabalho Prático. Este trabalho tem como objetivo ordenar um arquivo de dados e implementar as operações cosequenciais de merging e matching. Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

Leia mais

Princípios da Engenharia de Software aula 03

Princípios da Engenharia de Software aula 03 Princípios da Engenharia de Software aula 03 Prof.: José Honorato Ferreira Nunes Material cedido por: Prof.: Franklin M. Correia Na aula anterior... Modelos de processos de software: Evolucionário Tipos

Leia mais

Algoritmos e Estruturas de Dados I. Funções. Pedro Olmo Stancioli Vaz de Melo

Algoritmos e Estruturas de Dados I. Funções. Pedro Olmo Stancioli Vaz de Melo Algoritmos e Estruturas de Dados I Funções Pedro Olmo Stancioli Vaz de Melo Exercício Brutus e Olívia foram ao médico, que disse a eles que ambos estão fora do peso ideal. Ambos discordaram veementemente

Leia mais

Desenvolvimento de programas

Desenvolvimento de programas 1 Desenvolvimento de programas Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração 2 Análise do problema Conhecer exatamente o que o problema

Leia mais

Garantia de Qualidade

Garantia 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 mais

Quarto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice simples ou linear. Descrição de páginas de disco

Quarto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice simples ou linear. Descrição de páginas de disco Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

Leia mais

Disciplina de Lógica e Linguagem de Programação Desenvolvido pelo professor Danilo Giacobo Ferramenta Code::Blocks

Disciplina de Lógica e Linguagem de Programação Desenvolvido pelo professor Danilo Giacobo Ferramenta Code::Blocks Disciplina de Lógica e Linguagem de Programação Desenvolvido pelo professor Danilo Giacobo Ferramenta Code::Blocks Manual de utilização LISTA DE FIGURAS Figura 1 - Tela Inicial do software Code::Blocks...

Leia mais

Aula 17 Decomposição sucessiva

Aula 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 mais

Aula 3 Primeiros programas

Aula 3 Primeiros programas Aula 3 Primeiros programas FACOM-UFMS 2012 OBJETIVOS DA AULA Introdução ao CodeBlocks; Criação dos primeiros programas; Esta aula foi baseada nos capítulos 3 e 4 da apostila de Programação de Computadores

Leia mais

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo Teste de Software Estratégias de Teste Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Estratégias de Teste Tipos de Estratégias de Teste 2 Estratégias de teste Define as fases em que

Leia mais

Verificação e Validação (V & V)

Verificação e Validação (V & V) Verificação e Validação (V & V) Objetivo: assegurar que o software que o software cumpra as suas especificações e atenda às necessidades dos usuários e clientes. Verificação: Estamos construindo certo

Leia mais

Capítulo 6: Arquivos

Capítulo 6: Arquivos Capítulo 6: Arquivos Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Funções de entrada e saída em arquivos Nos capítulos anteriores, desenvolvemos programas que capturam seus dados de

Leia mais

Análise do problema. Desenvolvimento de programas. Desenvolvimento do algoritmo. Análise do problema

Análise do problema. Desenvolvimento de programas. Desenvolvimento do algoritmo. Análise do problema Desenvolvimento de programas 1 Análise do problema 2 Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração Conhecer exatamente o que o problema

Leia mais

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 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 mais

Organização de programas em Python. Vanessa Braganholo

Organização de programas em Python. Vanessa Braganholo Organização de programas em Python Vanessa Braganholo vanessa@ic.uff.br Vamos programar em Python! Mas... } Como um programa é organizado? } Quais são os tipos de dados disponíveis? } Como variáveis podem

Leia mais

Sobre o Visual C++ 2010

Sobre o Visual C++ 2010 O Visual Studio é um pacote de programas da Microsoft para desenvolvimento de software, suportando diversas linguagens como C#, C++, C, Java, Visual Basic, etc. Nesta série de tutoriais vou focar apenas

Leia mais

CMD. Prompt de comando do Win 10. Professor Jorge Maestre Carvalho

CMD. Prompt de comando do Win 10. Professor Jorge Maestre Carvalho CMD Prompt de comando do Win 10 Professor Jorge Maestre Carvalho Tela Iniciando A partir do Windows ME o DOS foi substituído por um emulador do DOS. Para entrar no programa, vá em Iniciar -> Executar.

Leia mais

Segundo trabalho prático de implementação Sistema de reserva de assentos

Segundo trabalho prático de implementação Sistema de reserva de assentos Segundo trabalho prático de implementação Sistema de reserva de assentos 1. Descrição do problema Computação Concorrente (MAB-117) 2016/2 Prof. Silvana Rossetto 1 DCC/IM/UFRJ 17 de novembro de 2016 Um

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Desenvolvimento 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 mais

Processos de Software

Processos de Software DCC / ICEx / UFMG Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Processos Procedimentos e métodos definindo relação entre tarefas PROCESSO Pessoas com habilidades, treinadas

Leia mais

LINGUAGEM 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 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 mais

Programação Modular: Exercício T4 e Considerações Finais

Programaçã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 mais

Segunda Parte do Trabalho Prático (Parte II) Valor: 70%

Segunda Parte do Trabalho Prático (Parte II) Valor: 70% Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri PAE

Leia mais

Programação: Vetores

Programaçã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 mais

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/dsl Por que DSLs? Melhorar a produtividade dos programadores input =~ /\d{3}-\d{3}-\d{4}/ Facilitar a escrita e

Leia mais

Segundo Trabalho Prático

Segundo Trabalho Prático Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos docente Profa. Dra. Cristina Dutra de Aguiar Ciferri

Leia mais

Segunda Parte do Trabalho Prático (Parte II) Valor: 60% Descrição do índice

Segunda Parte do Trabalho Prático (Parte II) Valor: 60% Descrição do índice Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri PAE

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação Linguagem de Programação II Programação Orientada a Objetos Ambientes de Programação Prof. Alessandro Borges 2 Tópicos Prompt de comando JDK IDE NetBeans Eclipse Jbuilder Visual Café Visual J++ NetBeans

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Introdução ao IDE Netbeans (Programação Java)

Introdução ao IDE Netbeans (Programação Java) Universidade Federal do ABC Disciplina: Processamento da Informação (BC-05045) Assunto: Introdução ao IDE Netbeans Introdução ao IDE Netbeans (Programação Java) Conteúdo 1. Introdução... 1 1.1. Programas

Leia mais

Teste Unitários com NUnit. Anderson Martiniano da Rocha

Teste Unitários com NUnit. Anderson Martiniano da Rocha Teste Unitários com NUnit Anderson Martiniano da Rocha martiniano@dcc.ufba.br Sumário Conceito de teste unitário Vantagens da utilização de testes unitários NUnit (Características, Atributos, Ferramentas)

Leia mais

Instalação do Oracle VM Virtual Box

Instalação do Oracle VM Virtual Box 1 de 14 09/08/2012 12:56 Instalação do Oracle VM Virtual Box Após fazer download do Oracle VM VirtualBox o próximo passo é a instalação. Seguindo este tutorial passo-a-passo não haverá qualquer dificuldade

Leia mais

Algoritmos e Programação

Algoritmos 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 mais

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Engenharia de Software Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Teste de Software Introdução Estratégias de teste Testes de módulo Testes de integração Teste de aceitação

Leia mais

Laços de repetição for, while, do-while

Laç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 mais

Ferramenta 1 -NetBeans 8.0

Ferramenta 1 -NetBeans 8.0 Nome do laboratório: Laboratório de Programação Ferramenta 1 -NetBeans 8.0 Elaborado por: Osmar de Oliveira Braz Junior Descrição NetBeans é um ambiente de desenvolvimento integrado (IDE Integrated Development

Leia mais

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

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação 1 Algoritmo Prof. Anderson Almeida Ferreira Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação Desenvolvimento de programas 2 Análise do problema Desenvolvimento

Leia mais

Working 03 : Conceitos Básicos I

Working 03 : Conceitos Básicos I Working 03 : Conceitos Básicos I Objetivos: Dominar os conceitos básicos da linguagem de programação C; Aprender a utilizar o compilador, identificando os erros de sintaxe do código fonte; Prazo de Envio:

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

Linguagem C: diretivas, compilação separada. Prof. Críston Algoritmos e Programação

Linguagem C: diretivas, compilação separada. Prof. Críston Algoritmos e Programação Linguagem C: diretivas, compilação separada Prof. Críston Algoritmos e Programação Diretivas do pré processador Permite que o programador modifique a compilação O pré processador é um programa que examina

Leia mais

Testes Automatizados. Cursos de Verão 2007 IME/USP Dairton Bassi & Paulo Cheque

Testes Automatizados. Cursos de Verão 2007 IME/USP   Dairton Bassi & Paulo Cheque Testes Automatizados Cursos de Verão 2007 IME/USP www.agilcoop.org.br Dairton Bassi & Paulo Cheque Roteiro 1) Motivação 2) Introdução a Testes 3) Testes de Unidade 4) Testes de Aceitação 5) Testes de Integração

Leia mais

Prática 10 - Funções

Prática 10 - Funções Programação de Computadores I UFOP DECOM June 9, 2016 Prática 10 - Funções Abstract Nesta aula prática você vai aprender a definir e usar funções em um programa. Contents 1 Funções 1 1.1 Definição e chamada

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Victor Hugo Andrade Soares monitor João Vitor dos Santos Tristão Primeiro Trabalho Prático

Victor Hugo Andrade Soares monitor João Vitor dos Santos Tristão Primeiro Trabalho Prático Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

Leia mais

INF1301 Programação Modular Período: Profs. Alessandro Garcia

INF1301 Programação Modular Período: Profs. Alessandro Garcia INF1301 Programação Modular Período: 2017-2 Profs. Alessandro Garcia 4o. Trabalho Data de divulgação: Data de entrega: 3 de novembro (sexta-feira) até 7 de dezembro (quinta-feira) 1. Descrição do quarto

Leia mais

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Passo-a-passo para desenvolver um Programa usando a Linguagem Python Cursos: Engenharia de Produção / Tecnólogo em Gestão da Qualidade Disciplina: Informática Professora: Flávia Pereira de Carvalho Passo-a-passo para desenvolver um Programa usando a Linguagem Python 1)

Leia mais

Programação I A Linguagem C. Prof. Carlos Alberto

Programação I A Linguagem C. Prof. Carlos Alberto Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada

Leia mais

Engenharia de Software

Engenharia 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 mais

1 Introdução. 2 Especificação

1 Introdução. 2 Especificação Bacharelado em Ciência da Computação DINF / UFPR CI067 - Oficina de Computação 2. semestre 2012 Prof. Luiz Eduardo S. de Oliveira Prof. Diego Roberto Antunes 29/11/2012 Releases - Histórico: r0 29/11/2012

Leia mais

16. Compilação no Linux

16. Compilação no Linux 16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código

Leia mais

15/03/2018. Professor Ariel da Silva Dias Paradigma Imperativo

15/03/2018. Professor Ariel da Silva Dias Paradigma Imperativo Professor Ariel da Silva Dias Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; Caracterizada por três conceitos Variáveis; Atribuições; Sequência;

Leia mais