Teste de SoftwareAgileTesting
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, 91Mas 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 ?
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 funcioneIdentificação de possíveis defeitos que possam vir a ocorrer após a finalização do software e posterior implantação
Por que Testar?Não existe processo de desenvolvimento que garanta que um programa não tenha defeitos Gasto com retrabalhoGasto de tempo na manutenção do softwareDescontentamento do clienteDivulgação negativa para futuros possíveis clientes
Por que Testar?Usuários: Sempre surpreendendo.Tentamacessar o mesmoaplicativoemdois browsers diferentes
Ignorammensagens de erros
Entram com datasinválidas, executamaçõesfora de ordem
Editam arquivos que não deveriam ser editados
Imprimem páginas que não foram configuradas para serem impressas
Tem idéias “incorretas” sobre o que software deveria ou não fazer.Usuáriosfazemtudoisso, porqueelesqueremusar o software e nãoentendê-lo.
Em todas as fases do desenvolvimento de softwareQuantomaiscedomelhor Hoje de 40 a 70 % do tempo do desenvolvimento do software é dedicado a identificação e remoção dos errosErros 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 sistemaQuando Testar?
Custo da Identificação do ErroCostInception	Elaboration	Construction	Transition
O que Testar?Erros se escondem não só no código, mas nos requisitos, manuais, data sheets, etcNão podemos testar tudo, por isso precisamos administrar o RISCODevemos 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
O queTestar?
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;
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.
Principais Tipos de TestesTesteEstruturalou White box testing: testebaseado no código.
Executa todas as decisões lógicas para valores falsos ou verdadeiros
Executa todos os laços em suas fronteiras
Exercita as estruturas de dados internasTesteFuncionalou black box testing: Simula a experiência do usuário final, semconhecimento do código.Funções incorretas ou ausentes;
Erros de interface;
Acesso a bancos de dados externos;

Teste de Software

  • 1.
  • 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, 91Mas 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 funcioneIdentificaçã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ãoexiste processo de desenvolvimento que garanta que um programa não tenha defeitos Gasto com retrabalhoGasto de tempo na manutenção do softwareDescontentamento do clienteDivulgação negativa para futuros possíveis clientes
  • 5.
    Por que Testar?Usuários:Sempre surpreendendo.Tentamacessar o mesmoaplicativoemdois browsers diferentes
  • 6.
  • 7.
    Entram com datasinválidas,executamaçõesfora de ordem
  • 8.
    Editam arquivos quenão deveriam ser editados
  • 9.
    Imprimem páginas quenão foram configuradas para serem impressas
  • 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 asfases do desenvolvimento de softwareQuantomaiscedomelhor Hoje de 40 a 70 % do tempo do desenvolvimento do software é dedicado a identificação e remoção dos errosErros 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 sistemaQuando Testar?
  • 12.
    Custo da Identificaçãodo ErroCostInception Elaboration Construction Transition
  • 13.
    O que Testar?Errosse escondem não só no código, mas nos requisitos, manuais, data sheets, etcNão podemos testar tudo, por isso precisamos administrar o RISCODevemos 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
  • 14.
  • 15.
    Como Testar?Teste ocó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.
    Principais Tipos deTestesTesteEstruturalou White box testing: testebaseado no código.
  • 18.
    Executa todas asdecisões lógicas para valores falsos ou verdadeiros
  • 19.
    Executa todos oslaços em suas fronteiras
  • 20.
    Exercita as estruturasde dados internasTesteFuncionalou black box testing: Simula a experiência do usuário final, semconhecimento do código.Funções incorretas ou ausentes;
  • 21.
  • 22.
    Acesso a bancosde dados externos;
  • 23.
  • 24.
    Erro de inicializaçãoe términoOutros Tipos de TestesTeste de Interface: navegação Teste de Performance: tempo de respostaTeste de carga: quantidade grande de usuários simultâneos. Teste de aceitação do usuário ou usabilidadeTestes de stress: aplicação em situações inesperadas. Testes de Configuração: diferentes ambientes de hardware ou de software.Testes de Segurança: utilizar os diversos papéis, perfis, permissões, para navegar no sistema.
  • 25.
    Considerações sobre TestesNenhumaferramenta 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.
    AgileTestingEm 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.
    AgileTestingTeste não éuma fase, em times Agéis é um “estilo de vida”Testecontínuo é o únicomodo de garantir um progressocontínuo.
  • 29.
  • 30.
    AgileTestingTimes Agéisnãoconsideram “done”e pronto para ser aceitopelo Product Owner oucliente, se não for testado.
  • 31.
    AgileTestingFoco 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ênciasCRISPIN, Lisa; GREGORY,Janet. AgileTesting – A PracticalGuide for TestersandAgileTeams. 5 ed. Boston/USA: Addison Wesley, 2009HENDRICKSON, Elisabeth. “AgileTesting – Nine PrinciplesandSixConcretePractices for TestingonAgileTeams”. Disponível em: http://testobsessed.com/wordpress/wp-content/uploads/2008/08/AgileTestingOverview.pdf
  • 33.
    OBRIGADOAnelise Schlickmann MottaBastosanelise.bastos@euax.com.brRoberto Gil Espinharoberto.espinha@euax.com.brwww.euax.com.br