SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
ENGENHARIA DE
SOFTWARE
TESTE DE SOFTWARE
André Neri
Jander Cerqueira
Agenda
• Introdução
• Fases Fundamentais e Metas dos Testes de Software
• Tipos de Testes
• Projeto de Casos de Testes
2
Através deste vídeo iremos mostrar a necessidade do processo de teste de software
nos projetos de desenvolvimento de softwares, vamos demostrar as técnicas, tipos,
fases, ferramentas, modelos e normas envolvidas na execução dos testes de software
com o intuito de obter um ótimo nível de qualidade dos softwares gerados.
3
No decorrer do desenvolvimento de um sistema existe uma grande
possibilidade de erros principalmente de falha humana, a fim de detectar e
corrigir esses erros utilizamos os testes, que segundo Pfleeger.. “Teste têm
como foco a detecção de defeitos, e existem muitos meios de tornar mais
eficientes e efetivos os esforços a eles relacionados”.
4
Nos projetos de desenvolvimento de software os testes estão diretamente
relacionados com a qualidade como é citado por Pressman. “A atividade de
teste de software é um elemento crítico da garantia de qualidade de software
e representa a ultima revisão de especificação, projeto e codificação.”
5
Na maioria dos casos os testes de software custa cerca de 40% dos
recursos total do projeto, mas quando se trata de sistemas críticos (por
exemplo, controle de voo, monitoração de reatores nucleares) o custo pode
chegar a cinco vezes mais do que as outras etapas do projeto. Porem nem
todas as empresas dedicam-se a essa etapa adequadamente alegando prazo
curto, custo elevado, falta de profissionais adequados, complexidade do software
e até mesmo a falta de conhecimento dos benefícios dos testes de software.
6
7
Fases Fundamentais e Metas
dos Testes de Software.
Os sistemas são divididos em duas fases de testes, os testes de
componentes, onde são testados em partes e teste de sistema quando o
sistema é completamente testado. O alvo dos testes de componentes é através
dos componentes individuais (funções, objetos ou componentes reusáveis) do
programa localizar defeitos. Já o objetivo do teste de sistema é integrar os
componentes, formando o sistema completo assim verifica se o sistema atende
os requisitos funcionais e não funcionais e se comporta de maneira esperada,
e se alguma imperfeição passar pelo teste de componente poderá ser corrigido
pelo teste de sistema.
8
Os testes de software visam duas metas, a primeira meta é demonstrar ao
desenvolvedor e ao cliente que o software atende aos requisitos demostrando
pelo menos um teste por requisito que esteja na documentação, através de um
conjunto de teste é esperado que o programa seja executado como o
esperado sem nenhum tipo de erro.
9
A outra meta é descobrir falhas ou defeitos no software que apresenta
comportamento incorreto, não desejável ou em não conformidade com sua
especificação onde são removidos os travamentos, interações indesejáveis e
dados corrompidos, essa meta usa o teste de defeitos utilizando casos de
testes para mostrar defeitos. Desta forma a principal meta dos testes de
software é provar para os desenvolvedores e clientes que o programa está
apto para ser utilizado.
10
Tipos de Testes
Como observamos anteriormente os testes são divididos em testes de
componentes e teste de sistemas esses testes contem subdivisões que facilita o
teste em cada etapa do projeto. Vamos iniciar falando sobre as fases do teste
de sistema que possui teste de integração, teste de releases e teste de
desempenho. Depois vamos para as fases dos testes de componentes que
abrange teste de interface.
11
Teste de Integração
Esse teste está ligado à descoberta de defeitos do sistema onde é acessado o
código fonte do sistema e todo problema. encontrado tenta-se localizar a
origem, e identificar os componentes afetados. O teste de integração, verifica se
efetivamente os componentes funcionam, em conjunto, se são chamados
corretamente. e se trocam dados no tempo certo.
12
Teste de Integração
A estratégia de integração top-down, é a criação do esqueleto do sistema, e
depois a adição dos componentes a ele, já a integração bottom-up é a
integração de componentes de infra-estrutura que forneça serviços comuns (ex.:
acesso a rede e ao banco de dados) e depois adicionar os componentes
funcionais. A estratégia mais utilizada é a combinação dessas duas estratégias
anteriores com os componentes de infra-estrutura e funcionais adicionados em
incrementos.
13
Teste de Integração
O principal problema no teste de integração é localização dos erros para facilitar a
descoberta de erros é usada a abordagem incremental para integração e teste do
sistema. Primeiramente tem que integrar uma configuração mínima do sistema e
testar, depois vai adicionando componentes e executando novos testes como é
mostrado na figura acima onde A, B, C e D são componentes e T1, T2, T3, T4 e T5
são os testes.
14
Teste de Releases
Com o propósito de mostrar que o programa atende aos requisitos, o teste de
releases também conhecido como teste de caixa-preta e teste funcional tem o foco na
funcionalidade e não na implementação. Procura encontrar erros nas funções
incorretas ou ausentes, erros de interface, erros nas estruturas de dados, erros de
desempenho e erros de inicialização e finalização.
15
Teste de Releases
O método particionamento de equivalência é utilizado para definir um caso de teste
que encontre classes de erros, para reduzir o numero de casos de teste. Avaliando as
condições de entrada através de um conjunto de estados válido ou inválido conhecido
como classe de equivalência.
16
Teste de Releases
Na imagem a acima ilustra o modelo de teste caixa-preta onde são fornecidas as
entradas para o componente ou sistema e são examinadas as saídas; caso a saída
não for a prevista (Oe) o teste detectou um erro. O intuito é fornecer entradas com alto
índice de falha (Ie) como forçar resultados de cálculos muito grandes ou muito
pequenos, forçar geração de saídas invalidas, repetir a mesma entrada e forçar
entradas que causam overflow dos buffers.
17
Teste de Desempenho
Depois que todos os requisitos funcionais foram testados e todas as funções exigidas
estão funcionando é chegado à hora de começar a fazer os testes não funcionais e
um dos pontos que são bastante exigidos é o desempenho. O teste de desempenho
tem um conjunto de outros testes envolvidos como: testes de estresse, testes de
volume, testes de tempo, testes de ambiente, testes de qualidade, testes de
recuperação e testes de manutenção. 18
Teste de Estresse
Porem o teste de estresse é o mais utilizado, na maioria dos casos os sistemas são
projetados para atender um numero especifico de usuários ou transações o teste de
estresse testa o programa além da carga máxima até que ele falhe, o objetivo desse
teste é verificar qual será o impacto do sistema caso aconteça de ultrapassar o limite
projetado e verificar se vai haver surgimento de novos defeitos depois do limite
atingido. 19
Teste de Interface
Os erros de interfaces dos componentes compostos não podem ser identificados
através de testes de objetos ou componentes individuais sendo encontrado apenas na
interação entre as suas partes.
A figura mostra o processo de teste de interface dando uma visão que o teste
não é realizado nos componentes individuais e sim na interface do componente
composto.
20
Projeto de Casos de Testes.
Projeto de casos de teste é o conjunto de entradas e saídas esperadas, que sejam
utilizados tanto nos testes de sistemas como de componentes. Para realizar o projeto
de casos de teste é escolhida uma característica do sistema que será testado, então
ocorre uma seleção das entradas que vai ser executada no teste, depois verifica se as
saídas correspondem com o esperado. Podemos utilizar basicamente três tipos de
abordagens na elaboração do projeto de casos de testes que são: teste baseado em
requisitos, teste de partições, teste estrutural e o teste de caminho que é uma
estratégia de teste estrutural. 21
Teste Baseado em Requisitos.
Na etapa de requisitos do sistema tem que ser definido que os requisitos devem ser
testáveis, ou seja, os requisitos devem ser escritos com o intuito de ser testados
futuramente para verificar se os requisitos foram atendidos como o solicitado. Portanto
teste baseado em requisitos é o conjunto de teste elaborado para cada requisito
registrado na fase de levantamento, essa técnica é essencial para verificar requisitos
vagos ou ausentes.
22
Teste Baseado em Requisitos.
O teste baseado em requisitos é um teste de validação isto é ele demonstra que o
sistema tem seus requisitos adequadamente implementados.
23
Teste Baseado em Requisitos.
Iremos ver um exemplo prático onde é listado um requisito de um sistema e seus
possíveis testes
24
Teste Baseado em Requisitos.
R1 - O usuário será capaz de procurar todo o conjunto inicial do banco de
dados ou selecionar um subconjunto dele.
Os possíveis testes para esse requisito são:
•Iniciar as buscas de usuário pelos itens cuja presença ou ausência são conhecidas,
quando o conjunto de bancos de dados incluírem um ou mais banco de dados.
•Selecionar mais de um banco de dados de um conjunto de banco de dados e iniciar
as buscas pelos itens cuja presença ou ausência são conhecidas. 25
Teste Baseado em Requisitos.
Concluímos que para cada requisito podem ser feitos vários testes para assegurar que
o requisito foi devidamente concluído.
26
Teste de Partições.
O teste de partições visa identificar todas as partições do sistema ou componentes, e
que as entradas e saídas de casos de testes sejam alocadas dentro dessas partições.
As identificações de partições são feitas por meio de especificações na documentação
ou através da experiência dos projetistas que prevê classes que podem conter valores
de entradas com grande probabilidade de erros.
27
Teste Estrutural.
Também conhecido como teste de caixa-branca, o teste estrutural é uma abordagem
onde os testes são derivados do conhecimento da estrutura e da implementação do
software. Avalia o comportamento interno do componente de software, essa técnica
trabalha diretamente sobre o código fonte do componente de software para avaliar
aspectos tais como: teste de condição, teste de fluxo de dados, teste de ciclos, teste
de caminhos lógicos e códigos nunca executados. O testador tem acesso ao código
fonte da aplicação e pode construir códigos para efetuar a ligação de bibliotecas e
componentes, esta é uma técnica de teste geralmente realizada pelos
desenvolvedores que trabalha diretamente com o código-fonte do sistema.
28
Teste de Caminho.
O teste de caminho tem o objetivo de percorrer cada componente ou o sistema por
completo testando as condições tanto verdadeiras como falsas. O numero de
caminhos é relativamente proporcional ao tamanho do sistema, logo é mais viável a
utilização do teste de caminho na etapa de teste de componentes. O teste faz com
que pelo menos uma vez cada caminho seja executado.
29
Considerações Finais.
Concluímos que o processo de teste de
software faz com que a qualidade, a
credibilidade, a confiança e a competitividade
do software cresçam. Aprendemos também que
os testes estão subdivididos e que a depender
da necessidade podemos utilizar, a combinação
de dois ou mais testes. E que devemos planejar
e deixar uma boa quantidade recursos para
essa etapa do projeto, que em alguns casos
chega ser a etapa mais importante do projeto de
desenvolvimento de um sistema.
30
Referências
SOMMERVILLE, I.; Engenharia de Software. 8ª ed. São Paulo:
Pearson Addison-Wesley, 2007.
PFLEEGER, S. L.; Engenharia de Software: Teoria e Prática. 2ª
ed. São Paulo: Prentice Hall, 2004.
PRESSMAN, R. I.; Engenharia de Software. São Paulo: Pearson
Makron Books, 1995.
31

