Teste de software - níveis

Existem diferentes níveis durante o processo de teste. Neste capítulo, é fornecida uma breve descrição sobre esses níveis.

Os níveis de teste incluem diferentes metodologias que podem ser usadas durante a realização de testes de software. Os principais níveis de teste de software são -

  • Teste funcional

  • Teste não funcional

Teste funcional

Esse é um tipo de teste de caixa preta baseado nas especificações do software a ser testado. O aplicativo é testado fornecendo entrada e, em seguida, os resultados são examinados e precisam estar em conformidade com a funcionalidade para a qual foram destinados. O teste funcional de um software é conduzido em um sistema completo e integrado para avaliar a conformidade do sistema com seus requisitos especificados.

Existem cinco etapas envolvidas ao testar a funcionalidade de um aplicativo.

Passos Descrição
Eu A determinação da funcionalidade que o aplicativo pretendido deve executar.
II A criação de dados de teste com base nas especificações do aplicativo.
III A saída com base nos dados de teste e nas especificações do aplicativo.
IV A escrita de cenários de teste e a execução de casos de teste.
V A comparação dos resultados reais e esperados com base nos casos de teste executados.

Uma prática de teste eficaz verá as etapas acima aplicadas às políticas de teste de cada organização e, portanto, garantirá que a organização mantenha os mais rígidos padrões no que diz respeito à qualidade de software.

Teste de Unidade

Este tipo de teste é executado por desenvolvedores antes que a configuração seja entregue à equipe de teste para executar formalmente os casos de teste. O teste de unidade é executado pelos respectivos desenvolvedores nas unidades individuais das áreas atribuídas ao código-fonte. Os desenvolvedores usam dados de teste diferentes dos dados de teste da equipe de garantia de qualidade.

O objetivo do teste de unidade é isolar cada parte do programa e mostrar que as partes individuais estão corretas em termos de requisitos e funcionalidade.

Limitações do teste de unidade

O teste não consegue detectar todos os bugs em um aplicativo. É impossível avaliar cada caminho de execução em cada aplicativo de software. O mesmo acontece com o teste de unidade.

Há um limite para o número de cenários e dados de teste que um desenvolvedor pode usar para verificar um código-fonte. Depois de esgotar todas as opções, não há escolha a não ser interromper o teste de unidade e mesclar o segmento de código com outras unidades.

Teste de integração

O teste de integração é definido como o teste de partes combinadas de um aplicativo para determinar se funcionam corretamente. O teste de integração pode ser feito de duas maneiras: Teste de integração bottom-up e teste de integração Top-down.

Sr. Não. Método de teste de integração
1

Bottom-up integration

Esse teste começa com o teste de unidade, seguido por testes de combinações de unidades de nível mais alto progressivamente chamadas de módulos ou compilações.

2

Top-down integration

Neste teste, os módulos de nível mais alto são testados primeiro e progressivamente, os módulos de nível mais baixo são testados depois.

Em um ambiente de desenvolvimento de software abrangente, o teste ascendente geralmente é feito primeiro, seguido pelo teste descendente. O processo termina com vários testes do aplicativo completo, de preferência em cenários projetados para simular situações reais.

Teste de Sistema

O teste do sistema testa o sistema como um todo. Depois que todos os componentes estão integrados, o aplicativo como um todo é testado rigorosamente para verificar se atende aos padrões de qualidade especificados. Este tipo de teste é realizado por uma equipe de testes especializada.

O teste do sistema é importante pelos seguintes motivos -

  • O teste do sistema é a primeira etapa do Ciclo de Vida de Desenvolvimento de Software, em que o aplicativo é testado como um todo.

  • O aplicativo é testado exaustivamente para verificar se atende às especificações funcionais e técnicas.

  • O aplicativo é testado em um ambiente muito próximo ao ambiente de produção onde o aplicativo será implantado.

  • O teste de sistema nos permite testar, verificar e validar tanto os requisitos de negócios quanto a arquitetura do aplicativo.

Teste de Regressão

Sempre que uma alteração em um aplicativo de software é feita, é bem possível que outras áreas dentro do aplicativo tenham sido afetadas por essa alteração. O teste de regressão é executado para verificar se um bug corrigido não resultou em outra funcionalidade ou violação de regra de negócios. A intenção do teste de regressão é garantir que uma mudança, como uma correção de bug, não resulte na descoberta de outra falha no aplicativo.

