Técnicas de Teste de Software
|
|
- Baltazar Soares Barroso
- 8 Há anos
- Visualizações:
Transcrição
1 Técnicas de Teste de Software Fabrício Sousa
2 Projeto de Caso de Teste Conjunto de técnicas para criação de casos de testes Série de casos de testes que tem grande probabilidade de encontrar erros Técnicas de Teste de software Fornecem diretrizes sistemáticas Exercitam a lógica interna e interfaces Exercitam os domínios de entrada e saída 2
3 Fundamentos do Teste Testabilidade É simplesmente quão fácil um programa pode ser testado Características Operabilidade Observabilidade Contrabilidade Decomponibilidade Simplicidade Estabilidade 3
4 Testabilidade: Características Operabilidade Quanto melhor funciona, mais eficientemente pode ser testado Observalidade O que você ver é o que você testa Contrabilidade Quanto melhor você pode controlar o software, mais o teste pode ser automatizado e otimizado 4
5 Testabilidade: Características Decomponibilidade Controlando o escopo do teste, podemos isolar problemas mais rapidamente e realizar retestagem mais racionalmente Simplicidade Quanto menos houver a testar, mais rapidamente podemos testá-lo Escabilidade Quanto menos modificações, menos interrupções no teste 5
6 Testabilidade: Características Compreensibilidade Quanto menos informações temos, mais racionalmente vamos testar 6
7 Um bom teste......tem alta probabilidade de encontrar um erro....não é redundante...não deve ser muito simples nem muito complexo 7
8 Caso de teste Especificação de uma entrada para o programa e a correspondente saída esperada Entrada: conjunto de dados necessários para uma execução do programa Saída esperada: resultado de uma execução do programa (um oráculo é esperado) Um bom caso de teste tem alta probabilidade de revelar um erro ainda não descoberto 8
9 Projeto de Casos de Teste Projeto de teste pode ser tão difícil quanto o projeto do próprio produto a ser testado Poucos programadores/analistas gostam de teste; menos ainda de projeto de casos de teste 9
10 Técnicas de Projeto de Casos de Teste Maneira sistemática e planejada para conduzir os testes ( Critérios de Teste ) Conjunto de Casos de Teste T características desejáveis: i ) deve ser finito ii) o custo de aplicação deve ser razoável 10
11 Teste Caixa-Preta (Funcional) Testes feitos na interface do software Examina algum aspecto fundamental do software, pouco se preocupando com a estrutura lógica interna 11
12 Teste de Caixa-branca (Estrutural) Exame rigoroso do detalhe procedimental Casos de testes Abrangem todas as características Definir todos os caminhos lógicos Exercitar a lógica do programa de forma exaustiva Testes exaustivos são impossíveis para grandes sistemas 12
13 Teste de Caminho Básico Técnica de teste Caixa Branca Conjunto básico de caminhos de execução Garantia de execução de cada comando pelo menos uma vez 13
14 Teste de Caminho Básico: Grafo de Fluxo Grafo de fluxo ou grafo de programa Controle lógico Nó (círculo) Representa um ou mais comandos procedimentais Arestas (ligações) Fluxo de controle Deve terminar em um nó Região Áreas limitadas por arestas e nós 14
15 Teste de Caminho Básico: Grafo de Fluxo 15
16 Exemplo de Grafo de Controle 16
17 Teste Estrutural 17
18 Exercício 1: Construir fluxo de grafo 18
19 Resposta Exercício 19
20 Caminhos independentes de Programa É qualquer caminho ao longo do programa que introduz pelo menos um novo conjunto de comandos de processamento ou uma nova condição Exemplos:
21 Predicado Cada nó que contém uma condição Caracterizado por duas ou mais arestas saindo dele Exemplo: Quantos predicados tem o grafo abaixo? Um 21
22 Conjunto Base Garantia de que todos os caminhos tenham sido executados pelo menos uma vez Cada condição tenha sido executada no seu lado verdadeiro e no seu lado falso Complexidade ciclomática Métrica de software que fornece medida quantitativa da complexidade lógica de um programa Fornece limite superior para a quantidade de testes que garante que todos os caminhos sejam executados pelo menos uma vez 22
23 Complexidade ciclomática: cálculo 1. Número de regiões correspondente à complexidade ciclomática 2. complexidade ciclomática V(G) 1. V(G)= E N+2 1. E= nº de arestas (edges) 2. N= nº de nós (nodes) 3. V(G)=P+1 1. P= nº de predicados (predicate) 23
24 Região Áreas limitadas por arestas e nós. Sempre consideramos a região externa em relação ao conjunto universo
25 Exercícios 2: Conjunto base do exercício anterior 3: Quantas regiões? 4: Quantos predicados? 5: Complexidade ciclomática 6: Como podemos representar esse grafo no computador? 25
26 Matrizes de Grafos Matriz quadrada Tamanho Nº de nós do grafo Entrada da matriz Arestas (conexões) 26
27 Teste de Estrutura de Controle Amplia a cobertura Melhoram a qualidade do teste de caixa branca Tipos Teste de Condição Teste de Fluxo de dados Teste de ciclo 27
28 Teste de Condição Exercita as condições lógicas contidas em um módulo de programa Focaliza o teste de cada condição do programa para garantir que não contém erros Condição Simples E 1 <operador-relacional> E 2 E 1 e E 2 expressões aritméticas Operador relacional: <, <=, >, >=, =, Condição Composta OU ( ), E (&), Não ( ) 28
29 Teste de Condição Erros mais comuns: Operadores booleanos incorretos/faltanto/extra Variável booleana Parênteses booleanos Operador relacional Expressão aritmética 29
30 Teste de Ciclo (loops) Parte importante dos algoritmos Damos pouca atenção nos testes Técnica que focaliza exclusivamente a validade de construções de ciclo 30
31 Teste de Ciclo (loops) Ciclos simples Ciclos aninhados Ciclos concatenados Ciclos desestruturados 31
32 Ciclos simples Conjunto de teste que pode ser aplicado, sendo N, o nº máximo de execução do loop Pule o ciclo completamente Apenas uma passagem pelo ciclo Duas passagens pelo ciclo M passagens pelo ciclo em que M<N N-1, N, N+1, passagens pelo ciclo 32
33 Teste Caixa-preta (Funcional) Teste Comportamental Focaliza os requisitos funcionais Complementa o teste de caixa-branca Tenta encontrar erros da seguinte forma Funções omitidas ou incorretas Erros de interface Erros de estrutura de dados Erros de comportamento ou desempenho Erros de iniciação ou término 33
34 Teste Caixa-preta: Tipos Métodos baseados em Grafo Particionamento de Equivalência Análise de Valor-limite 34
35 Particionamento de Equivalência Divide o domínio de entrada de um programa em classes de dados Descobre classes de erros, reduzindo o total de casos de testes que precisam ser desenvolvidos 35
36 Particionamento de Equivalência As classes, que podem ser válidas ou inválidas, são definidas de acordo com as seguintes diretrizes: se a condição de entrada especifica um intervalo, são definidas uma classe válida e duas inválidas se a condição de entrada especifica um membro de um conjunto, são definidas uma classe válida e uma inválida se a condição de entrada for booleana, são definidas uma classe válida e uma inválida 36
37 37
38 Algoritmo para exemplificação De acordo com sua especificação existem, basicamente, quatro entradas: um inteiro positivo (entre 1 e 20 3 partições) uma cadeia de caracteres um caractere a ser procurado a opção por procurar por mais caracteres (duas partições: uma para s e outra para n ) 38
39 Algoritmo para exemplificação (cont.) o domínio de saída consiste de duas respostas, que levam a outra divisão do domínio de entrada: a posição na qual o caractere foi encontrado na string (caractere de entrada pertencente à string) uma mensagem declarando que ele não foi encontrado (caractere de entrada não pertencente à string) 39
40 40
41 Particionamento de Equivalência: observações Reduz o tamanho do domínio de entrada Concentra-se em criar dados de teste baseados unicamente na especificação É especialmente adequado para aplicações em que as variáveis de entrada podem ser facilmente identificadas e podem ter valores distintos Problemas: embora a especificação possa sugerir que um grupo de dados seja processado de forma idêntica, isso pode não ocorrer a técnica não fornece um guia para a determinação dos dados de teste 41
42 Análise do Valor Limite Complementa o Particionamento de Equivalência Coloca sua atenção em uma fonte propícia a erros os Limites de uma classe ou partição de equivalência 42
43 Análise do Valor Limite Se a condição de entrada especifica um intervalo limitado pelos valores de a e b Casos de testes Valores de A e B Imediatamente acima e imediatamente abaixo de A e B Se a condição de entrada especifica vários valores Casos de testes Números mínimos e máximos Valores imediatamente acima e imediatamente abaixo do mínimo e do máximo 43
44 Análise de Valor-limite: Exemplo Aplicação: os valores inteiros 0, 1, 20 e 21 encontrar o caractere na primeira e na última posição da cadeia de caracteres 44
45 Teste de Comandos Estabelece como requisito de teste que sejam executados todos os comandos do programa ao menos uma vez 45
46 46
47 Teste de Comandos É necessário concentrar-se nos comandos que são controlados por condições fornecer um valor para x que esteja fora do intervalo para forçar a execução dos comandos no loop (linhas 11-12) quando x está dentro do intervalo, ele será no mínimo 1 e o comando dentro do for (linha 16) será executado 47
48 Teste de Comandos o comando if (linha 25) precisa ser executado, com as alternativas then e else (linhas 26 e 28) procurar por um caractere que esteja na cadeia e que force a procura dentro dela A entrada no while (linha 23) é garantida O comando if (linha 30) precisa ser executado, com as alternativas then e else (linhas 31 e 33) um caractere que pertença e outro que não pertença à cadeia (combinando com o if anterior uma cadeia de caracteres a, de um caractere e valores para a variável c que ocorra e que não ocorra em a) por fim, é preciso terminar o loop para executar o comando end 48
49 Teste de Comandos É o nível mínimo de cobertura esperado no teste estrutural 49
50 Teste de Ramos Estabelece como dados de teste exercitar todas as saídas verdadeiro e falso de todas as decisões 50
51 Teste de Ramos É conveniente observar o grafo do programa Observando o grafo, é necessário gerar dados de teste que causem as duas saídas verdadeiro e falso que ocorrem nos nós 2, 5, 9, 10, 14 e 17 Para o nó 2, um valor da variável x menor que 1 ou maior que 20 causa a saída pelo ramo verdadeiro e um valor de x dentro desse intervalo causa a saída pelo ramo falso O nó 5, comando for (linha 15), terá as saídas verdadeiro e falso, desde que o valor de x seja ao menos 1 (e terá que ser para chegar nesse ponto) 51
52 Teste de Ramos (cont.) para o nó 9, loop while (linha 23), a saída verdadeiro (arco k) é garantida devido aos comandos das linhas 21 e 22; a saída falso (arco q) é garantida ou quando o caractere que está sendo procurado é encontrado ou quando o final da cadeia é encontrado O nó 10, if (linha 25), requer uma comparação que encontre o caractere que está sendo procurado (arcos l, n) e uma outra que cause o incremento de i (arcos m, o) o nó 14 (linha 30) precisa de um caractere que seja encontrado e um outro que não seja encontrado o nó 17 requer pelo menos mais uma iteração do loop repeat (arco r) antes que o final do programa seja encontrado (arco w) 52
53 Teste de Ramos (cont.) O conjunto de dados de testes é o mesmo do Teste de Comandos, mas neste, o caractere a poderia ser fornecido através de outra execução do programa Já no Teste de Ramos, a execução do loop repeat é 53 obrigatória
54 Teste de Condição Estabelece os requisitos de teste tal que todas as condições em uma decisão requeiram as duas saídas, verdadeiro e falso, se for possível, ao menos uma vez 54
55 Teste de Condição: exemplo é necessário considerar todos os nós identificados no Teste de Ramos, mas neste caso, devem ser consideradas todas as condições das decisões no loop while (linha 9), tem-se uma decisão com duas condições: while (x<1) or (x>20) do valores de x: 0 e 21 obtém-se a cobertura das condições se x=0 então a primeira condição é verdadeira e a segunda é falsa; se x=21 então a primeira condição é falsa e a segunda é verdadeira 55
56 Teste de Condição: exemplo (cont.) é necessário gerar um outro valor para x que esteja dentro do intervalo, de forma que seja possível a execução do resto do programa esse valor pode ser determinado pelo requisito imposto pela outra condição do programa, que corresponde ao loop for do comando: for i:=1 to x do para uma saída verdadeira a variável i deve ser menor ou igual a x; para uma saída falsa a variável i deve ser maior que x. Como x é pelo menos 1 para se chegar nessa parte do programa, o for é executado até que i seja maior que x 56
57 Teste de Condição: exemplo (cont.) loop while, linha 23 (nó 9): while (not(achou))and(i<=x) do as duas condições nessa decisão são verdadeiras quando se entra nesse loop Para torná-las com valor falso, é preciso prever as duas alternativas, ou seja, o caso de um caractere que pertença à string e o caso de um caractere que não pertença essas duas alternativas geram também os valores verdadeiro e falso para os comandos if da linha 25 e if da linha 30 57
58 Teste de Condição: exemplo (cont.) a última decisão a ser considerada é o comando until da linha 37 (nó 17): until (resposta = n ) or (resposta = N ) quando é fornecido o valor n, a primeira condição é verdadeira e a segunda é falsa; quando é fornecido o valor N, a primeira é falsa e a segunda é verdadeira (executar o programa duas vezes) 58
59 Teste de Condição: exemplo (cont.) o Teste de Condição pode não satisfazer o Teste de Ramos neste caso, o loop do repeat não é executado 59
60 Teste Baseado em Erros Os requisitos de teste são estabelecidos com base nos erros típicos e comuns cometidos durante o desenvolvimento do software Critério: Análise de Mutantes 60
61 Análise de Mutantes 61
62 Análise de Mutantes Hipótese do Programador Competente Programadores experientes escrevem programas corretos ou muito próximos do correto. Efeito de Acoplamento Casos de teste capazes de revelar erros simples são tão sensíveis que, implicitamente, também são capazes de revelar erros mais complexos. 62
63 Análise de Mutantes Garantir a ausência de determinados tipos de defeitos Considerando todos os programas Q, é possível provar a correção de P 63
64 Análise de Mutantes É impraticável executar e comparar todos os programas Q Estabelece-se então uma vizinhança F(P) que contém apenas um conjunto finito de Programas Esses programas contêm pequenos desvios sintáticos que representam defeitos simples 64
65 Análise de Mutantes Os operadores de mutação determinam o tipo de alteração sintática que deve ser feita para a criação dos mutantes Introduzir pequenas alterações semânticas através de pequenas alterações sintáticas que representam defeitos típicos Operadores dependem da linguagem alvo FORTRAN (22 operadores) C (71 operadores) 65
66 Exemplos de operadores de mutação Retira um comando de cada vez do programa Troca operador relacional por operador relacional Troca o comando while por do-while Interrompe a execução do laço após duas execuções Troca valores das constantes Requer valor negativo, positivo e zero para cada referência escalar 66
67 Análise de Mutantes Dados P e T Passos para a Aplicação da Análise de Mutantes P é executado com os casos de teste de T Mutantes são gerados Mutantes são executados com os casos de teste de T Mutantes são analisados 67
68 Exemplo: Mutação Considere o trecho do programa e o conjunto de teste obtido para o Teste de Ramos 68
69 Exemplo 1: Mutação (cont.) Mutante 1: alteração na linha 21 de: achou := FALSE para: achou := TRUE considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos a saída gerada seria: o caractere a aparece na posição 1 em vez de: o caractere a não ocorre na string fornecida, mutante seria morto por esse conjunto de dados de teste 69
70 Exemplo 2: Mutação (cont.) Mutante 2: alteração na linha 22 de: i := 1 para: x := 1 considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos o erro não é revelado; o mutante continua vivo pois a saída gerada por ele é igual à saída gerada pelo programa original, uma vez que a string é de tamanho 1 e o loop while da linha 23 executa exatamente uma vez (somente se o for sair com i=1) para matar esse mutante deve-se criar um caso de teste que possua uma string de tamanho maior que 1 e assim, qualquer caractere da posição 2 em diante será considerado como não pertencente à string, mesmo que faça parte dela 70
71 Exemplo 2: (cont.) Mutante 2: novos dados de teste para ser morto Dado de teste que mata o mutante 2 Obs: se o programa original fosse executado com esses dados, os caracteres v e C seriam encontrados nas posições 3 e 2 respectivamente. 71
72 Exemplo 3: Mutação (cont.) Mutante 3: alteração na linha 28 de: i := i + 1 para: i := i + 2 considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos o erro não é revelado; o mutante continua vivo pois a saída gerada por ele é igual à saída gerada pelo programa original, uma vez que a string é de tamanho 1 e o loop while da linha 23 executa exatamente uma vez (o incremento de 2 não será executado) para matar esse mutante deve-se criar um caso de teste que possua uma string de tamanho maior que 1 e, além disso, é necessário procurar por um caractere nas posições pares da string 72
73 Exemplo 3: mutantes Mutante 3: novos dados de teste para ser morto Obs: Se o programa original fosse executado com esse dado de teste, o caractere C seria encontrado na posição 2 73
74 Mutantes: Observações Teste de Mutação consegue mostrar a ausência de erros particulares, pois ao matar os mutantes está sendo mostrado que o programa original não possui aquele erro Esse critério força o testador a analisar cuidadosamente o programa, uma vez que ele precisa criar dados de teste que exponham os erros introduzidos Desvantagem: Ele é computacionalmente caro devido ao grande número de mutantes gerados e o tempo e recurso usados para compilar e executar todos eles 74
75 Aspectos genéricos das Estratégias de Teste A atividade de teste inicia-se no nível de módulos e caminha na direção da integração de todo o sistema diferentes técnicas de teste são apropriadas para diferentes situações a atividade de teste, em geral, é realizada pela equipe de desenvolvimento e, no caso de grandes projetos, por um grupo de teste independente as atividades de teste e depuração são atividades diferentes, mas a depuração é necessária em qualquer estratégia de teste 75
76 Relação entre o processo de software e uma estratégia de software 76
IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br
IES-300 Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br Teste de Caixa Branca 2 Teste de Componentes: Caixa Branca Teste de Caixa Branca Grafo de Fluxo de
Leia maisEngenharia de Software II
Engenharia de Software II Aula 9 http://www.ic.uff.br/~bianca/engsoft2/ Aula 9-19/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do
Leia maisEngenharia de Software II
Engenharia de Software II Aula 8 http://www.ic.uff.br/~bianca/engsoft2/ Aula 8-17/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do
Leia maisTeste de Software Estrutural ou Caixa Branca. Disciplina de Engenharia de Software prof. Andrey Ricardo Pimentel andreyrp@hotmail.
Teste de Software Estrutural ou Caixa Branca Disciplina de Engenharia de Software prof. Andrey Ricardo Pimentel andreyrp@hotmail.com Contexto da Aula Introdução a ES Qualidade Métricas de Software Planejamento
Leia maisUnidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste
Unidade VI Validação e Verificação de Software Teste de Software Profa. Dra. Sandra Fabbri Conteúdo Técnicas de Teste Funcional Estrutural Baseada em Erros Estratégias de Teste Teste de Unidade Teste de
Leia maisIntrodução a Verificação, Validação e Teste de Software
Engenharia de Software I 2012.2 Introdução a Verificação, Validação e Teste de Software Ricardo A. Ramos [Baseado na apresentação do LABS ICMC-USP -> http://www.labes.icmc.usp.br] Organização Introdução
Leia maisEngenharia de Software II
Engenharia de Software II Aula 10 http://www.ic.uff.br/~bianca/engsoft2/ Aula 10-24/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14
Leia maisTestes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins
Testes Baseados na Implementação (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins 1 Tópicos O que é Grafo de fluxo de controle Critérios de cobertura 2 Referências B.Beizer R.Binder
Leia maisJuciara Nepomuceno de Souza Rafael Garcia Miani. Teste de Software
Juciara Nepomuceno de Souza Rafael Garcia Miani Teste de Software Técnicas de Teste de Software Testabilidade Operabilidade; Observabilidade; Controlabilidade; Decomponibilidade; Simplicidade; Estabilidade;
Leia maisPONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:
Leia maisComo melhorar a Qualidade de Software através s de testes e nua. Cláudio Antônio de Araújo 22/11/2008
Como melhorar a Qualidade de Software através s de testes e integração contínua. nua. Cláudio Antônio de Araújo 22/11/2008 Objetivos Fornecer uma visão geral da área de testes de software, com ênfase em
Leia maisTestes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída
DCC / ICEx / UFMG Testes de Software Testes de Software Teste de software buscam por erros ou anomalias em requisitos funcionais e não funcionais Classificação de testes pelo objetivo Teste de Validação:
Leia maisTestes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída
DCC / ICEx / UFMG Testes de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Teste de software buscam por erros ou anomalias em requisitos funcionais e não funcionais Classificação
Leia maisTécnicas de Teste de Software
Técnicas de Teste de Software Luis Renato dos Santos FAES - UFPR 2011 Luis Renato dos Santos (FAES - UFPR) Técnicas de Teste de Software 2011 1 / 23 Sumário Introdução Fundamentos de Teste de Software
Leia maisFundamentos de Teste de Software
Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 6 Teste Dinâmico: Técnicas de Especificação SUMÁRIO INTRODUÇÃO... 3 TÉCNICAS BASEADAS
Leia maisa) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema
Simulado CTFL- BSTQB Tempo de duração: 60 minutos 1. Considerando as seguintes afirmações: I. 100% de cobertura de sentença (comando) garante 100% de cobertura de desvio II. 100% de cobertura de desvio
Leia maisIES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br
IES-300 Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br Teste de Caixa Preta 2 Teste de Caixa Preta Partição de Equivalência Análise de Valor Limite Teste
Leia maisOPERADORES E ESTRUTURAS DE CONTROLE
OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em
Leia maisProgramação WEB I Estruturas de controle e repetição
Programação WEB I Estruturas de controle e repetição Operadores de Incremento Operadores de incremento servem como expressões de atalho para realizar incrementos em variáveis Operadores de Incremento Vamos
Leia maisCAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Leia maisTestar os programas para estabelecer a presença de defeitos no sistema. Teste de Software. Teste de defeitos. Objetivos. Tópicos
Teste de defeitos Teste de Software Testar os programas para estabelecer a presença de defeitos no sistema Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1 Ian Sommerville 2000
Leia maisAlgoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br
(Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução
Leia maisTécnicas de Caixa Preta de Teste de Software
Técnicas de Caixa Preta de Teste de Software Na maioria de projetos de teste, o tempo para a realização dos mesmos sempre é curto e os números de testes a serem realizados nas aplicações são inúmeros.
Leia maisENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br
- MÓDULO 4 - TESTE DE SOFTWARE 1. INTRODUÇÃO O teste do software é a investigação do software a fim de fornecer informações sobre sua qualidade em relação ao contexto em que ele deve operar. Isso inclui
Leia maisConteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos
Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de
Leia maisPráticas de. Engenharia de Software. Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.
"Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE." Engenharia de Software Práticas de Engenharia de Software Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha
Leia maisIntrodução a Algoritmos Parte 04
Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti
Leia maisCurso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
Leia maisEngenharia de Software II
Engenharia de Software II Aula 14 Revisão http://www.ic.uff.br/~bianca/engsoft2/ Aula 14-07/05/2006 1 Processo de Software Qual é a diferença entre uma atividade de arcabouço e uma atividade guarda chuva?
Leia maisc. Técnica de Estrutura de Controle Teste do Caminho Básico
1) Defina: a. Fluxo de controle A análise de fluxo de controle é a técnica estática em que o fluxo de controle através de um programa é analisado, quer com um gráfico, quer com uma ferramenta de fluxo
Leia maisTeste de Software Parte 3. Prof.: Jonas Potros
Teste de Software Parte 3 Prof.: Jonas Potros Conteúdo Teste Funcional Teste Funcional Técnica de projeto de casos de teste na qual o programa ou sistema é considerado uma caixapreta. Para testá-lo, são
Leia maisPrincípios do teste de software
Teste de Software Princípios do teste de software Conforme a Lei de Pareto, 80% dos erros podem ser localizados em 20% do projeto, geralmente nos módulos principais do sistema; A atividade de teste não
Leia maisProf. Me. Marcos Echevarria
Prof. Me. Marcos Echevarria Já vimos que existem vários tipos de testes de software que podemos usar para que nossos sistemas tenham uma qualidade maior. Além disso, esses testes podem ser executados em
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 maisQualidade de Software. Profa. Cátia dos Reis Machado catia@ifc-camboriu.edu.br
Qualidade de Software Profa. Cátia dos Reis Machado catia@ifc-camboriu.edu.br Verificação x validação Verificação prova que o produto vai ao encontro dos requerimentos especificados no desenvolvimento
Leia maisProblemas insolúveis. Um exemplo simples e concreto
Surge agora uma outra questão. Viemos buscando algoritmos para resolver problemas. No entanto, será que sempre seria possível achar esses algoritmos? Colocando de outra forma: será que, para todo problema,
Leia mais4 Segmentação. 4.1. Algoritmo proposto
4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças
Leia mais1.6. Tratamento de Exceções
Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER
Leia maisTeste de Software. Ricardo Argenton Ramos ricargentonramos@gmail.com. Engenharia de Software I 2012.2
Teste de Software Ricardo Argenton Ramos ricargentonramos@gmail.com Engenharia de Software I 2012.2 O que diferencia teste de software OO de testes Convencionais? Técnicas e abordagens são normalmente
Leia maisAlgoritmo. 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 maisESTRUTURA CONDICIONAL
AULA 6 ESTRUTURA CONDICIONAL 130 Tem como objetivo executar um conjunto de comandos caso uma condição lógica seja atendida. Quando a resposta lógica for falsa, nada será executado. Sintaxe Se CONDIÇÃO
Leia maisTutorial de Matlab Francesco Franco
Tutorial de Matlab Francesco Franco Matlab é um pacote de software que facilita a inserção de matrizes e vetores, além de facilitar a manipulação deles. A interface segue uma linguagem que é projetada
Leia maisAlgoritmos com VisuAlg
Algoritmos com VisuAlg Prof Gerson Volney Lagemann Depto Eng de Produção e Sistemas UDESC - CCT Algoritmos com VisuAlg Introdução A linguagem VisuAlg é simples, seu objetivo é disponibilizar um ambiente
Leia maisAMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário
Leia maisGARANTIA DA QUALIDADE DE SOFTWARE
GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário
Leia maisFeature-Driven Development
FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por
Leia mais9 Comandos condicionais
9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em
Leia maisA lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas de Computação O sistema operacional precisa garantir a operação correta do sistema de computação. Operação
Leia maisPrincípios de Análise e Projeto de Sistemas com UML
Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 9 Modelagem de estados Todos os adultos um dia foram crianças, mas poucos se lembram disso.
Leia maisGeração de código intermediário. Novembro 2006
Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisOBS.: Simulado baseado no conteúdo abordado pelo capítulo 4 (Técnica de Modelagem de Teste) do Syllabus.
Simulado CTFL- BSTQB Tempo de duração: 30 minutos OBS.: Simulado baseado no conteúdo abordado pelo capítulo 4 (Técnica de Modelagem de Teste) do Syllabus. 1. Coloque os casos de teste que utilizam as seguintes
Leia maisFundamentos em Teste de Software. Vinicius V. Pessoni viniciuspessoni@gmail.com
Fundamentos em Teste de Software Vinicius V. Pessoni viniciuspessoni@gmail.com Objetivos do treinamento 1. Expor os fundamentos de Teste de Software; 2. Conceituar os Níveis de Teste; 3. Detalhar sobre
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números
Leia maisNa medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.
1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade
Leia maisAUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0
AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento
Leia maisAlgoritmos e Estrutura de Dados III. Árvores
Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas
Leia maisProjeto de Sistemas I
Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:kellypcsoares@ifsp.edu.br Requisitos: base para todo projeto, definindo o
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisPontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação
Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação LP: Laboratório de Programação Apontamento 7 Prof. ISVega Março de 2004 Controle de Execução: Seleção Simples CONTEÚDO
Leia maisEntendendo como funciona o NAT
Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços
Leia maisMemória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos
TUTORIAL Memória Flash Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br
Leia maisCálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante
Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos
Leia maisPROGRAMAÇÃO II 4. ÁRVORE
4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia maisLP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br
LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de
Leia maisAlgoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)
Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação
Leia maisArquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Leia maisTeste de Software II Técnicas de Teste
Tema da Aula Teste de II Técnicas de Teste Prof. Cristiano R R Portella portella@widesoft.com.br Ciclo de Vida do e a Atividade de Teste Ambiente de Desenvolvimento Planejamento Análise Projeto Codificação
Leia maisProgramação Elementar de Computadores Jurandy Soares
Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos
Leia maisLinguagem algorítmica: Portugol
Programação de Computadores I Aula 03 Linguagem algorítmica: Portugol José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/34 Introdução I Lógica A lógica é usada
Leia maisJava Como Programar, 8/E
Capítulo 5 Instruções de controle: Parte 2 Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 5.1 Introdução Instrução de repetição for Instrução de repetição do while Instrução de seleção
Leia maisTeste de Software Parte 1. Prof. Jonas Potros
Teste de Software Parte 1 Prof. Jonas Potros Cronograma Verificação e Validação Teste de Software: Definição e Conceitos Técnicas de Teste Fases de Teste Processo de Teste Automatização do Processo de
Leia maisTeste de Software. Profa. Cátia dos Reis Machado catia@ifc-camboriu.edu.br
Teste de Software Profa. Cátia dos Reis Machado catia@ifc-camboriu.edu.br Qualidade Garantia de Qualidade Qualidade do processo Qualidade do produto Testes Estáticos Testes Dinâmicos Teste de software
Leia maisProjeto de controle e Automação de Antena
Projeto de controle e Automação de Antena Wallyson Ferreira Resumo expandido de Iniciação Tecnológica PUC-Campinas RA: 13015375 Lattes: K4894092P0 wallysonbueno@gmail.com Omar C. Branquinho Sistemas de
Leia maisAlgoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma
Roteiro: Conceitos básicos de algoritmo, linguagem, processador de linguagem e ambiente de programação; Aspectos fundamentais da organização e do funcionamento de um computador; Construções básicas de
Leia maisResolução de problemas e desenvolvimento de algoritmos
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de
Leia maisIntrodução à Lógica de Programação
Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1 Estruturas de dados Representação computacional das informações do problema ser resolvido Informações podem ser de
Leia maisCapítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho
20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam
Leia maisEngenharia de Software II
Engenharia de Software II Aula 16 http://www.ic.uff.br/~bianca/engsoft2/ Aula 16-14/05/2006 1 1. O que é uma atividade guarda-chuva? Dê dois exemplos. São atividades aplicáveis durante todo o processo
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor
Leia maisAlgoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 1 Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Linguagem a ser Utilizada? Nossa disciplina é de Algoritmos e Estrutura de Dados, e não de linguagem
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação
SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar
Leia maisALGORITMOS PARTE 01. Fabricio de Sousa Pinto
ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3
Leia maisComputadores XXI: Busca e execução Final
Computadores XXI: Busca e execução Final A6 Texto 6 http://www.bpiropo.com.br/fpc20060123.htm Sítio Fórum PCs /Colunas Coluna: B. Piropo Publicada em 23/01/2006 Autor: B.Piropo Na coluna anterior, < http://www.forumpcs.com.br/viewtopic.php?t=146019
Leia maisMRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior
MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de
Leia maisEspecialização em Engenharia de Software e Banco de Dados
Especialização em Engenharia de Software e Banco de Dados Disciplina: Engenharia de Software Tópico: Modelos de Ciclo de Vida Prof. Rodolfo Miranda de Barros rodolfo@uel.br Ciclo de Vida A Engenharia de
Leia maisUNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA
UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Teste de Software Engenharia de Software 2o. Semestre de 2005 Slide
Leia maisJSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Leia maisTeste de software. Definição
Definição O teste é destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso. Quando se testa o software, o programa é executado usando dados
Leia maisProcessos de gerenciamento de projetos em um projeto
Processos de gerenciamento de projetos em um projeto O gerenciamento de projetos é a aplicação de conhecimentos, habilidades, ferramentas e técnicas às atividades do projeto a fim de cumprir seus requisitos.
Leia maisJAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo
Conteúdo Estruturas de repetição (loops, laços)... 2 WHILE (enquanto)... 2 DO... WHILE (faça... enquanto)... 2 FOR... 3 FOREACH... 4 EXERCICIO LOOP FOR... 4 Novo Projeto... 5 Controles SWING... 10 1 Estruturas
Leia maisRecursos. Um recurso é ou um dispositivo físico (dedicado) do hardware, ou Solicitar o recurso: esperar pelo recurso, até obtê-lo.
Um recurso é ou um dispositivo físico (dedicado) do hardware, ou um conjunto de informações, que deve ser exclusivamente usado. A impressora é um recurso, pois é um dispositivo dedicado, devido ao fato
Leia maisProgramação Básica em Arduino Aula 2
Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas
Leia maisCurso de Programação Computadores
3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos
Leia maisReferências internas são os artefatos usados para ajudar na elaboração do PT tais como:
Plano de Teste (resumo do documento) I Introdução Identificador do Plano de Teste Esse campo deve especificar um identificador único para reconhecimento do Plano de Teste. Pode ser inclusive um código
Leia mais