Mais conteúdo relacionado

Mais procurados

Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareAlexandreBartie
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais okMarcos Morais de Sousa
 
Introdução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareIntrodução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareLucas Amaral
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução Elaine Cecília Gatto
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 

Mais procurados (20)

Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
engenharia-de-requisitos
engenharia-de-requisitosengenharia-de-requisitos
engenharia-de-requisitos
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
 
Introdução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareIntrodução à Gerência de configuração de Software
Introdução à Gerência de configuração de Software
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Destaque

Garantia da Qualidade Mínima
Garantia da Qualidade MínimaGarantia da Qualidade Mínima
Garantia da Qualidade MínimaJoão Júnior
 
Introducao a automação de testes de softwares
Introducao a automação de testes de softwaresIntroducao a automação de testes de softwares
Introducao a automação de testes de softwaresIntellecta
 
Introducao a analise de testes de softwares
Introducao a analise de testes de softwaresIntroducao a analise de testes de softwares
Introducao a analise de testes de softwaresIntellecta
 
2° Workshop de Testes em Uberlândia - Treinamento em testes de software
2° Workshop de Testes em Uberlândia - Treinamento em testes de software2° Workshop de Testes em Uberlândia - Treinamento em testes de software
2° Workshop de Testes em Uberlândia - Treinamento em testes de softwareJoão Júnior
 
Introdução a testes de software
Introdução a testes de softwareIntrodução a testes de software
Introdução a testes de softwareLeonardo Soares
 
Process, design, implementation and evaluation of a mobile collaboration layer
Process, design, implementation and evaluation of a mobile collaboration layerProcess, design, implementation and evaluation of a mobile collaboration layer
Process, design, implementation and evaluation of a mobile collaboration layerMauro Pichiliani
 
Automacao de Testes de Softwares
Automacao de Testes de SoftwaresAutomacao de Testes de Softwares
Automacao de Testes de SoftwaresEduardo Souza
 
Como fazer testes de usabilidade
Como fazer testes de usabilidadeComo fazer testes de usabilidade
Como fazer testes de usabilidadeUTFPR
 

Destaque (8)

Garantia da Qualidade Mínima
Garantia da Qualidade MínimaGarantia da Qualidade Mínima
Garantia da Qualidade Mínima
 
Introducao a automação de testes de softwares
Introducao a automação de testes de softwaresIntroducao a automação de testes de softwares
Introducao a automação de testes de softwares
 
Introducao a analise de testes de softwares
Introducao a analise de testes de softwaresIntroducao a analise de testes de softwares
Introducao a analise de testes de softwares
 
2° Workshop de Testes em Uberlândia - Treinamento em testes de software
2° Workshop de Testes em Uberlândia - Treinamento em testes de software2° Workshop de Testes em Uberlândia - Treinamento em testes de software
2° Workshop de Testes em Uberlândia - Treinamento em testes de software
 
