PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
Testes
Orientação – Visão Conceitual em Testes
Versão 0.3
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
1 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
Histórico de Revisões
Data
23/04/2010
07/10/10
22/10/2014
Versão
0.1
0.2
0.3
Descrição
Versão inicial
Verificação ortográfica
Verificação ortográfica
Autor
Fernanda Monteiro
Ana Eckel
Samuel Portela e
Anália Lima
Sumário
1 Finalidade.................................................................................................................................................... 4
2 Técnicas para Projeto de Casos de Teste (ou Abordagens de Teste).........................................................4
2.1 Testes de Caixa Preta (Black Box)........................................................................................................... 4
2.2 Testes de Caixa Branca (White Box)........................................................................................................ 4
3 Níveis de Testes de Software (ou Estágios de Teste).................................................................................5
3.1 Teste de Unidade..................................................................................................................................... 5
3.2 Teste de Integração.................................................................................................................................. 5
3.3 Teste de Sistema...................................................................................................................................... 5
3.4 Teste de Aceitação (ou Homologação)..................................................................................................... 5
3.4.1 Testes Alfa e Beta
6
4 Tipos de Testes........................................................................................................................................... 6
4.1 Teste de Sanidade.................................................................................................................................... 6
4.2 Teste Funcional........................................................................................................................................ 6
4.3 Teste de Recuperação de Falhas............................................................................................................. 6
4.4 Teste de Segurança e Controle de Acesso.............................................................................................. 6
4.5 Teste de Performance.............................................................................................................................. 7
4.6 Teste de Volume (carga).......................................................................................................................... 7
4.7 Teste de Estresse..................................................................................................................................... 7
4.8 Teste de Configuração ou Portabilidade................................................................................................... 7
4.9 Teste de Interface com o Usuário............................................................................................................. 7
4.10 Teste de Regressão................................................................................................................................ 7
4.11 Reteste................................................................................................................................................... 8
5 Mitos sobre Teste........................................................................................................................................ 8
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
2 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
6 Princípios de Teste...................................................................................................................................... 8
7 Referências................................................................................................................................................ 10
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
3 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
1
Finalidade
Definir Abordagens, Níveis e Tipos de Testes. Também tem por finalidade apresentar os principais
mitos e princípios existentes sobre testes.
2
Técnicas para Projeto de Casos de Teste (ou Abordagens de Teste)
As técnicas de projeto de casos de teste são classificadas em Caixa Branca ou Caixa Preta [3] e
serão apresentadas a seguir.
2.1
Testes de Caixa Preta (Black Box)
Também conhecido como um teste funcional, pois é desempenhado apenas através das funcionalidades do sistema: o testador não está preocupado com o código. O testador fornece as entradas
ao componente ou ao sistema e examina uma saída (que falharão se não estiverem de acordo
com os requisitos do sistema). Acontece quando a codificação termina em alguma fase, e esse
código vai para o grupo de testes. Os defeitos investigados pelos testes Caixa Preta estão em
uma classe de defeitos que os testes Caixa Branca não estão aptos a encontrar. Esses defeitos,
de acordo com [3] são:
•
Funções incorretas ou ausentes;
•
Defeitos de interface;
•
Defeitos de desempenho;
•
Defeitos de inicialização e término.
2.2
Testes de Caixa Branca (White Box)
Também conhecidos como testes estruturais, testes caixa de vidro ou testes caixa clara, são testes que conhecem a estrutura de implementação do software e são geralmente aplicados a unidades pequenas de programas (unidades não integradas) [3]. Geralmente é desempenhado pelo
próprio programador durante a programação.
Esse tipo de teste tem alguns benefícios como: o programador pode testar pequenas partes do
programa (isso faz com que a depuração seja mais fácil); o programador conhece o comportamento esperado do sistema (dessa forma pode identificar melhor as falhas); enfim, conhecendo
melhor o código, ele pode identificar falhas que seriam mais difíceis aos olhos de outros.
Essa prática é considerada complementar ao processo de programação, pois muitos programadores já têm o hábito de executarem testes de caixa branca em seus códigos.
Esse tipo de teste precisa garantir [4]:
•
Que todos os caminhos independentes dentro de um módulo de software tenham sido
exercitados pelo menos uma vez;
•
O exercício de todas as decisões lógicas para valores verdadeiros e falsos;
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
4 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
•
O exercício de todos os laços em suas fronteiras e dentro de seus limites operacionais;
•
O exercício de estruturas de dados internas para garantir a sua qualidade.
3
Níveis de Testes de Software (ou Estágios de Teste)
Um plano de teste, bem como a escolha do grupo de testes, deve ser desenvolvido de acordo, entre outras coisas, com os níveis de teste escolhido para o projeto. Os testes de software podem
ser aplicados no ciclo de desenvolvimento de software através de vários níveis. Esses níveis vão
desde o mais elementar, o de unidade, até o mais geral, o nível de aceitação. Os níveis serão
apresentados em detalhes a seguir. Como os nomes são diferentes dependendo do autor, vamos
utilizar os nomes encontrados no padrão IEEE.
3.1
Teste de Unidade
Testes de pequenos elementos ou unidades do sistema [1]. Geralmente desempenhado pelo próprio programador como sendo uma atividade complementar à implementação. Nesse tipo de teste
são geralmente aplicados testes Caixa Branca, mas podem também ser aplicados Testes Caixa
Preta (caso se deseje testar funcionalmente a unidade ou componente).
3.2
Teste de Integração
Tem a finalidade de encontrar falhas quando pedaços de código são integrados, principalmente
falhas de interface [2]. Podem ser aplicados de acordo com duas estratégias [1]:
•
Bottom up: integração de módulos de baixo nível para a formação de módulos maiores;
•
Top down: integração de módulos de alto nível substituindo módulos de baixo nível com
stubs de teste para simular interfaces;
•
Mista: mesclagem das duas estratégias.
Essas estratégias são necessárias para que testes possam ser desempenhados sem a necessidade de todos os componentes estarem terminados. Os testes de integração devem ser desempenhados o mais cedo possível, logo após terem sido aplicados testes de unidade. Testes de integração geralmente aplicam testes de Caixa Preta [1].
3.3
Teste de Sistema
Tipo de teste de software que tem a finalidade de testar hardware e software integrados [2]. Geralmente durante esse teste são verificados alguns requisitos não funcionais como performance, carga, confiabilidade, etc. São aplicados após os testes de unidade e integração terem sido executados e o sistema já tenha em um estado estável. Aqui são aplicados testes Caixa Preta.
3.4
Teste de Aceitação (ou Homologação)
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
5 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
Teste baseado em requisitos de alto nível. Os testes de aceitação servem para identificar discordâncias do software de acordo com esses requisitos. Esse tipo de teste é mais efetivo quando
desempenhado por usuários ou seus representantes em um ambiente mais realístico possível.
Aqui são aplicados testes Caixa Preta.
3.4.1 Testes Alfa e Beta
São processos de teste de validação bastante usados pelos desenvolvedores de software para
descobrir erros que só o usuário final parece ser capaz de descobrir (instruções de uso podem ser
mal interpretadas, combinações estranhas de dados podem ser usadas, saídas que pareciam claras ao analista podem ser não tão claras ao usuário em campo). Têm como objetivo testar a aplicação em um produto.
O teste Alfa é realizado nas instalações do desenvolvedor. O produto é usado pelo cliente com o
desenvolvedor observando e registrando erros e problemas de uso. Esse tipo de teste é conduzido em um ambiente controlado. Já no teste Beta, o desenvolvedor não está presente. O cliente registra todos os problemas encontrados e os relata ao desenvolvedor que fará as modificações necessárias e entrega o produto final ao cliente.
4
Tipos de Testes
4.1
Teste de Sanidade
Com esse tipo de teste é possível avaliar se o build está estável o suficiente para ser submetido a
testes mais detalhados, projetados e implementados para a demanda de testes da iteração (Teste
Funcional). Este tipo de teste também é conhecido como “Smoke test” e tem o propósito de evitar
que se desperdicem recursos de testes com um build não suficientemente estável para testes.
4.2
Teste Funcional
Com esse tipo de teste a funcionalidade geral do sistema em termos de regras de negócio é
testada. Devem ser testadas condições válidas e inválidas. Como exemplo, pode-se citar testar o
Cadastro de um usuário no sistema.
4.3
Teste de Recuperação de Falhas
Com esse tipo de teste o software é forçado a falhar de diversas maneiras para que seja
verificado o seu comportamento, bem como a adequação dos procedimentos de recuperação. A
recuperação pode ser automática ou exigir iteração humana. Como exemplo podemos citar a
interrupção de uma impressão por falta de energia. O sistema deve ser capaz de retornar e
informar ao usuário da impressão pendente.
4.4
Teste de Segurança e Controle de Acesso
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
6 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
Com esse tipo de teste o software é forçado a quebrar um mecanismo de proteção de acesso.
Como exemplo temos: tentar logar no sistema através de um teclado virtual com usuário não
autorizado. O sistema não deve permitir que usuários não autorizados acessem dados sigilosos.
4.5
Teste de Performance
Verifica o tempo de resposta e o processamento (para diferentes configurações, cargas de
trabalho, número de usuários, tamanho do BD, etc.). Exemplo, recuperar uma conta de usuário
em x segundos ou processar a transação y em x segundos.
4.6
Teste de Volume (carga)
Verifica o comportamento do sistema sob condições de carga de trabalho diferente do normal. O
teste de volume submete grandes quantidades de dados ao sistema para determinar se limites
que causam a falha do software são alcançados.
4.7
Teste de Estresse
Verifica a funcionalidade do sistema em situações limite de transações ou fora da tolerância
esperada. Exemplos são: alta competição por recursos compartilhados como vários acessos/
transações no BD ou rede.
4.8
Teste de Configuração ou Portabilidade
Verifica o funcionamento do sistema em diferentes configurações de hardware e software. Devem
ser testadas:
• Compatibilidade do software hardware
• Configuração do servidor
• Tipos de conexão com a internet
• Compatibilidade com o browser
4.9
Teste de Interface com o Usuário
Devem ser testadas:
• Aparência e comportamento da interface
o Como a informação é apresentada ao usuário
o Quais controles da interface serão testados (caixa de diálogo, botões, menu)
o Se os nomes das caixas e diálogos são intuitivos e consistentes
• Navegação
• Adequação a padrões
• Tempo para aprender como usar o programa
4.10
Teste de Regressão
Reexecução dos testes feita após uma manutenção corretiva ou evolutiva. Existem duas
abordagens de testes de regressão: a total, que executa todos os testes desenvolvidos
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
7 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
anteriormente sempre que existir uma alteração; a parcial, que executa apenas um subconjunto
de testes somente para as dependências das áreas modificadas.
4.11
Reteste
Execução de testes falhos (somente os falhos) novamente após seu conserto.
5
Mitos sobre Teste
Em [1] são encontrados alguns mitos sobre testes de software. Esses mitos são:
Mito 1: É preciso testar todas as possibilidades de entradas em um software.
Essa afirmação é falsa pelo seguinte motivo: a combinação de todas as possíveis entradas de um
software pode resultar em milhares ou milhões de possibilidades. Com isso, a aplicação dessas
combinações para o exercício de um software torna o teste inviável. O que se busca com a
atividade de teste de software é encontrar a maior quantidade de falhas utilizando um mínimo de
esforço e tempo. Para isso são usadas algumas técnicas de projeto de casos de testes de
softwares.
Mito 2: Um sistema testado é perfeito.
Partindo da inverdade do mito 1, podemos perceber que o mito 2 também é falso. O motivo é que,
visto que não são testadas todas as possibilidades de entradas em um software, o que se pode
afirmar é que para aquele determinado conjunto de entradas não existem falhas, mas, para
aquelas entradas que não foram testadas, nada se pode afirmar.
Mito 3: Testes são usados para mostrar que o software não tem falhas.
A atividade de teste de software tem a finalidade de encontrar falhas e não a sua ausência. Esse
mito cai no mito 2, já que se encontram falhas com um conjunto de dados de teste. A ausência de
falhas só poderia ser afirmada utilizando-se todas as combinações possíveis de entrada.
Mito 4: Testes precisam ser executados apenas uma ou duas vezes.
Os testes precisam ser repetidos sempre que forem encontradas falhas e algum tipo de correção
for aplicada. Isso acontece porque, além de precisar testar se aquela correção contém falha,
também é necessário testar se aquela correção afetou outra parte do software.
6
Princípios de Teste
Em [5][6] encontram-se alguns princípios que devem ser levados em consideração na hora de se
projetar e desenvolver uma tarefa de teste. Esses princípios podem ser vistos a seguir:
Princípio 1: Uma parte essencial do caso de teste é a definição da saída ou resultado
esperado.
O princípio 1 pode induzir a erros quando não acontece. Pode ser óbvio que os resultados
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
8 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
esperados devem aparecer no caso de teste, mas muitas vezes não é isso que acontece. Pode
acontecer um desconhecimento das saídas esperadas e o testador usar o bom senso na análise.
Princípio 2: Um programador deveria evitar testar seu próprio código.
O princípio 2 é importante no sentido de que o próprio desenvolvedor pode se viciar em seu
código. Isso faz com que ele não mais perceba falhas que para outras pessoas parecem óbvias.
Outro motivo para o cumprimento desse princípio é que o próprio desenvolvedor pode não querer
encontrar falhas em seu código para que não precise fazer correções. Por esse mesmo motivo é
sugerido o princípio 3, tomando agora a aplicação do princípio 2 para um grupo de pessoas. Vale
ressaltar que o princípio 2 vale apenas para testes de alto nível, ou seja, um desenvolvedor pode
e deve executar e implementar testes de baixo nível em seu próprio código.
Princípio 3: Uma organização desenvolvedora de software deveria ter uma equipe própria
para os testes de alto nível.
Princípio 4: Os resultados dos testes deveriam ser meticulosamente analisados.
O princípio 4 é importante para a detecção dos sintomas das falhas. É necessário para se
conhecer de onde vieram essas falhas e o motivo de sua existência. Isso ajuda na prevenção de
novos defeitos.
Princípio 5: Casos de teste devem ser escritos para entradas esperadas bem como não
esperadas.
O princípio 5 diz respeito à robustez do caso de teste. Com as entradas esperadas, busca-se
testar se o programa não faz o que é preciso fazer. Com as entradas não desejadas, busca-se
testar se o programa resulta em uma falha absurda. Como exemplo podemos citar uma entrada
incorreta em um programa que faz com que ele trave ou que o programa simplesmente feche.
Desse exemplo caímos também no princípio 6, que verifica que mesmo que uma entrada seja
absurda, o programa tem que ser robusto o suficiente para suportar.
Princípio 6: É necessário verificar se um programa não faz o que ele não foi designado a
fazer.
Princípio 7: É necessária a documentação do processo de teste.
O princípio 7 é necessário para que, caso haja uma falha do sistema na hora dos testes, aquele
esforço de invenção dos testes seja guardado e executado outra vez. Esse princípio é importante
também no que diz respeito a testes que precisam ser executados novamente, como testes de
regressão, logo após terem sido consertados alguns defeitos.
Princípio 8: Não se deve planejar um esforço de teste assumindo que erros não vão ser
encontrados.
Os testes devem ser planejados com um cronograma que leva em consideração que algumas
falhas vão ser descobertas e que levam um tempo para serem corrigidas. Isso é a importância do
princípio 8. Deve-se sempre considerar que falhas sempre vão existir.
Princípio 9: A probabilidade da existência de mais falhas numa seção do programa é
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
9 de 10
PD-DATAPREV
Processo de Desenvolvimento de Software da Dataprev
Orientação – Visão Conceitual em Testes
proporcional ao número de falhas já encontradas naquela seção.
O princípio 9 é um fenômeno citado nas referências e que não se sabe ao certo o porquê dele. A
probabilidade de encontrar erros é mostrada no gráfico abaixo:
Princípio 10: Os testes deveriam ser integrados num processo de desenvolvimento de
software.
Os testes deveriam ser executados ao longo de todo ciclo de vida de desenvolvimento do
software, não precisando esperar até o final. Isso facilita a depuração dos erros encontrados e é o
que fala o princípio 10.
7
Referências
[1] Ross, Kelvin. Pratical Guide to Software System Testing. K.J. Ross & Associates Pty.
Ltd:1998.
[2] Craig, Rick D.; Jaskiel, Stefan P. Systematic Software Testing. Artech House Publishers Boston, London: 2002.
[3] Pressman, Roger S. Engenharia de Software. Tradução de José Carlos Barbosa dos Santos.
São Paulo: Pearson Education do Brasil, 1995.
[4] Loveland, Scott et al. Software testing techniques: Finding the Defects that Matter. Massachusetts: Charles River media, Inc, 2005.
[5] Myers, Glenford J. The Art of Software Testing. New Jersey: John Wiley & Sons, Inc, 2004 .
[6] Burnstein, Ilene. Practical Software Testing: A Process-oriented Approach.
New York: Springer, 2003.
ori_Visao_Conceitual_Testes.odt
Modelo 2.0
10 de 10
Download

Glossário do Negócio - PD