O que é teste não funcional?
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 um modo de teste funcional. Nesta parte, você explorará os tipos de testes não funcionais que podem ser executados em um pipeline.
A equipe primeiro define testes não funcionais. Ela fala sobre alguns tipos desses testes. Em seguida, decide quanto a um teste não funcional a adicionar ao pipeline.
Como os testes não funcionais se comparam aos testes funcionais?
Em Executar testes funcionais no Azure Pipelines, definimos os testes funcionais e os testes não funcionais.
Em resumo, os testes funcionais verificam se cada função do software faz o que deveria. Em outras palavras, os testes funcionais verificam a funcionalidade de um aplicativo.
Os testes não funcionais verificam aspectos 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 teste não funcional é determinar quantas pessoas podem se conectar simultaneamente a um aplicativo sem causar problemas, como tempos de resposta mais lentos.
Usando o site do Space Game como exemplo, um teste funcional pode verificar se o placar de líderes aparece corretamente e mostra os registros corretos quando o usuário seleciona um filtro. Um teste não funcional pode verificar se a filtragem do placar de líderes é concluída em menos de um segundo, mesmo quando muitos usuários se conectam ao site ao mesmo tempo.
O teste não funcional sempre testa algo mensurável. A meta é aprimorar o produto. Você pode fazer isso, por exemplo, melhorando a eficiência com que o aplicativo usa os 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 o aplicativo é executado em circunstâncias normais?
- Como o aplicativo é executado quando muitos usuários entram simultaneamente?
- Quão seguro é o aplicativo?
Que tipos de testes não funcionais posso executar?
Há vários tipos de testes não funcionais. Muitos se encaixam nas categorias amplas de teste de desempenho e teste de segurança.
Testes de desempenho
O objetivo do teste de desempenho é melhorar a velocidade, a escalabilidade e a estabilidade de um aplicativo. O teste para velocidade determina a rapidez com que um aplicativo responde. O teste de escalabilidade determina a carga máxima do usuário que um aplicativo pode processar. O teste de estabilidade determina se o aplicativo permanece estável sob cargas diferentes. Dois tipos comuns de testes de desempenho são testes de carga e testes de estresse.
Teste de carga
Os testes de carga determinam o desempenho de um aplicativo sob cargas realistas. Por exemplo, testes de carga podem determinar o desempenho de um aplicativo no limite superior de seu SLA (contrato de nível de serviço). Basicamente, o teste de carga determina o comportamento 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 software de impressora pode enviar grandes quantidades de dados ao aplicativo. 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 somente quando o aplicativo está operando em seus limites. Isso ocorre quando problemas como estouro de buffer e vazamentos de memória podem surgir.
Neste módulo, você usará o Apache JMeter para realizar os testes de carga. Você usará um conjunto de usuários simulados que acessam o site simultaneamente.
testes de estresse
Os testes de estresse determinam a estabilidade e a robustez de um aplicativo sob cargas pesadas. As cargas vão além do que é especificado para o aplicativo. Os testes de estresse determinam se o aplicativo apresentará falhas sob essas cargas. Se o aplicativo falhar, o teste de estresse verificará se ele falha normalmente. Uma falha normal pode, por exemplo, emitir uma mensagem de erro informativa apropriada.
Cenários em que os aplicativos devem operar sob cargas anormalmente pesadas são comuns. Por exemplo, caso seu vídeo viralize, você vai querer saber como os servidores poderão lidar com a carga extra. Outro cenário típico é tráfego alto em sites de compras durante a época de Natal.
Testes de segurança
Os testes de segurança garantem que os aplicativos estejam livres de vulnerabilidades, ameaças e riscos. Um teste de segurança completo encontra todas as possíveis brechas e pontos fracos do sistema que podem causar uma violação de informações ou uma perda de receita.
Há muitos tipos de testes de segurança. Dois deles são o teste de penetração e o teste de conformidade.
Teste de penetração
O teste de penetração (ou pen testing) é um tipo de teste de segurança que testa as áreas inseguras do aplicativo. Em particular, ele testa as vulnerabilidades que um invasor pode explorar. Um ciberataque simulado autorizado geralmente faz parte do teste de penetração.
Teste de conformidade
Os testes de conformidade determinam se um aplicativo é compatível com algum conjunto de requisitos, dentro ou fora da empresa. Por exemplo, as organizações do setor de saúde geralmente precisam estar em conformidade com alei americana HIPAA (Health Insurance Portability Accountability Act de 1996), que define a privacidade de dados e a segurança para proteger informações médicas.
Uma organização também pode ter os próprios requisitos de segurança. O software deve ser testado para garantir que ele siga 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 precisa provar que esse 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.