Introdução a testes de software
Introdução a testes de softwareIntrodução a testes de software
Introdução a testes de software
 
Process, design, implementation and evaluation of a mobile collaboration layer
Process, design, implementation and evaluation of a mobile collaboration layerProcess, design, implementation and evaluation of a mobile collaboration layer
Process, design, implementation and evaluation of a mobile collaboration layer
 
Automacao de Testes de Softwares
Automacao de Testes de SoftwaresAutomacao de Testes de Softwares
Automacao de Testes de Softwares
 
Como fazer testes de usabilidade
Como fazer testes de usabilidadeComo fazer testes de usabilidade
Como fazer testes de usabilidade
 

Semelhante a Testes de Software

Verificação, validação e teste de software ágil
Verificação, validação e teste de software ágilVerificação, validação e teste de software ágil
Verificação, validação e teste de software ágilGilberto Gampert
 
Engenharia de software testes
Engenharia de software  testesEngenharia de software  testes
Engenharia de software testesAdilmar Dantas
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfMichaelArrais1
 
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Stanley Araújo
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 

Semelhante a Testes de Software (20)

Mini aula de teste de software
Mini aula de teste de softwareMini aula de teste de software
Mini aula de teste de software
 
Eng de testes
Eng de testesEng de testes
Eng de testes
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Verificação, validação e teste de software ágil
Verificação, validação e teste de software ágilVerificação, validação e teste de software ágil
Verificação, validação e teste de software ágil
 
