Created
June 22, 2017 03:34
-
-
Save eltonvs/4f44f8d7fa3c09d2edd17830ea483012 to your computer and use it in GitHub Desktop.
Revisions
-
eltonvs created this gist
Jun 22, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,80 @@ # Depuração ## Definição É o processo de encontrar e reduzir erros em um software (ou hardware). // É o processo de identificar a causa-raiz de um erro e corrigi-lo. Erros de software podem ser os que impedem a execução ou os que geram um resultado inesperado Bug = programador cometeu um erro ## Diferença entre deupração e teste de software Teste de Software: - Detecta a presença de defeitos na execução de um programa - Idealmente realizado por uma equipe própria de testes Depuração - Diagnostica a causa/Corrige os defeitos já detectados em um programa - Geralmente realizada pela equipe de desenvolvimento. ## Depuração e qualidade de software Depuração não é uma maneira de melhorar a qualidade de um software (assim como os testes). É um último recurso, pois os erros já ocorreram e os defeitos já estão presentes no código, logo a qualidade já está comprometida. Nem todo programador sabe realizar uma depuração de forma correta, eficiente e eficaz. Em alguns projetos, metade do tempo de desenvolvimento é apenas de depuração. Para alguns programadores, a depuração é a parte mais difícil da programação. ## Como diagnosticar e corrigir defeitos ### Como **não** diagnosticar e corrigir defeitos: - Usando `print()` em pontos aleatorios do codigo para ir acompanhando a execução do programa. (no-console rule) - Mexer no código e ver o que acontece até o ele funcionar direito... - Ignorar a necessidade de entender o problema - Corrigir o erro de forma simplista - Se Iludir (se ausentar da culpa) ### Como diagnosticar e corrigir defeitos: - Estabilizar o erro -> - Localizar a causa dele -> Corrigir o erro -> - Testar a correção do erro -> - Procurar por erros similares -> (loop...) #### Estabilizar o erro - Saber como reproduzir o erro ou torná-lo previsível caso seja intermitente - Encontrar casos de teste que sejam capazer de fazer como que o erro se manifeste durante a execução. (devem ser os mais simples possíveis...) - Manter um ambiente de depuração controlável, facilitando a detecção do erro #### Localizar a causa do erro, isto é, a falha - Coletar e analisar dados relacionados à ocorrência de erro - Se os dados não forem suficientes para gerar evidências acerca da possível causa do erro, provavelmente seja necessário redefinir novos casos de teste - Tentar reproduzir o erro de diferentes formas e fazer eliminações - Formular hipóteses sobre a possível causa do erro - Confirmar ou rejeitar as hipóteses levantadas - Identificar a proção de código suspeita, expandindo ou restringindo-a - Utilizar ferramentas (depurador, breakpoints, stacktraces, profiling...) - Realizar o logging para registrar o que ocorre na execução do programa #### Corrigir o erro - Entender bem o problema e o programa antes de corrigi-lo - Confirmar o diagnóstico do defeito - Implementar a correção do defeito - Primeiro analisar todas os possíveis efeitos das alterações a serem feitas - Fazer um backup da versão original (antes da correção) #### Testar a correção do erro - Atestar se a correção implementada realmente resolve o defeito - Utilizar casos de teste previamente estabelecidos - Delinear novos casos de teste - Verificar se a correção do defeito não gerou novos defeitos e erros