Ian Sommerville

Teste para  detecção de defeitos
Antes de se entregar um software existe este processo de validação para verificar se o sistema cumpre com as especificações e opera corretamente.Todas as funções de sistemas que são acessadas por meio de menus devem ser testadas,as combinações de funções como por exemplo, formatação de texto devem ser testadas.
Projetar casos de teste -> Casos de testes ->Preparar dados de teste ->Executar programa com dados de teste ->Resultados de teste-> Comparar resultados com os casos de teste->Relatório de testes.


Quando a entrada do usuário for fornecida, todas as funções devem ser testadas com entradas corretas e incorretas.
Teste da caixa preta: O sistema é uma caixa preta, esse método também da o nome de teste funcional,  porque o testador esta preocupado somente com a  funcionalidade e não com a implementação de software.O testador  apresenta as entradas ao componente ou ao sistema e examina  as saídas correspondentes, se a saída  não são aquelas prevista então o sistema  detectou com sucesso  um problema com o software.Estas entradas inseridas pode ser desde números positivos ou negativos, strings.
Teste de estrutura ou caixa branca: Os testes em geral são aplicados,  a unidades de programa relativamente pequenas, o testador pode analisar o código e usar o conhecimento sobre estrutura de um componente, afim de derivar os dados para o teste.
Teste de interface:  O objetivos de testes de interface é detectar erros que possam ter sido introduzidos no sistema, em razão de erros ou suposições inválidas sobre as interfaces.Os erros mais comuns de interface são: Mau uso de interface: um componente chama outro componente e comete um erro no uso de sua interface. Mau entendimento da interface: um componente que chama interpreta mal a especificação da interface do componente chamado e faz suposições sobre seu comportamento.  Erros de timing: Eles ocorrem em sistemas de tempo real que utilizam uma memória compartilhada ou uma interface de passagem de mensagens,O produtor e o consumidor de dados podem operar em diferentes velocidades, o consumidor pode acessar informações desatualizadas, porque o produtor delas não  atualizou as informações da interface.
Teste de estresse: são particularmente relevantes para sistemas distribuídos, com base em uma rede e processadores, esses sistemas freqüentemente exibem uma degradação severa quando são sobrecarregados.A rede torna inundada com dados de coordenação, que os diferentes processos devem trocar, e assim os processos se tornam cada vez mais lentos, a medida que eles esperam pelos dados solicitados a partir de outros processos. 


Engenharia de Software – Teoria e Pratica / Shari Lawrence
Ao desenvolver um grande sistema o teste geralmente envolve vários estágios.Primeiro cada componente do sistema é testado isolado dos outros componentes do sistema, esse teste é conhecido como teste de módulo, teste de componente, ou teste de unidade , verifica se o componente funciona de forma adequada aos tipos de entradas esperadas, a partir do estudo do projeto do componente.o segundo passo  é o teste de integração, é o processo que verifica se os componente do sistemas estão trabalhando corretamente juntos,conforme esta descrito  nas especificações do programa.O teste funcional foca as determinações se o sistema esta realmente funcionando como  foram descritas, o resultado é um sistema em funcionamento.O teste de desempenho compara o sistema com os requisitos de software e hardware. O teste de aceitação é verificado junto ao cliente e verifica se as requisições do cliente estão nos conformes.E pra finalizar o teste de instalação que verifica se o sistema esta funcionando realmente como devido.