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
-
EX088 — Rajada plantada. Que rajada plantada deve ser sinalizada? Rubrica: 3 = dez falhas em quatro minutos;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
-
EX089 — Teste reprovado. Que caso plantado falhou no início? Rubrica: 3 = dez falhas abrangendo exatamente cinco minutos;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
-
EX090 — Testes permanentes. Por que manter os casos plantados de forma permanente? Rubrica: 3 = para conferir rapidamente as mudanças futuras;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
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.