Baixe o app para aproveitar ainda mais
Prévia do material em texto
Victor Hugo Germano Teste de Software CTAI SENAISC Aula - 01 Eu? Quem? Victor Hugo Germano http://malditacomedia.blogspot.com Por que testar? Apresentação do Curso Apresentação do Curso Teste! Teste! Teste! Teste! Apresentação do Curso Teste! Teste! Teste! Teste! Ferramentas de Teste Apresentação do Curso Teste! Teste! Teste! Teste! Ferramentas de Teste Metodos e Processos Apresentação do Curso Teste! Teste! Teste! Teste! Ferramentas de Teste Metodos e Processos Exercícios de Fixação Apresentação do Curso Teste! Teste! Teste! Teste! Ferramentas de Teste Metodos e Processos Exercícios de Fixação Profissionalismo Objetivos • Discutir nosso papel • Apresentar os princípios • Descrever estratégias de Planejamento • Entender a automação de testes Teste de Software IEEE Standard 829 for Software Test Documentation • Plano de Testes • Especificação de Arquitetura de Teste • Especificação de Casos de Teste • Identificadores para Especificação de Casos de Teste • Itens a serem testados • Especificação de Entrada • Especificação de Saída • Necessidades de Ambiente • Requisitos especiais de processos • Dependências internas para casos de Uso • Especificação do Procedimento de Testes • Relatório de Comunicação de Item testado • Log de Teste Vale a Pena? Teste de Software Teste de Software Percepção de Valor não imediata Teste de Software Percepção de Valor não imediata Não garante Qualidade Total Documentação de Teste Documentação de Teste Qual o custo de Manutenção? Documentação de Teste Qual o custo de Manutenção? Qual o impacto na velocidade? Documentação de Teste Qual o custo de Manutenção? Qual o impacto na velocidade? Quanta inércia será gerada? Documentação de Teste Qual o custo de Manutenção? Qual o impacto na velocidade? Quanta inércia será gerada? Stakeholders concordam? O que fazer? O que fazer? Questionar-se Documentação de Testes Documentação de Testes Produto ou Ferramenta? Documentação de Testes Produto ou Ferramenta? Qual a dinâmica do mercado? Documentação de Testes Produto ou Ferramenta? Qual a dinâmica do mercado? Encontrar defeitos ou evitar que eles ocorram? Qualidade Reduzir Riscos Reduzir Riscos Evitar que erros ocorram! Reduzir Custos Reduzir Custos Eliminar Desperdícios! Exercício 1 Grupos de 2 - 3 pessoas Quais são os seus desafios na adoção de Políticas de qualidade e Testes de software? Exercício 1I Sistema de Avaliação de Alunos Objetivo Criar um conjunto de testes • Durante o semestre são dadas três notas; • A nota final é obtida pela média aritmética das notas dadas durante o curso; • É considerado aprovado o aluno que obtiver a nota final superior ou igual a 60 e que tiver comparecido a um mínimo de 40% das aulas. • Deve ser possível para este sistema: • Calcular a nota final de cada aluno, a maior e a menor nota da turma, bem como a média da turma. • Calcular o total de alunos reprovados • Calcular a porcentagem de alunos reprovados por freqüência Execício 1I Testar para encontrar defeitos? Processo Evolucionário Processo Evolucionário Desde o início do desenvolvimento Processo Evolucionário Desde o início do desenvolvimento Evolução dos testes ligada à evolução do Sistema Processo Evolucionário Desde o início do desenvolvimento Evolução dos testes ligada à evolução do Sistema Adaptável e Incremental Tipos de Teste Caixa Branca Testes Unitários Testes Unitários Testam um único componente Todos os demais são simulados Testes Unitários Testam um único componente Todos os demais são simulados JUnit / JMock / Easymock public void addValor(int valor) { this.saldo += valor } public void getSaldo() { return this.saldo; } @Test public void verificaCalculoDoSaldo() { Conta conta = new Conta(200); conta.addValor(100); assertEquals(300, conta.getSaldo()); } Testes Unitários Testes de Integração Testes de Integração Testam integração entre componentes Testes de Integração Testam integração entre componentes Codigo+BD / Codigo+Web Testes de Integração Testam integração entre componentes JUnit / DBUnit / HsqlDB / Fit Codigo+BD / Codigo+Web @Test public void testAddUsuarios() { GerenteUsuarios gerente = new GerenteUsuarios(); int numUsuarios = gerente.getNumeroUsuarios(); gerente.addUsuario(new Usuario(“Rocco”)); int novoNumUsuarios = gerente.getNumeroUsuarios(); assertEquals(novoNumUsuarios,(numUsuarios+1)); } Testes de Integração Testes de Aceitação Testam uma funcionalidade, estória ou um caso de uso Testes de Aceitação Testam uma funcionalidade, estória ou um caso de uso JUnit / Selenium Testes de Aceitação Caixa Preta Análise de Valor Limite Extrapolar os valores máximo e mínimo de uma funcionalidade Null Valores Negativos Listas Vazias etc Transição de Estado Estado 1 Estado 2Transição Entrada Saída Transição de Estado Ordem Ação 1 Iniciar Edição de dados do Usuário “xpto” 2 Modificar permissao de acesso para admin 3 Sair do Sistema 4 Entrar no sistema como usuário “xpto” 5 Verificar se menu admin está disponível Testes de Sintaxe Campos Numéricos Entrada de Dados Campos RG / CPF / CNPJ Máscaras Testes de Desempenho O quão tolerante a falha? Simular falhas na rede Excluir objetos Múltiplos acessos Simultâneos Testes de Caminho Objetivo Executar todas as possibilidades do sistema Testes de Integração No final, se juntar tudo, funciona? teste da instalação teste da implantação teste de desempenho teste de compatibilidade com outros sistemas teste de conversão teste da documentação teste do backup teste da recuperação Exercício III Matrícula Online Execício III • O Aluno acessa o Site do Curso com seu usuário e senha • Ao acesso a sessão especial de "Pedido de Matrícula", ele pode iniciar o processo de solicitacao • Ele entao seleciona as disciplinas. Como cada uma das disciplinas possui pré-requisitos, ele deve ser impedido de matricular-se numa disciplina que não possua pré-requisitos necessários • Todo aluno deve possuir, no máximo, 30 créditos • Disciplinas podem ter entre 1 e 8 créditos • Após fazer a solicitação, um comprovante é apresentado ao usuário contendo um boleto bancário para o pagamento das taxas de matrículas referentes às disciplinas solicitadas. (Cada disciplina custa R$ 10,00) Testes Unitários Testes Unitários Não será Teste Unitário se: Testes Unitários Não será Teste Unitário se: • Se conecta a um banco de Dados • Utiliza a rede • Utiliza o sistema de arquivos • Não é executável individualmente • Precisa de uma configuração do Ambiente Testes Unitários Testes Unitários Objetivos: Um único cenário testado Testes Unitários Objetivos: Um único cenário testado Independentes Testes Unitários Objetivos: Um único cenário testado Independentes Contidos: Não afetam outros testes Testes Unitários Objetivos: Um único cenário testado Independentes Contidos: Não afetam outros testes Rápidos: Execução instantânea A forma básica para testes é a seguinte: • Crie um objeto e coloque-o em um estado conhecido • Invoque um método, o qual retorne um resultado real • Crie um objeto representando o resultado esperado• Invoque assertEquals(resultadoEsperado, resultadoReal) para confirmar se a implementação está correta. Testes Unitários Testes Unitários Crie uma lista Adicione um Valor Verifique se o valor está contido na lista Exercícios Testes Unitários Organização Testes Unitários Organização Separados do Código de Produção Juntos ao código Em pacotes separados Testes Unitários Deve ser possível sacar valores de uma Conta Exercícios Testes Unitários Removendo Duplicações nos testes @Before @After Exercício IV Sistema de controle de Estoque Objetivo Criar testes unitários para o sistema Adicione Itens ao Estoque ( nome) Remova Itens do Estoque Liste Itens em Estoque Itens não devem estar repetidos (lançar exceção) Controle de Estoque Benefícios TDD 3 Leis do TDD 3 Leis do TDD Escreva um teste que falhe 3 Leis do TDD Escreva um teste que falhe Faça o teste passar 3 Leis do TDD Escreva um teste que falhe Faça o teste passar Refatore Motivação Motivação Confiabilidade Motivação Testabilidade do Sistema Confiabilidade Motivação Testabilidade do Sistema Confiabilidade Dificuldade em adicionar mudanças Exemplo Prático Encontrar o número de dias entre um dado Dia e a data atual: Hoje: 22/04/2009 20/04/2009: “2 dias atrás” 8/04/2009: “2 semanas atrás” http://dojofloripa.wordpress.com
Compartilhar