Esta é a segunda parte de Depuração ( Debug ) - Como posso depurar (depurar) meu programa?. Se você perdeu a parte anterior aqui está a lista. Como posso depurar (depurar) meu programa?
Saiba o que é suposto fazer
O primeiro passo para depurar ( debug ) algo é saber o que deve ser feito. “Meu programa não funciona” não é bom o suficiente: para diagnosticar e corrigir problemas, precisamos ser capazes de diferenciar a saída correta da incorreta.
Se pudermos escrever um caso de teste para o caso com falha - ou seja, se pudermos afirmar que com essas entradas, a função deve produzir esse resultado - estamos prontos para iniciar a depuração. Se não pudermos, precisamos descobrir como saberemos quando consertamos as coisas.
Mas escrever casos de teste para software científico é frequentemente mais difícil do que escrever casos de teste para aplicativos comerciais, porque se soubéssemos qual deveria ser a saída do código científico, não estaríamos executando o software: estaríamos escrevendo nosso resultados e passar para o próximo programa. Na prática, os cientistas tendem a fazer o seguinte:
1. Teste com dados simplificados. Antes de fazer estatísticas em um conjunto de dados real, devemos tentar calcular estatísticas para um único registro, para dois registros idênticos, para dois registros cujos valores estejam separados por um passo ou para algum outro caso em que possamos calcular a resposta certa manualmente.
2. Teste um caso simplificado. Se nosso programa deve simular redemoinhos magnéticos em bolhas de hélio super-resfriado que giram rapidamente, nosso primeiro teste deve ser uma bolha de hélio que não está girando e não está sendo submetida a nenhum campo eletromagnético externo. Da mesma forma, se estivermos analisando os efeitos das mudanças climáticas na especiação, nosso primeiro teste deve manter a temperatura, a precipitação e outros fatores constantes.
3. Compare com um oráculo. Um oráculo de teste é algo cujos resultados são confiáveis, como dados experimentais, um programa mais antigo ou um especialista humano. Usamos oráculos de teste para determinar se nosso novo programa produz os resultados corretos. Se tivermos um oráculo de teste, devemos armazenar sua saída para casos particulares para que possamos compará-la com nossos novos resultados quantas vezes quisermos sem executar novamente esse programa.
4. Verifique as leis de conservação. Massa, energia e outras quantidades são conservadas em sistemas físicos, portanto, também deveriam estar em programas. Da mesma forma, se estivermos analisando dados de pacientes, o número de registros deve permanecer o mesmo ou diminuir à medida que passamos de uma análise para outra (já que podemos descartar valores discrepantes ou registros com valores ausentes). Se “novos” pacientes começarem a aparecer do nada à medida que avançamos em nosso pipeline, provavelmente é um sinal de que algo está errado.
5. Visualizar. Os analistas de dados costumam usar visualizações simples para verificar a ciência que estão fazendo e a correção de seu código (assim como fizemos na lição de abertura deste tutorial). Isso só deve ser usado para depuração como último recurso, pois é muito difícil comparar duas visualizações automaticamente.
0 Comentários