O que é o teste não funcional?

Concluído

Em Executar testes funcionais no Azure Pipelines, você adicionou testes de interface do usuário do Selenium ao pipeline. Os testes de interface do usuário são uma forma de teste funcional. Nesta parte, você explora os tipos de testes não funcionais que podem ser executados em um pipeline.

A equipe primeiro define testes não funcionais. Eles falam sobre alguns tipos desses testes. Em seguida, eles decidem sobre um teste não funcional para adicionar ao seu pipeline.

Como os testes não funcionais se comparam aos testes funcionais?

Em Executar testes funcionais no Azure Pipelines, definimos testes funcionais e testes não funcionais.

Em suma, os testes funcionais verificam se cada função do software faz o que deveria. Em outras palavras, testes funcionais verificam a funcionalidade de um aplicativo.

Os testes não funcionais verificam aspetos não funcionais de um aplicativo, como desempenho e confiabilidade. Você também pode executar testes não funcionais em sistemas que não são aplicativos, como componentes de infraestrutura. Um exemplo de um teste não funcional é determinar quantas pessoas podem entrar simultaneamente em um aplicativo sem causar um problema, como tempos de resposta mais lentos.

No site Space Game como exemplo, um teste funcional pode verificar se a tabela de classificação aparece corretamente e se mostra os registros corretos quando o usuário seleciona um filtro. Um teste não funcional pode verificar se a filtragem da tabela de classificação termina em menos de um segundo, mesmo quando muitos usuários se conectam ao site ao mesmo tempo.

Os testes não funcionais testam sempre algo que é mensurável. O objetivo é melhorar o produto. Você pode fazer isso, por exemplo, melhorando a eficiência com que o aplicativo usa recursos ou melhorando os tempos de resposta quando muitos clientes o usam simultaneamente. Aqui estão algumas das perguntas que os testes não funcionais podem responder:

  • Como funciona a aplicação em circunstâncias normais?
  • Como funciona o aplicativo quando muitos usuários entram simultaneamente?
  • Quão segura é a aplicação?

Que tipos de testes não funcionais posso executar?

Existem muitos tipos de testes não funcionais. Muitos deles se encaixam nas amplas categorias de testes de desempenho e testes de segurança.

Testes de desempenho

O objetivo dos testes de desempenho é melhorar a velocidade, a escalabilidade e a estabilidade de um aplicativo. O teste de velocidade determina a rapidez com que um aplicativo responde. O teste de escalabilidade determina a carga máxima de usuário que um aplicativo pode suportar. O teste de estabilidade determina se a aplicação permanece estável sob diferentes cargas. Dois tipos comuns de testes de desempenho são os testes de carga e os testes de esforço.

Teste de carga

Os testes de carga determinam o desempenho de um aplicativo sob cargas realistas. Por exemplo, os testes de carga podem determinar o desempenho de um aplicativo no limite superior de seu contrato de nível de serviço (SLA). Basicamente, o teste de carga determina os comportamentos do aplicativo quando vários usuários precisam dele ao mesmo tempo.

Os usuários não são necessariamente pessoas. Por exemplo, um teste de carga para o software da impressora pode enviar ao aplicativo grandes quantidades de dados. Um teste de carga para um servidor de email pode simular milhares de usuários simultâneos.

O teste de carga também é uma boa maneira de descobrir problemas que existem apenas quando o aplicativo está operando em seus limites. É quando problemas como estouro de buffer e vazamentos de memória podem surgir.

Neste módulo, você usará o Apache JMeter para executar testes de carga. Você usará um conjunto de usuários simulados que acessam o site simultaneamente.

Testes de esforço

Os testes de esforço determinam a estabilidade e a robustez de uma aplicação sob cargas pesadas. As cargas vão além do que é especificado para o aplicativo. Os testes de esforço determinam se o aplicativo irá falhar sob essas cargas. Se o aplicativo falhar, o teste de esforço verifica se ele falha normalmente. Uma falha normal pode, por exemplo, emitir uma mensagem de erro apropriada e informativa.

Cenários em que os aplicativos devem operar sob cargas anormalmente pesadas são comuns. Por exemplo, caso seu vídeo se torne viral, você vai querer saber como os servidores podem lidar com a carga extra. Outro cenário típico é o alto tráfego em sites de compras durante as temporadas de férias.

Testes de segurança

Os testes de segurança garantem que os aplicativos estejam livres de vulnerabilidades, ameaças e riscos. Testes de segurança minuciosos encontram todas as possíveis lacunas e fraquezas do sistema que podem causar uma violação de informações ou uma perda de receita.

Existem muitos tipos de testes de segurança. Dois deles são testes de penetração e testes de conformidade.

Testes de penetração

O teste de penetração, ou teste de caneta, é um tipo de teste de segurança que testa as áreas inseguras do aplicativo. Em particular, testa vulnerabilidades que um invasor pode explorar. Um ataque cibernético autorizado e simulado geralmente faz parte dos testes de penetração.

Testes de conformidade

Os testes de conformidade determinam se um aplicativo está em conformidade com algum conjunto de requisitos, dentro ou fora da empresa. Por exemplo, as organizações de saúde geralmente precisam cumprir a HIPAA (Health Insurance Portability and Accountability Act of 1996), que fornece privacidade de dados e disposições de segurança para proteger informações médicas.

Uma organização também pode ter seus próprios requisitos de segurança. O software deve ser testado para se certificar de que cumpre estes requisitos. Por exemplo, em sistemas Linux, a máscara de usuário padrão deve ser 027 ou mais restritiva. Um teste de segurança tem de provar que este requisito é cumprido.

O plano

No restante deste módulo, você configurará seu ambiente de DevOps do Azure, aprenderá sobre o planejamento de testes de carga usando o Apache JMeter e executará testes de carga no Azure Pipelines.

Verifique o seu conhecimento

1.

Você conectou recentemente seu aplicativo Web a um banco de dados. Os registros de banco de dados aparecem quando a página é carregada. Você deseja verificar se as chamadas de banco de dados não fazem com que a página demore mais de um segundo para carregar. Que tipo de teste não funcional você pode usar?

2.

Seu site vende ingressos para concertos para um local local. O local está sediando um evento de vários dias que inclui muitos artistas populares. Você está nervoso que o site não será capaz de lidar com o aumento repentino no tráfego. Que tipo de teste pode ajudar a aliviar a sua mente?

3.

Você suspeita que seu site expõe uma vulnerabilidade que permitiria que um hacker acessasse dados confidenciais. Que tipo de teste não funcional você pode executar para descobrir essa vulnerabilidade?