Guia Completo de Testes de Software e Avaliação de IHC

Classificado em Computação

Escrito em em português com um tamanho de 10,91 KB

O que é teste?

Teste é um conjunto de atividades que podem ser planejadas com antecedência e executadas sistematicamente. Por essa razão, deverá ser definido para o processo de software um modelo (template) para o teste.

Quem realiza?

Gerente do projeto, engenheiros de software e especialistas em testes.

Como garantir que o trabalho foi realizado corretamente?

Revisando as especificações antes dos testes, avaliar a integridade dos casos de testes e das tarefas de testes.

Ciclo de Erro no Software:

Engano – Introduz um defeito no software.

Defeito – Deficiência mecânica ou algorítmica que, se ativada, pode produzir um erro, podendo levar a uma falha.

Erro – Item de informação ou estado de execução inconsciente, se propagado até a saída do software, constitui uma falha.

Falha – Evento notável em que o sistema viola suas especificações.

Formas de execução dos testes:

  • Teste manual.
  • Teste automatizado.

O que é testes de software?

Processo de executar um programa ou sistema de forma controlada para determinar se ele funciona conforme o esperado. É uma investigação feita para informar aos stakeholders sobre a qualidade do software ou serviço sendo testado. Também é uma prática projetada para mostrar que o programa ou sistema faz o que se espera e para descobrir seus defeitos antes do uso.

Projete o teste antes de iniciar:

  • Identifique todos os possíveis cenários.
  • Escreva os roteiros de teste.
  • Garanta que os roteiros cobrem todos os requisitos.

Dados de teste: Entradas criadas para testar o sistema.

Casos de testes: Entradas para testar o sistema e saídas esperadas para essas entradas (quando o sistema opera de acordo com suas expectativas).

Problema: É muito difícil (praticamente impossível) testar todas as combinações possíveis de entradas, mesmo para um sistema de pouca complexidade.

Solução: Criar procedimentos estruturados de testes de validação que procurem obter a maior abrangência possível de casos de testes, de modo a validar e liberar o software com o menor número de defeitos possível. O que realmente importa é a elaboração das entradas de dados corretas, com as respectivas saídas que essas entradas devem gerar, para cada uma das funcionalidades.

Teste de caixa branca: É baseado na estrutura lógica do software, ficando a cargo dos desenvolvedores. Consiste em testar todos os caminhos lógicos que a informação pode percorrer dentro de um sistema.

Teste do caminho básico: É uma técnica de caixa branca, onde se calcula a complexidade lógica do software e utiliza essa medida como base para descobrir os caminhos básicos do software, exercendo o teste de modo que todos os caminhos sejam efetuados. Para esse teste, é usada uma notação de grafo de fluxo que representa o fluxo de controle lógico.

Teste de caixa preta: O que realmente importa é a elaboração de entradas de dados corretas com as respectivas saídas que essas entradas devem gerar, para cada uma das funcionalidades do sistema.

Aplicação das abordagens caixa branca e caixa preta: O desenvolvedor é responsável por estabelecer todos os caminhos lógicos existentes no sistema, e todos devem ser testados (caixa branca). O usuário especialista deve preparar entradas válidas com respectivas saídas esperadas para cada um dos casos de teste estabelecidos pelo desenvolvedor (caixa preta).

Estratégia de aplicação de testes e validação (Pressman):

  • Teste de unidade: Envolve o teste das menores unidades de código, ou seja, os componentes ou módulos.
  • Teste de Integração: Tem objetivo localizar falhas resultantes da integração dos diversos módulos (ou componentes) que constituem o sistema.
  • Teste de validação: Tem por finalidade demonstrar que o software encontra-se em conformidade com os requisitos previamente estabelecidos.
  • Teste de sistema: Tem por objetivo validar o sistema sob o ponto de vista do usuário final.

