Capítulo 3 — Fundamentos de programação
Mapa da aula
Aula 03 publicada. Mapa, exemplo, EX007.
flowchart TD
N0["3.1 Scripts seguros"]
N1["3.2 Logs"]
N2["3.3 Validação da entrada"]
N3["3.4 Geração de dados de teste"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX007"]
Desenho lógico
flowchart LR
N0["3.1 Scripts seguros"]
N1["3.2 Logs"]
N2["3.3 Validação da entrada"]
N3["3.4 Geração de dados de teste"]
N0 --> N1 --> N2 --> N3 --> Q["EX007"]
[3.1 Scripts seguros]
|
v
[3.2 Logs]
|
v
[3.3 Validação da entrada]
|
v
[3.4 Geração de dados de teste]
|
v
[Exemplo resolvido] --> [Exercício EX007]
Objetivos de aprendizagem
Você vai (1) escrever scripts que tratem os dados dos alunos com segurança; (2) evitar imprimir ou registrar em log dados pessoais; (3) usar dados de teste.
3.1 Scripts seguros
Aisha escreve scripts em Python para contar a presença nas aulas. O Sr. Reilly exige dados sintéticos de alunos em todos os exercícios. O script lê um arquivo de reservas, conta a presença por aula e imprime os totais. Ela evita imprimir os nomes dos alunos, que não são necessários para os totais. Aprende que os scripts costumam ser copiados e reaproveitados, então os hábitos formados em scripts simples se espalham para os sistemas de produção. Por isso o script agrupa as reservas por código de aula e data, e a única saída é uma tabela como Spinning terça 18h com vinte e dois participantes.
3.2 Logs
Aisha acrescenta logs ao script para ajudar na depuração. A primeira versão registra cada reserva com o nome do aluno. Ela a altera para registrar apenas as referências das reservas e as contagens. Explica que os logs costumam ser guardados por mais tempo e acessados por mais pessoas do que os dados que descrevem, de modo que dados pessoais em logs criam exposição desnecessária. No script dela, uma linha de log agora diz que a reserva B-10422 foi contada para a aula SPN-18, o que ainda permite rastrear um erro até o arquivo de origem sem revelar quem frequentou a aula.
3.3 Validação da entrada
O script de Aisha lê arquivos exportados do sistema de reservas. Ela acrescenta verificações de que o arquivo só tem as colunas esperadas, e o script para se encontrar colunas inesperadas, como observações de saúde. Ela explica que a validação apoia a minimização, já que um script não deve tratar dados de que não precisa, e que parar de forma ruidosa é melhor do que tratar em silêncio informações sensíveis. A verificação compara a linha de cabeçalho com uma lista permitida de cinco colunas e encerra com uma mensagem que nomeia a coluna extra, como medical_notes, para que o responsável corrija a exportação.
3.4 Geração de dados de teste
Aisha escreve um gerador de alunos sintéticos com nomes, idades, tipos de plano e reservas. Inclui casos extremos, como alunos com nomes longos ou sem nenhuma reserva, e compartilha o gerador com os colegas. Ele usa uma semente aleatória fixa, então os colegas que o executam obtêm os mesmos alunos e podem comparar os resultados linha a linha. O Sr. Reilly observa que bons dados de teste tornam o desenvolvimento mais seguro e mais rápido, e que usar dados reais de alunos em testes é uma causa comum de incidentes, porque os ambientes de teste são menos protegidos.
Exemplo resolvido
Aisha escreve um script de presença que imprime totais sem nomes, registra só referências em log, rejeita colunas inesperadas e gera alunos sintéticos com casos extremos.
Caso sintético. Os scripts e os alunos são sintéticos.
Erros e limites
Dados sintéticos podem deixar de fora peculiaridades reais; acrescente-as de propósito.
Exercícios
- EX007 — Sem nomes nos totais. Por que o script de Aisha não imprime nomes? Rubrica: 3 = os totais não precisam deles;; 2 = menciona minimização;; 1 = imprime;; 0 = nenhuma.
- EX008 — Conteúdo do log. O que Aisha registra em log no lugar dos nomes? Rubrica: 3 = referências das reservas e contagens;; 2 = menciona referências;; 1 = nomes;; 0 = nenhuma.
- EX009 — Dados reais em teste. Por que evitar dados reais de alunos nos testes? Rubrica: 3 = é uma causa comum de incidentes;; 2 = menciona risco;; 1 = não há problema;; 0 = nenhuma.
Continue estudando — aula 03 (capítulo 03 de 30)
← Capítulo 02 · Índice das aulas · Capítulo 04 →
Continue para a próxima aula já escrita.