O teste de regressão é importante pelos seguintes motivos -

  • Minimize as lacunas no teste quando um aplicativo com alterações feitas tiver que ser testado.

  • Testar as novas mudanças para verificar se as mudanças feitas não afetaram nenhuma outra área do aplicativo.

  • Reduz os riscos quando o teste de regressão é executado no aplicativo.

  • A cobertura do teste é aumentada sem comprometer os prazos.

  • Aumente a velocidade de comercialização do produto.

Teste de aceitação

Este é sem dúvida o tipo de teste mais importante, pois é conduzido pela Equipe de Garantia de Qualidade, que avaliará se a aplicação atende às especificações pretendidas e aos requisitos do cliente. A equipe de QA terá um conjunto de cenários pré-escritos e casos de teste que serão usados ​​para testar o aplicativo.

Mais ideias serão compartilhadas sobre o aplicativo e mais testes podem ser realizados nele para avaliar sua precisão e os motivos pelos quais o projeto foi iniciado. Os testes de aceitação não se destinam apenas a apontar erros ortográficos simples, erros cosméticos ou lacunas de interface, mas também a apontar quaisquer bugs no aplicativo que resultarão em travamentos do sistema ou erros graves no aplicativo.

Ao realizar testes de aceitação em um aplicativo, a equipe de teste reduzirá o desempenho do aplicativo na produção. Existem também requisitos legais e contratuais para aceitação do sistema.

Teste Alfa

Este teste é a primeira fase do teste e será realizado entre as equipes (desenvolvedores e equipes de QA). Os testes de unidade, de integração e de sistema, quando combinados, são conhecidos como testes alfa. Durante esta fase, os seguintes aspectos serão testados no aplicativo -

  • Erros de ortografia

  • Links quebrados

  • Direções nubladas

  • O aplicativo será testado em máquinas com a especificação mais baixa para testar os tempos de carregamento e quaisquer problemas de latência.

Teste beta

Este teste é executado após o teste alfa ter sido executado com sucesso. No teste beta, uma amostra do público-alvo testa o aplicativo. O teste beta também é conhecido comopre-release testing. Versões de teste beta do software são distribuídas idealmente para um grande público na Web, em parte para dar ao programa um teste do "mundo real" e em parte para fornecer uma prévia do próximo lançamento. Nesta fase, o público testará o seguinte -

  • Os usuários irão instalar, executar o aplicativo e enviar seus comentários para a equipe do projeto.

  • Erros de digitação, fluxo de aplicativo confuso e até mesmo travamentos.

  • Obtendo o feedback, a equipe do projeto pode corrigir os problemas antes de lançar o software para os usuários reais.

  • Quanto mais problemas você corrigir para resolver problemas reais do usuário, maior será a qualidade do seu aplicativo.

  • Ter um aplicativo de qualidade superior quando você o lançar para o público em geral aumentará a satisfação do cliente.

Teste Não Funcional

Esta seção é baseada no teste de um aplicativo de seus atributos não funcionais. O teste não funcional envolve o teste de um software a partir dos requisitos que não são funcionais por natureza, mas são importantes, como desempenho, segurança, interface do usuário, etc.

Alguns dos tipos de teste não funcionais importantes e comumente usados ​​são discutidos abaixo.

Teste de performance

Ele é mais usado para identificar quaisquer gargalos ou problemas de desempenho, em vez de encontrar bugs em um software. Existem diferentes causas que contribuem para diminuir o desempenho de um software -

  • Atraso de rede

  • Processamento do lado do cliente

  • Processamento de transação de banco de dados

  • Balanceamento de carga entre servidores

  • Renderização de dados

O teste de desempenho é considerado um dos tipos de teste importantes e obrigatórios em termos dos seguintes aspectos -

  • Velocidade (ou seja, tempo de resposta, processamento de dados e acesso)

  • Capacity

  • Stability

  • Scalability

O teste de desempenho pode ser qualitativo ou quantitativo e pode ser dividido em diferentes subtipos, como Load testing e Stress testing.

Teste de carga

É um processo de testar o comportamento de um software aplicando carga máxima em termos de software acessando e manipulando grandes dados de entrada. Isso pode ser feito em condições normais e de pico de carga. Este tipo de teste identifica a capacidade máxima do software e seu comportamento no horário de pico.

