Visão de Testes de Software segundo o SWEBOK

6,151 views
5,934 views

Published on

Trabalho apresentado no MBA de Gestão da Qualidade de SW com ênfase em CMMI e MPS.BR

Published in: Business, Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,151
On SlideShare
0
From Embeds
0
Number of Embeds
118
Actions
Shares
0
Downloads
207
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Visão de Testes de Software segundo o SWEBOK

  1. 1. <ul><li>MBA Gestão da Qualidade em Software com ênfase em CMMI e MPS.BR </li></ul><ul><li>Visão de Testes de Software segundo o SWEBOK </li></ul><ul><li>12/2009 </li></ul>PÓS-GRADUAÇÃO
  2. 2. <ul><li>1. Introdução </li></ul><ul><li>2. Área de Conhecimento – Teste de Software </li></ul><ul><li>3. Fundamentos de Teste de Software </li></ul><ul><li>4. Níveis de Teste de Software </li></ul><ul><li>5. Objetivos de Teste de Software </li></ul><ul><li>6. Técnicas de Teste de Software </li></ul><ul><li>7. Medidas de Teste de Software </li></ul><ul><li>8. Processo de Teste de Software </li></ul><ul><li>9. Referências </li></ul>Sumário
  3. 3. <ul><li>SWEBOK, documento desenvolvido pelo IEEE com a finalidade de servir de referência em assuntos pertinentes a área de Engenharia de Software. </li></ul><ul><li>Segundo o SWEBOK, Teste de Software é uma disciplina de engenharia de software que trata da avaliação da qualidade do produto e da identificação de defeitos e problemas. </li></ul><ul><li>Consiste na verificação do comportamento de um programa em um </li></ul><ul><li>conjunto finito de casos de teste. </li></ul><ul><li>Testar um software significa verificar através de uma execução controlada se o seu comportamento está de acordo com o especificado. </li></ul>1. Introdução
  4. 4. 2. Área de Conhecimento - Teste de Software SWEBOK (2004)
  5. 5. <ul><li>Definições de testes relacionadas à terminologia utilizada de acordo com a norma IEEE Standard 610.12-1990. </li></ul><ul><li>Falha (do inglês fault ): causa do mal funcionamento </li></ul><ul><li>Defeito (do inglês failure ): resultado indesejado </li></ul><ul><li>Erro (do inglês error ): uma ação humana que produz um resultado incorreto </li></ul><ul><li>Questões-Chave </li></ul><ul><li>Teste de seleção / Teste de adequação; </li></ul><ul><li>Teste de eficácia / Teste de objetivos; </li></ul><ul><li>Teste para identificação de defeitos; </li></ul><ul><li>Limitações teóricas e práticas de teste: &quot;testes podem ser usados para encontrar falhas e nunca para mostrar a sua ausência&quot;[Dijkstra] ; </li></ul><ul><li>O problema dos caminhos impraticáveis; </li></ul><ul><li>Testabilidade: grau de facilidade para atender um teste; </li></ul>3. Fundamentos de Teste de Software
  6. 6. 4. Níveis de Teste de Software Teste de Software é usualmente executado em diferentes níveis ao longo do processo de desenvolvimento e manutenção. Os 3 grandes estágios de testes podem ser definidos como: Teste de Unidade: Testa módulos ou funções. Verifica o funcionamento de componentes isolados. Teste de Integração: Testa um grupo de módulos e verifica a interação entre componentes. Teste de Sistema: Verifica o comportamento de todo o sistema, sob o ponto de vista do usuário, normalmente testando requisitos não funcionais (segurança, desempenho, exatidão, e etc.)
  7. 7. 5. Objetivos de Teste de Software O teste é conduzido de acordo com um objetivo específico, pois varia conforme o tipo de software testado. Os objetivos listados abaixo são os mais frequentes citados na Literatura: Teste de aceitação / testes de qualificação: verifica se o sistema se comporta de acordo com os requisitos do cliente; Testes alfa e beta: pessoas que testam pela empresa que desenvolve (teste alfa) e pessoas que testam pelo cliente (teste beta); Testes de conformidade / testes funcionais: validação conforme a especificação; Confiabilidade e avaliação: testa a confiabilidade do sistema; Testes de regressão: reteste do sistema e componentes para verificar se houve efeitos colaterais e visa garantir que o comportamento original não foi modificado; Testes de desempenho: verifica se os requisitos de desempenho do sistema foram atendidos, ex: capacidade e tempo de resposta; Testes de estresse: testa as condições limite ou fora da tolerância esperada pelo sistema; Testes de usabilidade: testa o quanto é fácil aprender e utilizar o software.
  8. 8. <ul><li>É difícil encontrar uma única definição para classificar todas as técnicas de software. </li></ul><ul><li>As definições normalmente utilizadas são: </li></ul><ul><li>Baseada na intuição e experiência do engenheiro de software: </li></ul><ul><li>teste ad hoc e teste exploratório; </li></ul><ul><li>Baseada na especificação técnica : equivalência de particionamento, análise de valores limites, tabela de decisão, especificações formais, testes aleatórios, etc.; </li></ul><ul><li>Baseada no código : baseado em controle de fluxo, baseado no fluxo de dados e referência para modelos; </li></ul><ul><li>Baseada em falhas : adivinhar erros e teste de mutação (Um mutante é uma versão ligeiramente modificada do programa em teste, diferindo do original por uma pequena mudança sintática); </li></ul><ul><li>Baseada no uso : perfil operacional e confiabilidade; </li></ul><ul><li>Baseada na natureza da aplicação: ex: Sistema OO, Web-based e Sistema em tempo real; </li></ul><ul><li>Seleção e combinação : funcional e estrutural, determinística e aleatória; </li></ul>6. Técnicas de Teste de Software
  9. 9. <ul><li>Medidas ou métricas de software são usualmente consideradas instrumentos de um teste de qualidade. As métricas podem ajudar a otimizar o planejamento e a execução dos testes. </li></ul><ul><li>Avaliação do programa em teste </li></ul><ul><li>Métricas para ajudar no planejamento e projeto de testes: medidas baseadas no tamanho do software, quantidade de pontos de função e na complexidade. </li></ul><ul><li>Tipos de falhas, classificação e estatística: conhecer quais os tipos de falhas que o software pode apresentar e com qual frequência estas falhas ocorreram no passado. </li></ul><ul><li>Densidade de falha: classificar as falhas encontradas pelo tipo e medir a relação entre número de falhas versus tamanho do código. </li></ul><ul><li>Teste de vida, avaliação da confiabilidade: uma estimativa utilizada para avaliar um produto e decidir quando se pode parar o teste. </li></ul><ul><li>Modelos de crescimento de confiabilidade: este modelo indica que, com o tempo, os defeitos que geraram as falhas observadas foram corrigidos e a confiabilidade do software vai aumentando. </li></ul>7. Medidas de Teste de Software
  10. 10. <ul><li>Avaliação dos testes realizados </li></ul><ul><li>Medidas de cobertura/eficácia: medir a relação entre elementos testados (casos de teste) e o número total de testes que poderiam ser executados. </li></ul><ul><li>Falha de semeadura: inserção de pequenas falhas no software antes do teste a fim de descobrir falhas maiores. </li></ul><ul><li>Comparação e eficácia relativa de diferentes técnicas: vários estudos são realizados para comparar a eficácia destas diferentes técnicas. </li></ul><ul><li>Mas o que significa eficácia? </li></ul><ul><li>Algumas definições: número de testes necessários para encontrar a primeira falha; a relação entre o número de falhas encontradas durante os testes e o número total de falhas encontradas durante e depois dos testes; o quanto aumentou a confiabilidade deste software. </li></ul><ul><li>Baseadas nestas definições devem ser efetuadas comparações entre as diversas técnicas. </li></ul>7. Medidas de Teste de Software
  11. 11. <ul><li>Conceitos, estratégias, técnicas e medidas necessárias para integrar dentro de um processo de definição e controle que será executado por pessoas. </li></ul><ul><li>Atitudes de programação: Um importante componente de sucesso do teste é a atitude colaborativa sobre o teste e as atividades de garantia da qualidade. </li></ul><ul><li>Guias de teste: As fases de teste podem ser guiadas por vários objetivos, ex: testes baseados no risco, teste baseado no cenário. </li></ul><ul><li>Teste de processo de gestão: Atividades de teste realizadas em diferentes níveis devem ser organizadas juntamente com pessoas, ferramentas, políticas e medidas, em um processo bem definido que é parte integrante do ciclo de vida. </li></ul><ul><li>Teste de documentação e produto de trabalho: A documentação é uma parte integrante da formalização do processo de teste. </li></ul><ul><li>Equipe de teste interna e independente: A equipe de testes pode ser composta por membros internos (ou seja, a equipe do projeto, envolvida ou não no desenvolvimento do software), dos membros externos, que podem trazer uma informação imparcial e uma perspectiva independente, ou, finalmente, uma mescla de membros internos e externos. </li></ul>8. Processo de Teste de Software
  12. 12. Estimativa de custo/esforço e outras medidas de processo: Várias medidas relacionadas com os recursos gastos durante a fase de teste, bem como a efetividade de encontrar falhas nas várias fases de teste, são utilizadas pelos gestores para controlar e melhorar o processo de teste. Conclusão: A decisão deve ser tomada a respeito de quanto o teste é bastante e quando uma fase de teste pode ser encerrada. Teste de reuso e padrões de teste: Para realizar testes ou manutenção de uma forma organizada e rentável, os meios utilizados para testar cada parte do software devem ser reutilizados de forma sistemática.
  13. 13. <ul><li>SWEBOK 2004, Guide for the Software Engineering Body of Knowledge , 2004 version, IEEE Computer Society, California, EUA. </li></ul><ul><li>IEEE, IEEE Standard Glossary of Software Engineering Terminology – IEEE Std 610.12-1990, 1990, IEEE, New York, EUA. </li></ul><ul><li>TELES, Ronneesley Moura, SWEBOK – Capítulo 5 , 2009, Goiânia, Brasil. </li></ul>9. Referências
  14. 14. <ul><li>Obrigado! </li></ul>

×