2. Gestão de Testes de Software Conceituação de Testes de Software Metodologia de Testes de Software 1 2 3 4 Temas abordados Planejamento de Testes 5 Técnicas de Testes de Software Porque ocorrem falhas?
3. TESTE DE SOFTWARE O teste do software é uma das fases do processo de engenharia de software que visa atingir um nível de qualidade de produto superior. O objetivo é mesmo o de encontrar defeitos no produto, para que estes possam ser corrigidos pela equipe de programadores , antes da entrega final. A maioria das pessoas pensa que o teste de software serve para demonstrar o correto funcionamento de um programa, quando na verdade ele é utilizado como um processo da engenharia de software para encontrar defeitos . Definindo Teste de Software
4. TESTE DE SOFTWARE O conceito de teste de software pode ser compreendido através de uma visão intuitiva ou mesmo de uma maneira formal. Existem atualmente várias definições para esse conceito. De uma forma simples, testar um software significa verificar através de uma execução controlada se o seu comportamento ocorre de acordo com o especificado . O objetivo principal desta tarefa é encontrar o número máximo de erros dispondo do mínimo de esforço , ou seja, mostrar aos que desenvolvem se os resultados estão ou não de acordo com os padrões estabelecidos. Definindo Teste de Software
5. Em uma situação ideal, nós como programadores, partindo do princípio que somos bons no que fazemos, poderíamos garantir que todos os programas funcionariam corretamente. Infelizmente esta não é a realidade. Isso porque os programas possuem um grande número de estados com fórmulas complexas, atividades e algoritmos. O tamanho do projeto a ser desenvolvido e a quantidade de pessoas envolvidas no processo aumentam ainda mais a complexidade. Assim, a presença de falhas é inevitável. Mas o que significa dizer que um programa falhou? Definindo Teste de Software
6.
7.
8.
9. CAIXA PRETA - Neste tipo de teste de software o desenvolvedor dos testes não possui acesso algum ao código fonte do programa . CAIXA BRANCA - Dentro desta categoria de teste de software o desenvolvedor tem acesso ao código fonte da aplicação e pode construir códigos para efetuar LINKER de componentes . Técnicas popularizadas pelo mercado de software Caixa Preta Caixa Branca Caixa Branca Caixa Cinza Caixa Cinza Abaixo estão as três técnicas mais conhecidas CAIXA CINZA - Uma definição deste tipo de teste seria um ponto de equilíbrio virtual entre o teste de caixa-branca e o caixa-preta. . Técnicas de Teste de Software
10. Caixa-Branca (White Box) Este tipo de teste é desenvolvido analisando-se o código fonte e elaborando-se casos de teste que cubram todas as possibilidades do programa . Dessa maneira, todas as variações originadas por estruturas de condições são testadas. Um exemplo bem prático deste teste é o JUnit para desenvolvimento com a linguagem Java e para a linguagem .NET o Project Analyzer . Técnicas de Teste de Software
11.
12. Caixa-Cinza (Gray Box) Esta técnica aparece com muitas interpretações na literatura de testes. De uma maneira mais clara, o desenvolvedor dos testes não tem acesso ao código fonte da aplicação, porém tem conhecimento dos algoritmos que foram implementados, como também pode efetuar manipulações em arquivos de entrada e saída do tipo XML ou mesmo acessos ao banco de dados da aplicação para simples conferência de dados ou alteração de parâmetros considerados nos casos de teste. Outros autores definem caixa-cinza como o teste de integração , onde você vê o sistema até o nível de módulo, mas não pode ver no interior dos módulos . Ainda é possível encontrar a definição de caixa-cinza como um teste onde algumas partes estão disponíveis como caixa-branca e outras como caixa-preta. Técnicas de Teste de Software
13. Testes Alpha (Alpha Test) No processo de desenvolvimento, os testes preferencialmente devem ser executados antes do produto ser disponibilizado aos usuários. Esse período entre o término do desenvolvimento e da entrega é conhecido como fase alpha e os testes executados nesse período como testes alpha. No início dos testes da fase alpha são utilizadas técnicas de caixa-branca . Posteriormente, os desenvolvedores dos testes aplicam técnicas de caixa-preta como complemento da primeira parte de testes. Fases de Teste de Software
14. Testes Beta (Beta Test) Completada a fase alpha de testes, são lançadas a grupos restritos de usuários versões de teste do sistema , denominadas versões beta. Conseqüentemente este período fica denominado como Fase Beta Fases de Teste de Software
15. Testes Beta (Beta Test) Através deste tipo de teste os usuários finais do produto podem encontrar defeitos peculiares de tarefas costumeiramente executadas por eles. Visando um maior retorno de informações sobre o mau funcionamento do sistema algumas empresas distribuem as versões betas para todo o universo de utilizadores. Paralelamente podem ser executados testes de caixa-preta durante essa fase, dando assim maior eficiência no processo. Fases de Teste de Software
16. Versões Candidatas (Release Candidates) Ultimamente, e principalmente na comunidade de software livre, é comum utilizar o termo release candidate para indicar uma versão que é candidata a ser a versão final , em função da quantidade de erros encontradas. As RC, como são chamadas, são um passo além do teste beta , sendo divulgadas para toda a comunidade. Fases de Teste de Software
18. Teste de Unidade Também conhecido como teste unitário . É um tipo de atividade que visa testar pequenas partes ou unidades do sistema. O universo alvo desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas de funcionamento dentro de uma pequena parte do sistema funcionando independentemente do todo . Categorias de Teste de Software
19.
20.
21. Teste de Sistema Este é um teste de grande importância. Sua principal filosofia é varrer o sistema em busca de falhas através da utilização do mesmo, como se fosse um usuário final. Dessa maneira, os testes são executados nos mesmos ambientes , com as mesmas condições e com os mesmos dados de entrada que um usuário utilizaria no seu dia-a-dia de manipulação do sistema. Categorias de Teste de Software
28. Para ilustrar, uma taxa de 15% à 30% de defeitos a cada mil linhas de código é considerada aceitável para a indústria de TI, ou seja, todos os softwares têm defeitos, entretanto, os softwares realmente bons têm poucos defeitos críticos não corrigidos; promovendo assim um ambiente mais estável no ponto de vista do usuário final. O processo de desenvolvimento de software, por mais maduro que seja, ajuda apenas a reduzir a introdução de defeitos ; contudo os processos também não são perfeitos. Mesmo os bons softwares, são repletos de defeitos. “ Porque não existe software perfeito” Por que Testamos Software?
29. A arquitetura e o desenvolvimento de software são atividades tão peculiares, tão dependentes da criatividade e da natureza imprevisível dos seres humanos que, às vezes, o processo aplicado com sucesso em certo projeto, provavelmente será um completo fracasso em outro projeto. Quem nunca viveu essa situação tão comum? “ Porque não existe software perfeito” Por que Testamos Software?
30. BUG é uma palavra genérica para representar qualquer classe de defeito. Esse termo foi introduzido quando os primeiros computadores, que eram feitos de válvulas, apresentavam algum tipo de problema inexplicável. Os engenheiros vasculhavam o interior do computador e, às vezes, descobriam que a origem dos problemas eram causados por insetos de verdade. O Bad Boy dos testes
31.
32.
33. Bottom-up Testing Nesse tipo de teste cada módulo ou componente é testado individualmente e, pouco a pouco, os demais componentes são combinados e testados. Em alguns casos simuladores são utilizados no lugar dos componentes reais para substituírem alguns componentes que são necessários, porém não estão disponíveis ainda. Black Box Testing Nessa estratégia, os testes são executados por meio do fornecimento de dados de entrada ao componente sendo testado e pela análise do resultado produzido, no entanto, sem entender ou verificar o processo que produziu o resultado. Entenda o significado
34. Configuration Testing Nessa categoria de testes, os testes são executados contra todos os ambientes (hardware e software) suportados. A idéia é manter uma matriz contendo as plataformas/ambientes suportadas e o status da execução dos testes contra essas plataformas/ambientes. COQ - Cost of Quality Custo gasto em atividades relacionadas ao processo de garantia de qualidade. O COQ inclui o custo de prevenção, medição, correção, materiais, equipamentos, etc. Debug Processo onde o desenvolvedor depura o programa a fim identificar a causa de um defeito. Veja Também Bug. Entenda o significado
35. End-to-End Testing Nessa categoria de teste, os testes contemplam cenários onde a aplicação ou determinado módulo da aplicação é testado do começo ao fim. Veja também Integration Test e Top-Down Testing. Integration Testing Neste cenário os diversos sistemas que compõem uma solução de software são combinados e configurados num ambiente semelhante ao ambiente onde serão usados na vida real Dessa forma conseguimos testar o fluxo das operações do começo ao fim do ponto de vista do usuário final. Também conhecido como System Test. . Entenda o significado
36. Load Testing Essa categoria de teste tem a função de aplicar uma carga de operações ou transações simultâneas contra a aplicação a fim de conferir se a aplicação atende os requisitos de performance ou resposta. Esse tipo de teste também é conhecido como Performance Testing. Pass/Fail Criteria Comparação com o resultado esperado de um Test Case a fim de determinar se o teste passou ou falhou. Recovery Test Classe de testes cuja principal função é avaliar como a aplicação lida com problemas inesperados e desastres. Entenda o significado
37. Regression Test Essa abordagem tem a função de garantir que os módulos ou componentes da aplicação que não foram modificadas ainda funcionam corretamente após o programador modificar alguma outra parte da aplicação. Test Case Conjunto de passos que descrevem um cenário de teste bem definido cuja principal função é comparar as respostas dos estímulos gerados pelos passos com um resultado esperado. Test Plan Indica um documento que descreve o escopo das atividades de teste, a abordagem, os recursos humanos envolvidos, os módulos que serão testados, o schedule, riscos, etc. Entenda o significado
38. Test Suite Indica um conjunto de Teste Cases que são agrupados por algum tipo de atributo em comum. Test Automation Categoria de teste onde os testes são automatizados por meio da utilização de ferramentas e frameworks especializados para esse tipo de função. Test Coverage Indica o percentual de tudo o que pode ser testado em relação ao que foi testado até agora. Top-Down Testing Nessa categoria de teste, a aplicação é testada como um todo do início ao fim do ponto de vista do usuário final. Ou seja, o sistema é compilado completamente e o testador executa os Test Cases simulando situações de uso reais. Entenda o significado
39. UAT - User Acceptance Test ou Integration Testing Conjunto de testes conduzido de forma garanta que o software atinge as necessidades do usuário final por meio da execução de cenários e dados de testes reais. Verification Em resumo, o processo de Verification garante que o software está sendo desenvolvido conforme os padrões e processos definidos pela organização. Validation Basicamente, o processo de Validation garante que o sistema está sendo escrito conforme o que está definido nos requisitos a fim de garantir que o software está sendo desenvolvido para atender as necessidades do cliente. Entenda o significado
40.
41. As Técnicas de Teste mais populares são? TESTE ESTRUTURAL (Caixa Branca) Técnica de teste que adota critérios para a geração dos casos de teste com a finalidade de identificar defeitos nas estruturas internas do software , através de situações que exercitem adequadamente todas as estruturas utilizadas na codificação TESTE FUNCIONAL (Caixa Preta) Técnica de teste que adota critérios para a geração dos casos de teste com a finalidade de garantir os requisitos funcionais do software que foi construído sejam plenamente atendidos. Fixando a Técnica de Teste