Na maioria das vezes, o teste de carga é executado com a ajuda de ferramentas automatizadas, como Load Runner, AppLoader, IBM Rational Performance Tester, Apache JMeter, Silk Performer, Visual Studio Load Test, etc.

Os usuários virtuais (VUsers) são definidos na ferramenta de teste automatizado e o script é executado para verificar o teste de carga do software. O número de usuários pode ser aumentado ou diminuído simultaneamente ou incrementalmente com base nos requisitos.

Teste de Estresse

O teste de estresse inclui testar o comportamento de um software sob condições anormais. Por exemplo, pode incluir retirar alguns recursos ou aplicar uma carga além do limite de carga real.

O objetivo do teste de estresse é testar o software aplicando a carga ao sistema e assumindo os recursos usados ​​pelo software para identificar o ponto de ruptura. Este teste pode ser realizado testando diferentes cenários, como -

  • Desligamento ou reinicialização das portas de rede aleatoriamente

  • Ligar ou desligar o banco de dados

  • Executando diferentes processos que consomem recursos como CPU, memória, servidor, etc.

Testando usabilidade

O teste de usabilidade é uma técnica de caixa preta e é usado para identificar qualquer erro (s) e melhorias no software, observando os usuários durante seu uso e operação.

De acordo com Nielsen, a usabilidade pode ser definida em termos de cinco fatores, ou seja, eficiência de uso, capacidade de aprendizado, capacidade de memória, erros / segurança e satisfação. Segundo ele, a usabilidade de um produto será boa e o sistema é utilizável se possuir os fatores acima.

Nigel Bevan e Macleod consideraram que usabilidade é o requisito de qualidade que pode ser medido como o resultado de interações com um sistema de computador. Este requisito pode ser atendido e o usuário final ficará satisfeito se os objetivos pretendidos forem alcançados de forma eficaz com o uso de recursos adequados.

Molich em 2000 afirmou que um sistema amigável deve cumprir os cinco objetivos a seguir, ou seja, fácil de aprender, fácil de lembrar, eficiente de usar, satisfatório de usar e fácil de entender.

Além das diferentes definições de usabilidade, existem alguns padrões e modelos e métodos de qualidade que definem usabilidade na forma de atributos e subatributos, como ISO-9126, ISO-9241-11, ISO-13407 e padrão IEEE. 610,12, etc.

IU vs Teste de Usabilidade

O teste de IU envolve o teste da Interface Gráfica do Usuário do Software. O teste de IU garante que a GUI funcione de acordo com os requisitos e testado em termos de cor, alinhamento, tamanho e outras propriedades.

Por outro lado, o teste de usabilidade garante uma GUI boa e amigável que pode ser facilmente manuseada. O teste de IU pode ser considerado uma subparte do teste de usabilidade.

Teste de Segurança

O teste de segurança envolve testar um software para identificar quaisquer falhas e lacunas do ponto de vista de segurança e vulnerabilidade. Listados abaixo estão os principais aspectos que os testes de segurança devem garantir -

  • Confidentiality

  • Integrity

  • Authentication

  • Availability

  • Authorization

  • Non-repudiation

  • O software é seguro contra vulnerabilidades conhecidas e desconhecidas

  • Os dados do software estão seguros

  • O software está de acordo com todos os regulamentos de segurança

  • Verificação e validação de entrada

  • Ataques de inserção SQL

  • Falhas de injeção

  • Problemas de gerenciamento de sessão

  • Ataques de script entre sites

  • Vulnerabilidades de estouro de buffer

  • Ataques de passagem de diretório

Teste de portabilidade

O teste de portabilidade inclui o teste de um software com o objetivo de garantir sua reutilização e que também possa ser movido de outro software. A seguir estão as estratégias que podem ser usadas para testes de portabilidade -

  • Transferir um software instalado de um computador para outro.

  • Construir executável (.exe) para executar o software em diferentes plataformas.

O teste de portabilidade pode ser considerado uma das subpartes do teste de sistema, pois esse tipo de teste inclui o teste geral de um software com relação ao seu uso em diferentes ambientes. Hardware de computador, sistemas operacionais e navegadores são o foco principal dos testes de portabilidade. Algumas das pré-condições para o teste de portabilidade são as seguintes -

  • O software deve ser projetado e codificado levando em consideração os requisitos de portabilidade.

  • O teste de unidade foi executado nos componentes associados.

  • O teste de integração foi executado.

  • O ambiente de teste foi estabelecido.