Introdução a Testes de Software

Antes de se falar de teste de software, é importante lembrar-se que pessoas diferentes olham para o software de perspectivas completamente diferentes. Usuários, clientes e desenvolvedores possuem diferentes interesses a respeito do software em questão.

  • Usuários de sistema veem o software “do lado de fora”.

Usuários não olham o código do software, não olham tabelas do banco de dados, não avaliam seus algoritmos e geralmente nem o querem. Para os usuários, o seu sistema é uma caixa preta e faz ou não faz o que tem de fazer. Para usuários o que interessa é funcionalidade!

  • Programadores vêem fundo.

Programadores pensam em arquitetura de classe, padrões, estrutura de dados, código duplicado, inconsistências e como as coisas são representadas e manipuladas. Se usuários vêem o sistema como uma caixa preta fechada, programadores o vêem como uma caixa branca aberta.

  • Você (um Desenvolvedor) deve considerar cada um dos dois pontos de vista.

Cada ponto de vista é válido e seu sistema deve ser testado para cada um deles. Para isso existem técnicas de teste que vêem o software como uma caixa preta, são os testes caixa preta. E existem também os testes caixa branca, que faz uso do conhecimento sobre o código do software para o teste.

Testes Caixa Preta focam-se em ENTRADAS e SAÍDAS

Quando se faz testes caixa-preta deve-se buscar testar:

  • Funcionalidade: O sistema faz o que a história de usuário (requisito funcionais, caso de uso) diz que ele deveria fazer? Com testes caixa preta não importa se os seus dados são guardados em um arquivo texto ou em um banco de dados distribuído. O que realmente importa é que os dados são inseridos como a história de usuário diz e são recuperados como a história diz que eles deveriam ser.
  • Validação de Entradas de Usuário. Possivelmente, e provavelmente, será inaceitável que no sistema financeiro utilizado na empresa que você trabalha o valor informado para o seu novo salário seja “ursinhos carinhosos”. O sistema realmente realiza este tipo de validação?
  • Verificação de saída. Supondo que no mesmo sistema financeiro da empresa na qual você trabalha o valor informado ao seu salário tenha sido R$ 1500,00 e que ao final do mês em seu contra-cheque o valor do seu salário informará R$ 150,00. Isso definitivamente seria inaceitável.
  • Transação de Estados: Alguns sistemas precisam transitar de um estado a outro de acordo com regras específicas. Isso é similar à saídas, mas está relacionado com assegurar que seu sistema gerencia as mudanças de estado como deveria. Ter um diagrama de estados com os estados, transições possíveis e o que faz o sistema transitar de um estado a outro é muito útil, senão essencial, para testes de transição de estados.
  • Valores limite: Você deve testar o seu sitema com entradas cujos valores são limites ou próximos dos valores máximos e mínimos permitidos. Esta técnica é conhecida como Análise de Valores Limite.
    • ex: Testar dias 0,1, 31,32 para dias do mês. E não esqueça que o elemento neutro de um conjunto sempre é um gerador de problemas.
  • Partições de Equivalência: Partições de equivalência são grupos de valores de entrada de dados que espera-se que provoquem os mesmos “estímulos” ao software. A técnica de Partição de Equivalência pode ser usada para atingir uma melhor cobertura dos valores de entrada e saída.

Testes Caixa Branca baseiam-se na estrutura do código

Em testes caixa branca você terá que estar familiarizado com o código sob teste. A definição dos casos de testes será guiada pela análise da estrutura do código. Se você por de lado o fato de ter que corrigir o código que ele ‘quebra’, testes caixa branca podem tornar-se divertidos e torna-se um desafio ir fundo no código e gerar situações problemáticas que provocarão falhas. Em teste caixa branca, os objetivos devem ser:

  • Testar todos os diferentes trechos do código: verificar se todas as cláusulas if/else estão funcionando como deveriam, bem como blocos de loop e switch, try catch e os demais comandos.
  • Tratamento adequado de erro: se dados inválidos são passados a um método, as exceções corretas estão sendo levantadas? O seu código restaura o estado inicial da aplicação em situações de erro?
  • Funcionamento de acordo com a documentação: se a documentação diz que você pode passar nulo como argumento a um método e você terá então como retorno um conjunto de valores, é o que realmente acontece? Se a documentação do método diz que você precisa de uma permissão extra para invocá-lo, tente invocá-lo como uma permissão diferente.

Em resumo, técnicas Caixa Branca e Caixa Preta tem como objetivo principal responder a seguinte pergunta:

Qual subconjunto de todas as possibilidades de cados de teste tem a maior chance de detectar a maior quantidade de erros?

A definição de casos de teste é muito importante porque teste exaustivo (exercício de de todas as possibilidade) é impossível. Logo, a estratégia é criar testes que sejam mais completo possível, sejam, cubram boa parte das possibilidadaes de entrada.

Casos e Procedimentos de Teste;

Mas afinal, o que é um caso de teste?

  • Caso de teste: conjunto de entradas e saídas esperadas para um programa ou módulo de programa específico.
  • Procedimento de teste: constitui em uma sequencia de ações que caracterizam o 'testar' em si.

Ex.

           digitar    '2'
           clicar em  '+'
           digitar    '3'
           clicar em  '='
           verificar (resultado==5)

fontes:

  • Head First: software development
  • The art of software testing.
 
/var/www/html/wiki/data/pages/quickstart/introducao_a_testes.txt · Última modificação: 2010/05/15 19:36 (edição externa)
 
Exceto onde for informado ao contrário, o conteúdo neste wiki está sob a seguinte licença:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki