Ctai Teste De Software Aula 1
-
Upload
victor-hugo-germano -
Category
Technology
-
view
22.428 -
download
1
description
Transcript of Ctai Teste De Software Aula 1
Victor Hugo GermanoTeste 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 ouevitar 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
ObjetivoCriar 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 testesligada à evolução do Sistema
Processo Evolucionário
Desde o início do desenvolvimento
Evolução dos testesligada à evolução do Sistema
Adaptável e Incremental
Tipos de Teste
Caixa Branca
Testes Unitários
Testes Unitários
Testam um único componenteTodos os demais são simulados
Testes Unitários
Testam um único componenteTodos os demais são simulados
JUnit / JMock / Easymock
public void addValor(int valor) {this.saldo += valor
}public void getSaldo() {return this.saldo;
}
@Testpublic 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
NullValores Negativos
Listas Vaziasetc
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
ObjetivoExecutar 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 listaAdicione 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çãoJuntos 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
ObjetivoCriar 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