Slid qualidade de_software
Slid qualidade de_softwareSlid qualidade de_software
Slid qualidade de_software
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Engenharia de software testes
Engenharia de software  testesEngenharia de software  testes
Engenharia de software testes
 
SLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptxSLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptx
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
 
Será que testar é simples?
Será que testar é simples?Será que testar é simples?
Será que testar é simples?
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Eng de testes aula2
Eng de testes   aula2Eng de testes   aula2
Eng de testes aula2
 

Testes de Software

  • 1. ENGENHARIA DE SOFTWARE TESTE DE SOFTWARE André Neri Jander Cerqueira
  • 2. Agenda • Introdução • Fases Fundamentais e Metas dos Testes de Software • Tipos de Testes • Projeto de Casos de Testes 2
  • 3. Através deste vídeo iremos mostrar a necessidade do processo de teste de software nos projetos de desenvolvimento de softwares, vamos demostrar as técnicas, tipos, fases, ferramentas, modelos e normas envolvidas na execução dos testes de software com o intuito de obter um ótimo nível de qualidade dos softwares gerados. 3
  • 4. No decorrer do desenvolvimento de um sistema existe uma grande possibilidade de erros principalmente de falha humana, a fim de detectar e corrigir esses erros utilizamos os testes, que segundo Pfleeger.. “Teste têm como foco a detecção de defeitos, e existem muitos meios de tornar mais eficientes e efetivos os esforços a eles relacionados”. 4
  • 5. Nos projetos de desenvolvimento de software os testes estão diretamente relacionados com a qualidade como é citado por Pressman. “A atividade de teste de software é um elemento crítico da garantia de qualidade de software e representa a ultima revisão de especificação, projeto e codificação.” 5
  • 6. Na maioria dos casos os testes de software custa cerca de 40% dos recursos total do projeto, mas quando se trata de sistemas críticos (por exemplo, controle de voo, monitoração de reatores nucleares) o custo pode chegar a cinco vezes mais do que as outras etapas do projeto. Porem nem todas as empresas dedicam-se a essa etapa adequadamente alegando prazo curto, custo elevado, falta de profissionais adequados, complexidade do software e até mesmo a falta de conhecimento dos benefícios dos testes de software. 6
  • 7. 7 Fases Fundamentais e Metas dos Testes de Software.
  • 8. Os sistemas são divididos em duas fases de testes, os testes de componentes, onde são testados em partes e teste de sistema quando o sistema é completamente testado. O alvo dos testes de componentes é através dos componentes individuais (funções, objetos ou componentes reusáveis) do programa localizar defeitos. Já o objetivo do teste de sistema é integrar os componentes, formando o sistema completo assim verifica se o sistema atende os requisitos funcionais e não funcionais e se comporta de maneira esperada, e se alguma imperfeição passar pelo teste de componente poderá ser corrigido pelo teste de sistema. 8
  • 9. Os testes de software visam duas metas, a primeira meta é demonstrar ao desenvolvedor e ao cliente que o software atende aos requisitos demostrando pelo menos um teste por requisito que esteja na documentação, através de um conjunto de teste é esperado que o programa seja executado como o esperado sem nenhum tipo de erro. 9
  • 10. A outra meta é descobrir falhas ou defeitos no software que apresenta comportamento incorreto, não desejável ou em não conformidade com sua especificação onde são removidos os travamentos, interações indesejáveis e dados corrompidos, essa meta usa o teste de defeitos utilizando casos de testes para mostrar defeitos. Desta forma a principal meta dos testes de software é provar para os desenvolvedores e clientes que o programa está apto para ser utilizado. 10
  • 11. Tipos de Testes Como observamos anteriormente os testes são divididos em testes de componentes e teste de sistemas esses testes contem subdivisões que facilita o teste em cada etapa do projeto. Vamos iniciar falando sobre as fases do teste de sistema que possui teste de integração, teste de releases e teste de desempenho. Depois vamos para as fases dos testes de componentes que abrange teste de interface. 11
  • 12. Teste de Integração Esse teste está ligado à descoberta de defeitos do sistema onde é acessado o código fonte do sistema e todo problema. encontrado tenta-se localizar a origem, e identificar os componentes afetados. O teste de integração, verifica se efetivamente os componentes funcionam, em conjunto, se são chamados corretamente. e se trocam dados no tempo certo. 12
  • 13. Teste de Integração A estratégia de integração top-down, é a criação do esqueleto do sistema, e depois a adição dos componentes a ele, já a integração bottom-up é a integração de componentes de infra-estrutura que forneça serviços comuns (ex.: acesso a rede e ao banco de dados) e depois adicionar os componentes funcionais. A estratégia mais utilizada é a combinação dessas duas estratégias anteriores com os componentes de infra-estrutura e funcionais adicionados em incrementos. 13
  • 14. Teste de Integração O principal problema no teste de integração é localização dos erros para facilitar a descoberta de erros é usada a abordagem incremental para integração e teste do sistema. Primeiramente tem que integrar uma configuração mínima do sistema e testar, depois vai adicionando componentes e executando novos testes como é mostrado na figura acima onde A, B, C e D são componentes e T1, T2, T3, T4 e T5 são os testes. 14
  • 15. Teste de Releases Com o propósito de mostrar que o programa atende aos requisitos, o teste de releases também conhecido como teste de caixa-preta e teste funcional tem o foco na funcionalidade e não na implementação. Procura encontrar erros nas funções incorretas ou ausentes, erros de interface, erros nas estruturas de dados, erros de desempenho e erros de inicialização e finalização. 15
  • 16. Teste de Releases O método particionamento de equivalência é utilizado para definir um caso de teste que encontre classes de erros, para reduzir o numero de casos de teste. Avaliando as condições de entrada através de um conjunto de estados válido ou inválido conhecido como classe de equivalência. 16
  • 17. Teste de Releases Na imagem a acima ilustra o modelo de teste caixa-preta onde são fornecidas as entradas para o componente ou sistema e são examinadas as saídas; caso a saída não for a prevista (Oe) o teste detectou um erro. O intuito é fornecer entradas com alto índice de falha (Ie) como forçar resultados de cálculos muito grandes ou muito pequenos, forçar geração de saídas invalidas, repetir a mesma entrada e forçar entradas que causam overflow dos buffers. 17
  • 18. Teste de Desempenho Depois que todos os requisitos funcionais foram testados e todas as funções exigidas estão funcionando é chegado à hora de começar a fazer os testes não funcionais e um dos pontos que são bastante exigidos é o desempenho. O teste de desempenho tem um conjunto de outros testes envolvidos como: testes de estresse, testes de volume, testes de tempo, testes de ambiente, testes de qualidade, testes de recuperação e testes de manutenção. 18
  • 19. Teste de Estresse Porem o teste de estresse é o mais utilizado, na maioria dos casos os sistemas são projetados para atender um numero especifico de usuários ou transações o teste de estresse testa o programa além da carga máxima até que ele falhe, o objetivo desse teste é verificar qual será o impacto do sistema caso aconteça de ultrapassar o limite projetado e verificar se vai haver surgimento de novos defeitos depois do limite atingido. 19
  • 20. Teste de Interface Os erros de interfaces dos componentes compostos não podem ser identificados através de testes de objetos ou componentes individuais sendo encontrado apenas na interação entre as suas partes. A figura mostra o processo de teste de interface dando uma visão que o teste não é realizado nos componentes individuais e sim na interface do componente composto. 20
  • 21. Projeto de Casos de Testes. Projeto de casos de teste é o conjunto de entradas e saídas esperadas, que sejam utilizados tanto nos testes de sistemas como de componentes. Para realizar o projeto de casos de teste é escolhida uma característica do sistema que será testado, então ocorre uma seleção das entradas que vai ser executada no teste, depois verifica se as saídas correspondem com o esperado. Podemos utilizar basicamente três tipos de abordagens na elaboração do projeto de casos de testes que são: teste baseado em requisitos, teste de partições, teste estrutural e o teste de caminho que é uma estratégia de teste estrutural. 21
  • 22. Teste Baseado em Requisitos. Na etapa de requisitos do sistema tem que ser definido que os requisitos devem ser testáveis, ou seja, os requisitos devem ser escritos com o intuito de ser testados futuramente para verificar se os requisitos foram atendidos como o solicitado. Portanto teste baseado em requisitos é o conjunto de teste elaborado para cada requisito registrado na fase de levantamento, essa técnica é essencial para verificar requisitos vagos ou ausentes. 22
  • 23. Teste Baseado em Requisitos. O teste baseado em requisitos é um teste de validação isto é ele demonstra que o sistema tem seus requisitos adequadamente implementados. 23
  • 24. Teste Baseado em Requisitos. Iremos ver um exemplo prático onde é listado um requisito de um sistema e seus possíveis testes 24
  • 25. Teste Baseado em Requisitos. R1 - O usuário será capaz de procurar todo o conjunto inicial do banco de dados ou selecionar um subconjunto dele. Os possíveis testes para esse requisito são: •Iniciar as buscas de usuário pelos itens cuja presença ou ausência são conhecidas, quando o conjunto de bancos de dados incluírem um ou mais banco de dados. •Selecionar mais de um banco de dados de um conjunto de banco de dados e iniciar as buscas pelos itens cuja presença ou ausência são conhecidas. 25
  • 26. Teste Baseado em Requisitos. Concluímos que para cada requisito podem ser feitos vários testes para assegurar que o requisito foi devidamente concluído. 26
  • 27. Teste de Partições. O teste de partições visa identificar todas as partições do sistema ou componentes, e que as entradas e saídas de casos de testes sejam alocadas dentro dessas partições. As identificações de partições são feitas por meio de especificações na documentação ou através da experiência dos projetistas que prevê classes que podem conter valores de entradas com grande probabilidade de erros. 27
  • 28. Teste Estrutural. Também conhecido como teste de caixa-branca, o teste estrutural é uma abordagem onde os testes são derivados do conhecimento da estrutura e da implementação do software. Avalia o comportamento interno do componente de software, essa técnica trabalha diretamente sobre o código fonte do componente de software para avaliar aspectos tais como: teste de condição, teste de fluxo de dados, teste de ciclos, teste de caminhos lógicos e códigos nunca executados. O testador tem acesso ao código fonte da aplicação e pode construir códigos para efetuar a ligação de bibliotecas e componentes, esta é uma técnica de teste geralmente realizada pelos desenvolvedores que trabalha diretamente com o código-fonte do sistema. 28
  • 29. Teste de Caminho. O teste de caminho tem o objetivo de percorrer cada componente ou o sistema por completo testando as condições tanto verdadeiras como falsas. O numero de caminhos é relativamente proporcional ao tamanho do sistema, logo é mais viável a utilização do teste de caminho na etapa de teste de componentes. O teste faz com que pelo menos uma vez cada caminho seja executado. 29
  • 30. Considerações Finais. Concluímos que o processo de teste de software faz com que a qualidade, a credibilidade, a confiança e a competitividade do software cresçam. Aprendemos também que os testes estão subdivididos e que a depender da necessidade podemos utilizar, a combinação de dois ou mais testes. E que devemos planejar e deixar uma boa quantidade recursos para essa etapa do projeto, que em alguns casos chega ser a etapa mais importante do projeto de desenvolvimento de um sistema. 30
  • 31. Referências SOMMERVILLE, I.; Engenharia de Software. 8ª ed. São Paulo: Pearson Addison-Wesley, 2007. PFLEEGER, S. L.; Engenharia de Software: Teoria e Prática. 2ª ed. São Paulo: Prentice Hall, 2004. PRESSMAN, R. I.; Engenharia de Software. São Paulo: Pearson Makron Books, 1995. 31