Apresentação sobre alguns conceitos iniciais de teste de software.
Fala sobre tipos de teste, agile testing, papéis envolvidos, cultura de testes.
Apresentação feita em conjunto por Roberto Espinha e Anelise Bastos.
2. Teste de Software "É de conhecimento geral entre os analistas de software que nunca se elimina o último bug de um programa. Os bugs são aceitos como uma triste realidade. Esperamos eliminá-los todos, um por um, mas nunca conseguiremos nos livrar deles." DeMarco, Tom , Editora Campus, 91 Mas geralmente temos as seguintes situações: “Depois eu escrevo o plano de testes...“ "Vamos deixar os testes para a próxima fase...“ "Na minha máquina funcionou...“ "Temos que entregar o produto na semana que vem..." Então o que é teste de software ?
3. O que é Teste de Software? Processo que procura garantir que um programa se adapte aos requisitos da especificação e funcione em todos os casos em que se espere que funcione Identificação de possíveis defeitos que possam vir a ocorrer após a finalização do software e posterior implantação
4. Por que Testar? Não existe processo de desenvolvimento que garanta que um programa não tenha defeitos Gasto com retrabalho Gasto de tempo na manutenção do software Descontentamento do cliente Divulgação negativa para futuros possíveis clientes
10. Tem idéias “incorretas” sobre o que software deveria ou não fazer.Usuáriosfazemtudoisso, porqueelesqueremusar o software e nãoentendê-lo.
11. Em todas as fases do desenvolvimento de software Quantomaiscedomelhor Hoje de 40 a 70 % do tempo do desenvolvimento do software é dedicado a identificação e remoção dos erros Erros que não são detectados e geram falhas no campo geram sérias conseqüências financeiras/legais e na melhor das hipóteses gera um alto custo de manutenção para o sistema Quando Testar?
13. O que Testar? Erros se escondem não só no código, mas nos requisitos, manuais, data sheets, etc Não podemos testar tudo, por isso precisamos administrar o RISCO Devemos testar o que traz maiores conseqüências no caso de falha? Devemos testar o que é mais utilizado? Devemos testar o que já dá mais erro? Ou que foi escrito por programador júnior? Deve ser garantida a qualidade do processo e depois do produto -> Verificação e Validação
15. Como Testar? Teste o código em seus limites: tente uma entrada vazia, um único item, um vetor cheio, etc. Teste de pré e pós condições: verifique certas propriedades antes e depois de trechos de código; Programe defensivamente; Sempre verifique se ocorreram erros ao abrir, ler, escrever e principalmente fechar arquivos; Sempre trate as possíveis exceções;
16. Como Testar? Teste incrementalmente (scrum); Teste primeiro partes simples: tenha certeza que partes básicas funcionam antes de prosseguir; Conheça as saídas esperadas; Tester com grandes quantidades de dados; Teste em várias máquinas e browsers.
17.
18. Executa todas as decisões lógicas para valores falsos ou verdadeiros
25. Considerações sobre Testes Nenhuma ferramenta que tem o propósito de teste pode garantir a inexistência de defeitos Nenhum procedimento de teste é totalmente eficaz A atividade de teste não pode mostrar a ausência de “bugs”, ela só pode mostrar se defeitos de software estão presentes
26. O que é AgileTesting? “Agile testing” é umaprática de teste de software que segue osprincípios do “agile manifesto”, enfatizando o testepelaperspectiva dos clientesqueirãoutilizar o sistema. Cadaintegrantedaequipeestáfocadoemliberar um produto de altaqualidade e de valor agregado. Nãosãosomente “ostestadores” quesãoresponsáveispelaqualidade, mastodo o TIME.
27. AgileTesting Em times “Agéis”, o produto é bemconstruídodesde o início, utilizando testes parafornecer feedback sobre o desenvolvimento e se o mesmoestáatendendo as necessidades do negócio (PO)
28. AgileTesting Teste não é uma fase, em times Agéis é um “estilo de vida” Testecontínuo é o únicomodo de garantir um progressocontínuo.
31. AgileTesting Foco em Testes é, antes de tudo, uma forma de Design de Software! Seja adaptativo! Seja flexível: construa com qualidade! Remova o estigma que testadores possuem em projetos: os chatos. Automatize processos repetitivos!! Testadores, designers e desenvolvedores devem eficientemente colaborar para o projeto. Torne-se comprometido!
32. Referências CRISPIN, Lisa; GREGORY, Janet. AgileTesting – A PracticalGuide for TestersandAgileTeams. 5 ed. Boston/USA: Addison Wesley, 2009 HENDRICKSON, Elisabeth. “AgileTesting – Nine PrinciplesandSixConcretePractices for TestingonAgileTeams”. Disponível em: http://testobsessed.com/wordpress/wp-content/uploads/2008/08/AgileTestingOverview.pdf