Testes de Software
Testes de Software
O que é?
É
o processo de investigação técnica com intuito
de identificar a qualidade, a segurança e a exatidão
do software desenvolvido.
A
validação do software tem como objetivo mostrar
que um sistema encontra-se conforme sua
especificação e satisfaz os requisitos do cliente
Testes de Software
Relação com Outras Disciplinas
A disciplina Teste relaciona-se a outras disciplinas.
 A disciplina Requisitos captura os requisitos do software, que representam uma das
bases principais para a identificação dos testes que devem ser executados.
 A disciplina Análise e Design determina o design adequado para o software. Essa é
outra base importante para a identificação dos testes que devem ser executados.
 A disciplina Implementação produz builds do software que são validados pela
disciplina Teste. Em uma iteração, vários builds são testados, geralmente um por ciclo
de teste.
 A disciplina Ambiente desenvolve e mantém os artefatos de suporte usados durante
o teste, como o Guia de Teste e o Ambiente de Teste.
 A disciplina Gerenciamento planeja o projeto e o trabalho necessário em cada
iteração. Descrito em um Plano de Iteração, esse artefato é uma base importante para
definir a missão de avaliação correta para o esforço de teste.
 A disciplina Gerenciamento de Configuração e Mudança controla a mudança
dentro da equipe de projeto. O esforço de teste verifica se cada mudança foi efetuada
corretamente.

Testes de Software
Objetivos para a realização de testes
 Encontrar
falhas que comprometam a confiabilidade
 Encontrar diferenças da especificação original
 Analisar se o sistema está adequado ao uso
 Analisar se o desempenho do sistema é satisfatório
 Encontrar problemas nas interfaces com outros sistemas
 Encontrar problemas nas interfaces com equipamentos
Testes de Software
Exemplos de tipos de falhas
 Especificação


Especificação dos requisitos
Especificação do projeto e da arquitetura
 Projeto



Interface com o usuário
Interface com outros sistemas ou hardwares
Interfaces entre módulos e classes
 Modelos


de dados
Comunicação de dados
Validação de dados
Testes de Software
Exemplos de tipos de falhas
 Sincronização
em processos distribuídos
 Conformidade com padrões
 Código
 Lógica
 Cálculo
 Manipulação de dados
 Implementação de interfaces
 Documentação incompleta ou incompreensível
 Documentação inconsistente
Testes de Software
Base dos processos de testes
 Formular
um caso de teste segundo um critério
estabelecido
 Determinar os resultados esperados dos casos de teste
 Rever os casos de teste e seus resultados esperados
 Comparar os resultados do teste com o resultado
esperado
 Explicar os problemas encontrados de forma que possam
ser corrigidos no sistema
Testes de Software
Técnicas de Testes
Caixa-Branca: Técnica de teste que 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 e teste
de caminhos lógicos. Os aspectos avaliados nesta técnica de teste
dependerão da complexidade e da tecnologia que determinarem a
construção do componente de software.
 A técnica de teste de Caixa-Branca é recomendada para as fases de
Teste da Unidade e Teste da Integração, cuja responsabilidade
principal fica a cargo dos desenvolvedores do software, que por sua
vez conhecem bem o código-fonte produzido.

Testes de Software
Técnicas de Testes
Caixa-Preta: Técnica de teste em que o componente de software a
ser testado é abordado como se fosse uma caixa-preta, ou seja, não se
considera o comportamento interno do mesmo (código-fonte). Dados
de entrada são fornecidos, o teste é executado e o resultado obtido é
comparado a um resultado esperado previamente conhecido. O
componente de software a ser testado pode ser um método, uma
função interna, um programa, um componente, um conjunto de
programas ou componentes ou mesmo uma funcionalidade.
 A técnica de teste de Caixa-preta é aplicável a todas as fases de
teste: teste de unidade (ou teste unitário), teste de integração, teste de
sistema e teste de aceitação.

Testes de Software
Categorias
 Estrutural

