Testes de Software 1 AU L A 0 1 – I N T R O D U Ç ÃO A T E S T E S D E S O F T WA R E Anne Caroline O. Rocha – Tester Certified – BSTQB – NTI|UFPB Conteúdo Programático do Curso 2 Introdução a Testes de Software Técnicas de Testes de Software Elaboração e Execução dos Testes Aula prática com Ferramentas de Testes Unitários, Funcionais, Carga, Cobertura e Aceitação Aula prática com Ferramentas de Gerência dos Testes e Gerência dos Defeitos Discussão sobre melhoria no processo de desenvolvimento e teste de software do NTI Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Conteúdo Programático – Aula 01 3 Como adquirir qualidade em um software? O que é teste de software? Por que testar é necessário? Confiabilidade do Software x Defeitos Tipos de Teste de Software Níveis de Teste de Software Testes Funcionais x Testes de Unidade A Equipe de Testes Processo de Testes x Processo de Desenvolvimento Quando usar ferramentas de teste de software? Quando os testes devem ser automatizados? Considerações Finais Referências Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Como adquirir qualidade em um software? 4 A Norma ISO 9126 define as seguintes características para qualidade: Funcionalidade Portabilidade Confiabilidade Manutenabilidade Usabilidade Eficiência Anne Caroline O. Rocha – Tester Certified – NTI|UFPB O que é teste de software? 5 Os testes são realizados com a intenção de descobrir erros e defeitos em um sistema. [Myres, 2004] Os testes de software podem ser usados para mostrar a presença de defeitos, mas nunca para mostrar a ausência deles. [Dijkstra, 1972] Os testes de software servem para medir a confiabilidade de um sistema: à medida que poucos defeitos são encontrados em um determinado tempo, o software é considerado mais confiável. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Por que testar é necessário? 6 Para assegurar que as necessidades dos usuários estejam sendo atendidas. Porque é provável que o software possua defeitos. Desenvolvedor já alocado para outro projeto teria que resolver muitos bugs de projetos anteriores em produção. Porque falhas podem custar muito caro. Para avaliar a qualidade do software. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Erro, Defeito e Falha 7 Erro: é uma ação humana que produz um resultado incorreto. Defeito: A manifestação de um erro no software. Também conhecido como Bug Falha: quando o sistema se comporta de forma inesperada devido ao defeito. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Erro, Defeito e Falha 8 Uma pessoa comete um erro... ...que cria um defeito no software... Anne Caroline O. Rocha – Tester Certified – NTI|UFPB ...que pode causar uma falha na operação. Conceitos Básicos de Teste 9 Artefatos de Teste • todo o conjunto de documentação gerado pelo processo de teste de software. Caso de Teste • é composto por um conjunto de entradas, por passos de execução e um resultado esperado. Roteiro de Teste • É composto por um conjunto de casos de teste definidos para uma determinada especificação. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Conceitos Básicos de Teste 10 Requisitos Testar Bug • regras de negócio do sistema. • descobrir falhas através da execução do sistema. • é um defeito encontrado no sistema em execução. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Confiabilidade do Software 11 Confiabilidade do Software é a probabilidade que o software não causará uma falha no sistema por um tempo especificado, sob condições determinadas. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Confiabilidade do Software 12 60 50 40 30 Nº de Bugs 20 10 0 Versão 1 Versão 2 Versão 3 Versão 4 Versão 5 Versão 6 Anne Caroline O. Rocha – Tester Certified – NTI|UFPB O custo de um defeito 13 O custo da correção de um defeito tende a ser cada vez maior quanto mais tarde ele for descoberto. [Myres, 2004] Anne Caroline O. Rocha – Tester Certified – NTI|UFPB O custo de um defeito 14 1000 900 800 700 600 500 400 300 200 100 0 Custo de Correção Fonte: Myres, 2004 Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Desastres causados por erros em softwares 15 Em 1996 - Um software com uma exceção não tratada foi responsável pela explosão do foguete Ariane-5, quando a 40 seg após a iniciação da seqüência de vôo, o foguete se desviou de sua rota, partiu e explodiu, tendo um prejuízo de 500 milhões de dólares. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Desastres causados por erros em softwares 16 Em 2000 - Erro de cálculo no sistema de radioterapia, que era utilizado para controlar a emissão de radiação em tratamentos de câncer matou 8 pessoas e causou queimaduras graves em outras 20. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Mitos sobre os Testes 17 O testador é inimigo do desenvolvedor. Os testadores devem ser os desenvolvedores menos qualificados. O sistema está pronto quando o desenvolvedor termina de codificar. Um programador consegue testar eficientemente o próprio código. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Tipos de Teste de Software 18 Testes de Caixa-Branca (Estrutural) Testes de Unidade Teste de Integração Testes de Caixa-Preta (Funcional) Testes Funcionais Testes de Aceitação Testes Exploratórios Testes de Caixa-Cinza Testes de Regressão Testes de Cobertura Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 19 Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 20 Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 21 Testes de Unidade Teste estrutural ou Caixa-branca Teste realizado em uma unidade ou componente para verificar sua corretude Ex.: Teste para uma classe ou métodos do sistema. Realizado pelo desenvolvedor que codificou o componente Para Java, existe a ferramenta JUnit Realizado de forma automática Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 22 Exemplo de Teste de Unidade Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 23 Testes de Integração Teste estrutural ou Caixa-branca Tem a finalidade de verificar se ao juntar vários componentes do sistema, se eles se comunicam corretamente. A interface entre as unidades é testada Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 24 Testes de Integração Realizado pelos desenvolvedores ou analistas de sistema para testar um módulo do sistema. Utiliza ‘Stubs’ para simular módulos que ainda não foram implementados, mas que se comunicam com o módulo a ser testado. Realizado de forma automática Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 25 Testes de Sistema Teste funcional ou Caixa-preta Tem por objetivo verificar se o sistema está em conformidade com a especificação de requisitos Realizado pelo testador, o qual tem acesso apenas a interface do sistema. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 26 Testes de Sistema O testador não faz parte da equipe de desenvolvimento. Os testes geralmente são baseados em roteiros de teste criados a partir da especificação. Pode ser realizado de forma manual ou automática. Existe várias ferramentas, como: Selenium, Watir, Badboy etc Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 27 Testes de Aceitação Teste funcional ou Caixa-preta Tem por objetivo verificar se o sistema está em conformidade com os requisitos esperados pelo cliente Realizado pelo cliente ou pelo testador, desde que este possua um checklist feito pelo cliente do que é esperado que haja no sistema. Realizado no ambiente de homologação Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Níveis de Teste de Software 28 Testes de Aceitação O sistema é utilizado para capacitação dos usuários de forma que eles validem todos os requisitos do sistema Realizado de forma manual ou automática Existe a ferramenta EasyAccept. Teste realizado pelo usuário pode ser: Teste Alfa: em um ambiente de homologação. Teste Beta: em um ambiente de produção. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Tipos de Teste de Software 29 Testes Exploratórios Teste funcional ou Caixa-preta Realizado por testadores com experiência Quando não há muita documentação sobre o sistema Realizado de forma manual Os defeitos encontrados são reportados à medida que eles ocorrem Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Tipos de Teste de Software 30 Testes de Regressão Teste funcional ou estrutural Caixa-cinza À medida que uma nova versão do sistema é liberada, novos bugs podem ser incluídos no sistema Tem a finalidade de realizar novamente testes em um sistema já testado Realizado pelo testador Pode ser realizado de forma manual ou automática Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Tipos de Teste de Software 31 Testes de Cobertura Teste funcional ou estrutural Caixa-cinza Estrutural: Tem a finalidade de identificar se os testes realizados no sistema abrangem pelo menos 95% do código produzido. Funcional: Os roteiros de teste abrangem 100% das funcionalidades do sistema, ou seja, possui pelo menos 1 caso de teste para cada regra de negócio. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Testes Funcionais x Testes de Unidade 32 Funcionais Unitário Teste de Caixa-Preta Teste de Caixa-Branca Manual ou Automático Automático Testador diferente do Desenvolvedor faz os testes desenvolvedor faz os testes Testador acessa o sistema via interface do usuário Testes verificam se o sistema faz o que deve fazer e não faz o que não deve fazer Testador tem acesso ao código Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Testes verificam a corretude de cada unidade (método, classe) de forma independente A Equipe de Testes 33 Gerente de teste Lidera a equipe de teste. Comunicação entre a equipe de teste e de desenvolvimento. Planeja os testes, define estratégias, etc. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB A Equipe de Testes 34 Arquiteto de teste Conhece os requisitos do sistema. Elabora os roteiros de teste. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB A Equipe de Testes 35 Testador É criativo ao executar os testes. Tem noções de programação. É objetivo ao descrever um erro. É perfeccionista. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB O Testador 36 1. Não deve testar seu próprio programa. 2. Não deve duvidar que um erro existe. 3. Deve ter cuidado para não reportar falsos bugs. 4. O testador não é inimigo do desenvolvedor. 5. O testador deve saber se comunicar com o desenvolvedor. 6. Os bugs descritos por ele devem ser baseados em fatos. 7. Um bom testador é aquele que encontra muitos bugs! Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Processo de Testes x Processo de Desenvolvimento 37 Processo de Desenvolvimento Design Desenvolvimento Sistema Execução dos Testes Requisitos Planejamento Elaboração Roteiro de Teste Processo de Testes Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Roteiro Relatório de Defeitos Produção Quando usar ferramentas de teste de software? 38 Quando há apenas 1 testador para o projeto Deve realizar apenas testes manuais. Não há necessidade de ferramentas para criar os roteiros de teste. Ferramenta apenas para reportar os defeitos. (Redmine) Quando há uma equipe de teste Ferramenta para gerenciar a equipe. (Redmine) Ferramenta para criar os roteiros de teste. (TestLink) Ferramenta para reportar e gerenciar os defeitos. (Redmine) Automatizar os testes para auxiliar nos testes de regressão. (Selenium) Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Quando os testes devem ser automatizados? 39 Frequência de execução dos testes. As funcionalidades são testadas mais de uma vez. Baixo esforço para automatizar (equipe experiente). Ferramentas de automação relevantes para a realidade do projeto. Dificuldade de executar os testes manualmente. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Implantando Testes de Software 40 Montar uma equipe de teste. O tamanho da equipe depende da quantidade de projetos a serem testados. Qualificar a equipe de testes com treinamentos. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Implantando Testes de Software 41 Quando a equipe de teste é pequena e precisa testar 2 projetos. Então, deve-se planejar a entrega de cada projeto em datas diferentes. Correção de Bugs Desenvolvimento Produção A Roteiro de Teste Execução dos Testes Re-execução dos Testes Correção de Bugs Desenvolvimento B Roteiro de Teste 15 dias Execução dos testes Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Produção Re-execução dos testes Implantando Testes de Software 42 Iniciar com testes manuais. Usar ferramenta para gerenciar os defeitos [Redmine] e para gerenciar os testes [TestLink]. Redmine Anne Caroline O. Rocha – Tester Certified – NTI|UFPB TestLink Implantando Testes de Software 43 Sistemas devem possuir uma especificação básica necessária para criar os roteiros de teste e um protótipo de cada tela. Os protótipos de tela devem ser validados pelo cliente antes do início do desenvolvimento. Especificação Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Protótipo Considerações Finais 44 Software com testes melhoram a credibilidade do setor de informática Usuário mais satisfeito Desenvolvedor perderá menos tempo resolvendo bugs de sistemas em produção, enquanto está alocado em outro projeto Desenvolvedor mais satisfeito e motivado Sistema só deve ser colocado em produção após aprovação da equipe de testes. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Considerações Finais 45 A equipe de teste é parte da equipe de desenvolvimento. Cronogramas devem levar em consideração os testes. Processo de Teste deve ser integrado ao processo de desenvolvimento Testar reduz riscos do negócio Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 46 1. Indique se é verdadeiro ou falso: A. ( ) O testes devem ser realizados para mostrar a ausência de defeitos. B. ( ) Caixa branca são testes baseados em um exame rigoroso do detalhe estrutural. Caminhos lógicos e colaborações entre componentes são testadas. C. ( ) O processo de teste deve ser independente do processo de desenvolvimento, porém integrado. D. ( ) A equipe de testes pode ser formada por desenvolvedores menos qualificados. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 47 1. Indique se é verdadeiro ou falso: A. ( F ) O testes devem ser realizados para mostrar a ausência de defeitos. B. ( V ) Caixa branca são testes baseados em um exame rigoroso do detalhe procedimental. Caminhos lógicos e colaborações entre componentes são testadas. C. ( V ) O processo de teste deve ser independente do processo de desenvolvimento, porém integrado. D. ( F ) A equipe de testes pode ser formada por desenvolvedores menos qualificados. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 48 2. A MELHOR definição do objetivo do teste de aceitação é: A. Garantir que o software entre sem erros na produção B. Garantir que o grupo de testes fez um bom trabalho C. Executar um teste funcional D. Garantir que o software esteja fazendo exatamente aquilo que foi solicitado nos requisitos de negócio Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 49 2. A MELHOR definição do objetivo do teste de aceitação é: A. Garantir que o software entre sem erros na produção B. Garantir que o grupo de testes fez um bom trabalho C. Executar um teste funcional D. Garantir que o software esteja fazendo exatamente aquilo que foi solicitado nos requisitos de negócio Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 50 3. Cite alguns motivos que levam as empresas a cada vez mais “testar” os softwares em desenvolvimento, antes de entregá-los aos clientes. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 51 Cite alguns motivos que levam as empresas a cada vez mais “testar” os softwares em desenvolvimento, antes de entregá-los aos clientes. 3. O teste de software tem servido como estratégia para as empresas se manterem no mercado, visto que: reduzem custos ao final do projeto; clientes mais satisfeitos com o produto; aumentam as chances da empresa ser contratada para novos projetos previne e reduz o retrabalho do desenvolvimento. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 52 4. Cite três requisitos mínimos da qualidade, conforme a Norma ISO 9126. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 53 Cite três requisitos mínimos da qualidade, conforme a Norma ISO 9126. 4. São 6 requisitos no total: Funcionalidade Confiabilidade Usabilidade Eficiência Manutenibilidade Portabilidade Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 54 5. Um processo de teste completo requer alguns níveis de teste essenciais para que a qualidade do software a ser entregue passe por um controle adequado. Cite quais são os níveis de teste para controlar a qualidade de um software. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 55 Um processo de teste completo requer alguns níveis de teste essenciais para que a qualidade do software a ser entregue passe por um controle adequado. Cite quais são os níveis de teste para controlar a qualidade de um software. 5. São 4 níveis de teste: Teste de unidade Teste de integração Teste de Sistema Teste de Aceitação Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 56 6. A quem cabe a responsabilidade pela execução do teste unitário, e quais os seus principais objetos-alvo? Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 57 A quem cabe a responsabilidade pela execução do teste unitário, e quais os seus principais objetos-alvo? 6. O desenvolvedor que fez o código a ser testado. Os principais objetos-alvo são os componentes, as classes e os métodos do sistema. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 58 7. Explique qual a finalidade do Teste de Sistema, e de quem é a responsabilidade por sua execução. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 59 Explique qual a finalidade do Teste de Sistema, e de quem é a responsabilidade por sua execução. 7. Tem a finalidade de verificar se o sistema está em conformidade com a especificação de requisitos Quem executa é um testador que faz parte da equipe de testes Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 60 8. Supondo que nosso produto em desenvolvimento seja uma rede social. Após finalizar o desenvolvimento das funcionalidades e efetuados os testes funcionais e estruturais, qual teste seria apropriado para obter uma pré-avaliação do usuário final? Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Exercícios 61 Supondo que nosso produto em desenvolvimento seja uma rede social. Após finalizar o desenvolvimento das funcionalidades e efetuados os testes funcionais e estruturais, qual teste seria apropriado para obter uma pré-avaliação do usuário final? 8. O teste Alfa neste caso seria essencial, visto que um pequeno grupo de usuários utilizaria o aplicativo em ambiente de homologação, expondo suas críticas a respeito do software, o que certamente contribuiria para o sistema, principalmente em questões de usabilidade. Usabilidade nem sempre é o foco da equipe de testes. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB Referências 62 [AllBusiness] AllBusiness - Site: http://www.allbusiness.com/technology/computer software/210053-1.html Acessado em Maio/2011. [Delamaro, 2007] Delamaro, M., Maldonado, J. C., Jino, M. “Introdução ao Teste de Software”. Ed. Elsevier, Rio de Janeiro, 2007. [Dijkstra, 1972] Dijkstra, E. W. "The Humble Programmer". Communications of the ACM 15 (10): 859–866, 1972. [GTSW] Grupo de Testadores de Software - http://gtsw.blogspot.com Acessado em Maio/2011. [Molinari, 2008] Molinari, L. “Testes Funcionais de Software”. Ed. Visual Books. Florianópolis, 2008. [Myres, 2004] Myres , G. F. “The Art of Software Testing”. Ed. John Wiley & Sons, Inc. New Jersey, 2004. Anne Caroline O. Rocha – Tester Certified – NTI|UFPB