◇ OpenCyber Academy
Engenharia · Capítulo 30 · Português

Capítulo 30 — Laboratório de verificação I

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 30 — Laboratório de verificação I

Mapa da aula

Aula 30 publicada. Mapa, exemplo, EX088.

flowchart TD
  N0["30.1 Plano de testes"]
  N1["30.2 Executando os testes"]
  N2["30.3 Um teste reprovado"]
  N3["30.4 Teste versus controle"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX088"]

Desenho lógico

flowchart LR
  N0["30.1 Plano de testes"]
  N1["30.2 Executando os testes"]
  N2["30.3 Um teste reprovado"]
  N3["30.4 Teste versus controle"]
  N0 --> N1 --> N2 --> N3 --> Q["EX088"]
[30.1 Plano de testes]
    |
    v
[30.2 Executando os testes]
    |
    v
[30.3 Um teste reprovado]
    |
    v
[30.4 Teste versus controle]
    |
    v
[Exemplo resolvido] --> [Exercício EX088]

Objetivos de aprendizagem

Você vai (1) verificar controles com testes planejados; (2) registrar as evidências dos testes; (3) distinguir a falha de um teste da falha de um controle.

30.1 Plano de testes

No laboratório de verificação, Lindiwe escreve um plano de testes para quatro controles que ajudou a construir: a verificação da linha de base, a medida de adivinhação de senhas, o alerta de mudança de endereço e a conciliação de ativos. Para cada um, ela define as entradas, os resultados esperados e os critérios de aprovação. A verificação da linha de base deve reprovar um servidor plantado com o login de root ativado; a medida de adivinhação deve sinalizar uma rajada plantada de dez falhas em quatro minutos. O Prof. Hale aprova o plano antes do início dos testes. Cada teste é listado numa única tabela com sua entrada plantada e o resultado esperado.

30.2 Executando os testes

Lindiwe executa os testes sobre dados sintéticos. A verificação da linha de base reprova corretamente o servidor plantado. A medida de adivinhação sinaliza a rajada plantada e ignora uma sequência lenta plantada, como pretendido. O alerta de endereço dispara para uma mudança plantada uma hora antes do despacho. A conciliação de ativos lista corretamente um host não registrado plantado. Ela registra cada execução com a data, as entradas, as saídas e a versão de cada script, para que os resultados possam ser reproduzidos. Os quatro controles passam nos seus primeiros casos planejados. Ela guarda as entradas plantadas junto com os scripts.

30.3 Um teste reprovado

Um teste falha: uma rajada plantada de exatamente dez falhas que abrange precisamente cinco minutos não é sinalizada. Lindiwe examina o código e descobre que a comparação trata o limite de forma incoerente com sua definição escrita. Ela corrige o código, executa de novo todos os testes e confirma que o caso plantado agora é sinalizado e que os resultados anteriores não mudaram. O Prof. Hale observa que os casos-limite são onde as definições e o código mais costumam discordar. Ela acrescenta o caso-limite ao conjunto permanente de testes, para que o mesmo erro seja pego de novo. A correção é uma única comparação alterada.

30.4 Teste versus controle

Lindiwe reflete sobre o que o teste reprovado significou. O controle em si, detectar a adivinhação, era sólido; a implementação tinha um erro de limite. Se o teste não existisse, um ataque real exatamente no limite teria passado despercebido. Ela escreve no relatório do laboratório que os testes verificam as implementações contra as definições, e que manter os casos de teste plantados de forma permanente permite conferir rapidamente as mudanças futuras. O Prof. Hale pede que ela apresente esse exemplo à turma, porque ele mostra com clareza por que a verificação precisa de casos planejados em cada limite, e não apenas de entradas típicas.

Exemplo resolvido

Lindiwe testa quatro controles com casos plantados, encontra um erro de limite na medida de adivinhação, o corrige e executa de novo todos os testes.

Caso sintético. Os testes são sintéticos.

Erros e limites

Os casos-limite não testados muitas vezes revelam discordância entre a definição e o código.

Exercícios

Continue estudando — aula 30 (capítulo 30 de 50)

← Capítulo 29 · Índice das aulas · Capítulo 31 →

Continue para a próxima aula já escrita.