baseada no código
 Funcional

(Caixa-branca)
(Caixa-preta)
baseada na especificação
 Estatístico


Desempenho (performance)


enfoque na confiabilidade
enfoque na medição de parâmetros de eficiência
Stress

enfoque nos parâmetros de sobrecarga
Testes de Software
Estratégias



Teste de Unidade
Teste de Integração
Teste de Sistema (aceitação)
Unidade
Estrutural
Funcional
Performance
Stress
Estatístico
Integração
Sistema
Testes de Software
Estratégias
Teste de Unidade: Também conhecida como Teste Unitário. É a
fase do processo de teste em que se testam as menores unidades de
software desenvolvidas( pequenas partes ou unidades do sistema). Os
alvos desse tipo de teste são os métodos dos objetos ou mesmo
pequenos trechos de código. Assim, o objetivo é encontrar falhas de
funcionamento dentro de uma pequena parte do sistema funcionando
independentemente do todo. Cada parte do programa é isolada e
testada afim de mostrar que funciona individualmente. O teste de
unidade não detecta todos os erros de um programa, como por
exemplo, erros de integração e problemas de performance. Além disso,
pode não ser fácil antecipar todos os casos especiais de input que a
“unidade” do programa pode vir a receber. Esse tipo de teste é eficaz
apenas se for usado conjuntamente com outras atividades de teste do
software.

Testes de Software
Estratégias
Teste de Integração: Na fase de teste de integração, o objetivo é
encontrar falhas provenientes da integração interna das unidades de
um sistema. Geralmente os tipos de falhas encontradas são de envio e
recebimento de dados. Por exemplo, um objeto A pode estar
aguardando o retorno de um valor X ao executar um método do objeto
B, porém este objeto B pode retornar um valor Y, gerando uma falha.
Não faz parte do escopo dessa fase de teste o tratamento de interfaces
com outros sistemas (integração entre sistemas). Essas interfaces são
testadas na fase de teste de sistema, apesar de, a critério do gerente
de projeto, estas interfaces poderem ser testadas mesmo antes de o
sistema estar plenamente construído.

Testes de Software
Estratégias
Teste de Sistema: Na fase de Teste de Sistema o
objetivo é executar o sistema sob o ponto de vista do seu
usuário final, varrendo as funcionalidades em busca de
falhas. Os testes são executados em condições similares de ambiente, interfaces sistêmicas e massas de dados àquelas que um usuário utilizará no seu dia-a-dia de
manipulação do sistema. De acordo com a política de uma
organização, podem ser utilizadas condições reais de
ambiente, interfaces sistemáticas e massas de dados.

Testes de Software
Teste de Aceitação
O teste de aceitação do "Usuário" normalmente é a ação de
teste final anterior à implantação do software. O objetivo do teste
de aceitação é verificar se o software está pronto e pode ser
usado pelos usuários finais para executar as funções e as tarefas
para as quais o software foi criado.

Há outras noções de teste de "aceitação", geralmente
caracterizadas por uma entrega de um grupo ou equipe para
outro. Por exemplo, um teste de aceitação de build é o teste
realizado para aceitar o encaminhamento de um novo build de
software do desenvolvimento para o teste independente.

Testes de Software
O Ciclo de Vida do Teste
No ciclo de vida do desenvolvimento de software do RUP, o software é refinado através de
iterações.
Nesse ambiente de processo, o ciclo de vida do teste tira proveito de uma abordagem iterativa
equivalente.
Em cada iteração, a equipe de desenvolvimento de software produzirá um ou mais Builds, cada um
deles representando uma possível sugestão a ser testada.
Testes de Software
Fluxo de Trabalho
Testes de Software
Visão geral das Atividades
Testes de Software
Artefatos
 Os
artefatos
desenvolvidos
como produtos
das atividades de
teste e avaliação
agrupados por
papel de
responsabilidade.
Download

ESOF2 201001 Disciplina Testes Turma A