본문 바로가기

프로그래밍/이것저것 일하면서

프로그램 버그, 고치는 것만큼 중요한 버그 리포트 작성과 공유

반응형

오늘 특정 날짜에서만 발생하는 오라클 오류를 발견하게 되었는데요, 그 원인은 'NUMTOYMINTERVAL' 함수를 사용하여 날짜를 계산하던 중에 발생한 문제였습니다. 이 함수는 일반적으로 날짜와 시간 간격을 계산할 때 사용되는데, 이번에 발생한 문제는 sysdate에서 특정 년월을 더하거나 빼면서 문제가 있었습니다. 예를 들면 2월은 2월28일이 마지막 날인데, 1월31일에 sysdate + NUMTOYMINTERVAL(1, 'MONTH')를 실행하면 2월31일이라는 날짜가 존재하지 않으니 ORA-01839 오류가 발생하는 식이죠.

다행히 오래 걸리지 않아 원인은 바로 발견하였습니다. 어떤 데이터에서만 이 문제가 발생하는지 확인한 후, 'NUMTOYMINTERVAL' 함수를 사용하는 코드 부분을 ADD_MONTHS 함수로 수정했습니다.

물론 문제를 해결하지 전에 고객사에게 먼저 보고하고, 선조치 후 버그 리포트를 작성하여 공유하였습니다.

이런 오류가 나서 참 다행입니다. 오류가 발생하지 않았더라면 영영 몰랐을 문제죠. 그리고 이러한 문제를 겪을 때마다, 더 나은 테스트 코드를 작성하기 위해 노력해야 한다는 것을 다시 한번 느끼게 됩니다.

버그 리포트 이야기가 나와서 말인데, 일반적으로 버그 리포트에는 다음과 같은 내용들을 포함하게 됩니다. 꼭 정해진 문서 양식이 있다기 보다, 러프하게 다음 내용을 항목별로 간략하게 적어서 팀원 혹은 고객과 공유하여 그런 문제가 다시 발생하지 않도록 노력해야 합니다.

버그 리포트 작성하기

  1. 버그의 설명: 버그가 발생하는 상황과 어떤 작업을 수행하는 동안 발생하는지에 대한 세부 정보.
  2. 재현 방법: 버그를 재현하기 위해 필요한 단계와 조건을 포함하는 단계별 설명.
  3. 기대 결과: 버그를 발견하기 전에 예상한 결과 및 버그 발생 시 나타나는 실제 결과.
  4. 발생 환경: 운영 체제, 하드웨어 및 소프트웨어 버전 등과 같은 환경 정보.
  5. 에러 메시지: 버그 발생 시 나타나는 에러 메시지의 전문.
  6. 스크린샷 또는 동영상: 버그를 재현하는 데 도움이 될 수 있는 스크린샷 또는 동영상 등의 증거.
  7. 우선 순위: 버그의 중요도와 심각성에 대한 우선 순위.
  8. 기타 정보: 버그와 관련된 추가 정보, 예를 들어 버그가 발생하기 전에 시스템에서 어떤 변경사항이 있었는지 등.

오늘은 제가 겪은 'NUMTOYMINTERVAL' 함수 문제와, 이를 해결한 과정을 이야기해 보았습니다. 버그 리포트를 작성하고, 문제를 해결하는 것은 개발자로서 중요한 일 중 하나입니다. 그리고 이러한 과정에서, 개발자들은 항상 새로운 것을 배우게 됩니다.

특정 유저, 특정 데이터, 특정 날짜에만 발생하는 오류라니. 정말 샤머니즘이 필요한 직업입니다 ㅋ

반응형

개발자가 그리는 인스타툰 팔로우하세요!