Tipos de testes:

  • Teste de configuração: Testa se o software funciona no hardware a ser instalado.
  • Teste de instalação: Testa se o software instala como planejado, em diferentes hardwares e sob diferentes condições, como pouco espaço de memória, interrupções de rede, interrupções na instalação etc.
  • Teste de Integridade: Testa a resistência do software a falhas (robustez).
  • Teste de segurança: Testa se o sistema e os dados são acessados de maneira segura, apenas pelo autor das ações.
  • Teste funcional: Testa os requisitos funcionais, as funções e os casos de uso. “A aplicação faz o que deveria fazer?”.
  • Teste de unitário: Testa um componente isolado ou classe do sistema.
  • Teste de integração: Testa se um ou mais componentes combinados funcionam de maneira satisfatória. Há quem diga que o teste de integração é composto por vários testes de unidade.
  • Teste de volume: Testa o comportamento do sistema operando com o volume “normal“ de dados e transações envolvendo o banco de dados durante um longo período de tempo.
  • Teste de performance: O teste de performance se divide em 3 etapas:
    • Teste de carga: Testa o software sob as condições normais de uso (ex: tempo de resposta, número de transações por minuto, usuários simultâneos etc.).
    • Teste de stress: Testa o software sob condições extremas de uso (grande volume de transações e usuários simultâneos, picos excessivos de carga em curtos períodos de tempo).
    • Teste de estabilidade: Testa se o sistema se mantém funcionando de maneira satisfatória após um período de uso.
  • Teste de Usabilidade: Teste focado na experiência do usuário, consistência da interface, layout, acesso às funcionalidades etc.
  • Teste de Regressão: Reteste de um sistema ou componente para verificar se alguma modificação recente causou algum efeito indesejado, além de certificar se o sistema ainda atende os requisitos.
  • Teste de Manutenção: Testa se a mudança de ambiente não interferiu no funcionamento do sistema.

Testes de usabilidade: Técnica de caixa preta. O objetivo é observar usuários reais usando o produto para descobrir problemas e pontos de melhorias. O produto, que pode ser um site, uma aplicação web, um produto físico, não precisa estar completamente desenvolvido.

O que é avaliação de IHC?

A avaliação de IHC é um momento onde o avaliador:

  • Faz o julgamento de valor sobre a qualidade de uso da solução de IHC.
  • Também identifica problemas na interação e na interface que prejudiquem a experiência particular do usuário durante o uso do sistema.

Por que avaliar?

Nem sempre os produtos de um processo de fabricação são de qualidade devido a matéria-prima estar com defeito ou de má qualidade, ou pode acontecer um erro humano. No desenvolvimento de sistemas interativos, os problemas costumam ocorrer na coleta, interpretação, processamento e compartilhamento de dados entre os interessados no sistema (stakeholders) e na implementação do sistema projetado. A avaliação do produto final possibilita entregar um produto com uma garantia maior de qualidade.

Por que avaliar em diferentes perspectivas?

Um sistema interativo deve ser avaliado na perspectiva de quem concebe, constrói e de quem o utiliza. As diferenças entre quem concebe e quem utiliza não podem ser desprezadas. Os usuários podem ou não compreender e concordar com a lógica do designer, julgar a solução do IHC apropriada e melhor do que as soluções existentes e incorporá-la no seu dia a dia, quando tiverem escolha. É importante avaliar IHC do ponto de vista dos usuários, preferencialmente com a participação deles.

Por que avaliar a qualidade de uso?

  • Problemas de IHC podem ser corrigidos antes e não depois de o produto ser lançado.
  • A equipe de desenvolvimento pode se concentrar na solução de problemas reais, em vez de gastar tempo debatendo gostos e preferências particulares de cada membro da equipe.
  • Engenheiros sabem construir um sistema, mas não sabem e não estão em uma posição adequada para discutir sobre a qualidade de uso.
  • Identificar e corrigir os problemas de IHC permitem entregar um produto mais robusto, ou seja, a próxima versão corretiva não precisa já começar a ser desenvolvida no momento do lançamento do produto no mercado.

Casos de testes.

O que é casos de testes: Um caso de teste é um par formado por um dado de teste mais o resultado esperado para a execução do programa com aquele dado de teste.

Tipos de Testes por Nível de Detalhe:

  • Teste de unidade: Envolve o teste das menores unidades de código, ou seja, os componentes ou módulos.
  • Teste procedimental: Sub-rotina ou função.
  • Teste Orientado a Objetos: Método da Classe.

Teste de integração: Tem objetivo localizar falhas resultantes da integração dos diversos módulos (ou componentes) que constituem o sistema.

  • Teste procedimental: Duas ou mais unidades (Subsistema).
  • Teste Orientado a Objetos: Classe/Componentes (Subsistema).

Teste de Sistema: Teste de sistema tem por objetivo validar o sistema sob o ponto de vista do usuário final.

  • Teste procedimental: Toda aplicação.
  • Teste Orientado a Objetos: Toda Aplicação.

Teste mostra a presença, não a ausência de erros.

Projeto de testes:

  • Descreve os casos de testes e os procedimentos para execução dos mesmos.
  • Para projetar casos de testes, são visualizados cenários (casos de uso) a partir dos quais serão criados casos de testes.
  • Determinar pré-condições para o teste e os objetivos a serem atingidos.
  • Especificar os casos de testes individuais.
  • Determinar como executar os testes.

Entradas relacionadas: