디버깅의 이유

소울치킨·2022년 4월 21일
0

Python Code

목록 보기
3/4
post-thumbnail

디버깅의 이유

광주 인공지능 사관학교 pre-course로 제공받은 elice 의 디버깅 강의 정리입니다.

1. 디버딩의 필요

1.1. Bug (버그)

  • 코드가 원하는 대로 동작하지 않는 모든 경우
    • 프로그램이 죽는 (크래시가 발생하는) 경우
    • 예상한 속도보다 훨씬 느리게 동작하는 경우
    • 잘못된 결과를 출력하는 경우
    • 코드 설계 상 일어나면 안되는 상황이 일어난 경우

1.2. Exception (예외)

  • 일반적이지 않은 코드의 동작
    • 사용자의 프로그램을 강제 종료 하는 경우
    • 분수의 분모에 0 이 들어가는 경우
    • 열고자 하는 파일이 존재하지 않는 경우
    • 인터넷이 불안정한 경우

버그와 예외의 차이는 '원하는 대로'에 있는 것 같다.

1.3. Exception handling (예외 처리)

  • 만약 파일을 불러오는 중에 인터넷이 끊긴다면 ?
    • 로딩만 돌아가다가 사용자가 화나서 꺼버림
  • 처리되지 않은 예외는 버그를 만들 수 있음

개발자는 사용자의 다양한 상황을 예측할 수 있어야한다.

2. 디버깅이 뭐야?

  • 사용 / 테스트 중 찾아낸 버그를 없애 나가는 과정
    1. 버그의 원인을 찾고
    2. 발생한 버그를 해결하고
    3. 비슷한 버그의 재발을 방지

2.1. 버그의 원인 찾기

  • 어떤 상황에서, 어떤 조작을 했을 때 일어나는가?
  • 얼마나 잦은 빈도로 발생하는가?
  • 에러 메시지가 뜬다면 내용이 무엇인가?

2.2. 발생한 버그 해결하기

  • 버그가 발생한 원인을 해결하려면 어떻게 해야하는가?
  • 새로운 코드가 일으킬 새로운 버그는 없는가?

2.3. 버그 재발 방지하기

  • 버그를 일으킨 코드가 다른 곳에서 사용되는가?
  • 비슷한 설계를 이용한 다른 코드는 없는가?
  • 고친 코드의 약점은 없는가?
  • 코드를 지속적으로 검증할 방법은 무엇인가?

3. 디버깅이 중요한 이유

3.1. 사용자 경험과 직결된다.

  • 버그로 인한 불쾌한 경험 > 새로운 기능

3.2. 처음부터 완벽한 코드는 없다.

  • 빠르게 문제를 파악 / 해결하는 것이 중요
  • 너무 잘 작동되도 문제고 작동이 안되도 문제

실패는 성공의 어머니

  • 많은 버그를 경험할수록, 더 안전한 코드를 설계할 수 있다.
profile
소울치킨입니다

0개의 댓글