Capítulo 30 — Laboratório de verificação I
Mapa da aula
Aula 30 publicada. Mapa, exemplo, EX088.
flowchart TD
N0["30.1 Testes a partir das ameaças"]
N1["30.2 Testes de direitos"]
N2["30.3 Evidências"]
N3["30.4 Novos testes"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX088"]
Desenho lógico
flowchart LR
N0["30.1 Testes a partir das ameaças"]
N1["30.2 Testes de direitos"]
N2["30.3 Evidências"]
N3["30.4 Novos testes"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX088"]
[30.1 Testes a partir das ameaças]
|
v
[30.2 Testes de direitos]
|
v
[30.3 Evidências]
|
v
[30.4 Novos testes]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX088]
Objetivos de aprendizagem
Você vai (1) verificar controles de privacidade com testes; (2) projetar testes a partir das ameaças; (3) registrar evidências para a responsabilização.
30.1 Testes a partir das ameaças
No primeiro laboratório de verificação, Zara transforma os cenários de ameaça do Capítulo 23 em testes. Para a vinculabilidade, ela verifica se os eventos de análise carregam pseudônimos específicos de cada destinatário e se dois destinatários nunca recebem o mesmo identificador. Para os resultados enviados ao destinatário errado, ela envia resultados sintéticos com nomes divergentes e verifica se o sistema os bloqueia. Para a bisbilhotice de funcionários, ela simula visualizações de prontuários sem consulta agendada e verifica se o sinal de anomalia dispara em até um dia. Cada teste tem um resultado esperado definido antes da execução, o que impede interpretar os resultados com generosidade depois.
30.2 Testes de direitos
Zara testa os direitos dos titulares de ponta a ponta. Ela cria um paciente sintético, usa o aplicativo durante uma semana de consultas e mensagens fictícias e depois pede acesso, retificação e eliminação. A exportação de acesso inclui todos os dados, exceto os logs de chat, guardados por um fornecedor e ainda não integrados. O pedido de eliminação remove os dados de quatro dos cinco armazenamentos, mas o armazenamento de análise mantém os eventos sob o pseudônimo. As duas falhas viram defeitos com responsáveis. Ela registra que testes de ponta a ponta com pacientes sintéticos realistas encontram lacunas que os testes unitários não enxergam.
30.3 Evidências
Cada teste produz evidências: entradas, saídas, data e responsável pelo teste. Zara guarda as evidências em uma pasta versionada e resume os resultados em uma tabela. O princípio da responsabilização exige que a Pellmore consiga demonstrar a conformidade, como também prevê o art. 6º, X, da LGPD, e as evidências de teste estão entre as formas mais fortes de demonstração. Ela explica que dizer que a eliminação funciona é uma alegação, enquanto um log de teste datado mostrando a eliminação em todos os armazenamentos é uma evidência. O Prof. Holm pede que ela inclua os testes reprovados nas evidências, porque esconder as falhas tornaria a pasta enganosa.
30.4 Novos testes
Depois que os defeitos são corrigidos, Zara repete os testes. A exportação de acesso agora inclui os logs de chat, e a eliminação alcança o armazenamento de análise. Ela registra as duas execuções, mostrando a falha e a correção. Também acrescenta os testes ao pipeline de integração contínua, para que rodem a cada versão. A verificação, conclui ela, não é um certificado pontual, mas um hábito: as propriedades de privacidade podem quebrar sempre que o sistema muda, e só testes executados com regularidade pegam as regressões antes que cheguem aos pacientes. Os testes rodam a cada versão.
Exemplo resolvido
Zara transforma ameaças em testes, encontra lacunas no acesso (faltavam os logs de chat) e na eliminação (a análise mantinha os dados), registra as evidências, inclusive as falhas, e acrescenta os novos testes à integração contínua.
Caso sintético. Os testes e o paciente são sintéticos.
Erros e limites
Os testes verificam o que conferem; caminhos não testados ainda podem falhar.
Exercícios
- EX088 — Resultados esperados. Por que definir os resultados esperados antes de executar os testes? Rubrica: 3 = para impedir uma interpretação generosa depois de ver os resultados;; 2 = menciona viés;; 1 = não é necessário;; 0 = nenhuma.
- EX089 — Lacuna na eliminação. Que armazenamento manteve dados depois da eliminação na primeira execução? Rubrica: 3 = o armazenamento de análise, sob o pseudônimo;; 2 = cita a análise;; 1 = vago;; 0 = nenhuma.
- EX090 — Alegação versus evidência. Diferencie alegação de evidência sobre a eliminação. Rubrica: 3 = a alegação diz que funciona; a evidência é um log de teste datado cobrindo todos os armazenamentos;; 2 = menciona logs;; 1 = equipara as duas;; 0 = nenhuma.
Síntese
O capítulo 30 verifica controles. O capítulo 31 implementa a próxima geração de funcionalidades.
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.