버그를 리포트하는 자세 & 버그를 수정하는 자세




어떠한 프로그램이든 버그는 있습니다. 그리고 버그는 보통 내부 테스트 중이 아닌
필드 서비스 중에 발생합니다. 그런 버그는 시스템이나 환경 탓에 발생하는 이유가
대부분이라 뭐 무조건 개발자를 탓하기도 사실 그렇습니다. 인간들이 사용하는 컴퓨터의
환경이 당연히 제각각이고 그런 알 수 없는 상황에서 또다른 인간이 짠 프로그램이라면
당연히 버그가 한두번쯤은 발생할 수밖에 없거든요. 따라서 버그가 발생하면 "아 ㅅㅂ
또 문제있네 어떤 색퀴가 만든거냐
" 라고 외칠 시간 있으시거든 잠이나 좀더 주무시고
최대한 빨리 원인을 밝혀서 재현 스텝에 들어가고 문제를 해결해야 합니다.

여기서 그 버그가 발생하였을 때, 문제를 제기하는 자세에 대해 한번 생각해 보려고 합니다.
일단 서비스 하는 입장 그리고 사용하는 입장에서 버그 발생이라는 것은 무척 화가 나는
일이라는 것은 부정할 수 없는 명제입니다. 충분한 개발 시간을 제공하였고, 충분한 테스트를
진행 하였지만 버그가 발생했습니다. 화가 나죠. 이제 에러 리포팅을 해야 할 차례입니다.
어떻게 하는 것이 올바른 태도 일까요.

버그가 발생했을 때는 먼저 발생하는 상황, 그리고 더 나아가서 재현이 될 만한 환경
그리고 로그나 덤프가 있다면 해당 파일을 캐취해 놓는 그런 기본적인 자료확보는
아주 기본 중의 기본이 되는 내용입니다. 개발자는 이런 기반을 제공받는다면 버그를
정말 빠른 시간 안에 수정할 수 있게 됩니다. 하지만 그렇게 충분한 데이터를 확보해 둔
상태에서 버그 리포트를 제공하는 사람이 얼마나 될까요? QA 전용 인력이거나 본래
운영력이 있으신 분들이라면 모르겠지만 걍 민간인 담당자나 대부분의 사람들은
보통 이렇습니다.

"아 ㅅㅂ 이거 갑자기 크래시 되네"
"야 당장 전화 때리고 멜 날려. 문제있다고 얘기해."


그리고 개발팀에 일단 문제있다고 컴플레인을 제기합니다. 뭐 거기까지는 좋습니다.
일단 상황 리포팅만 하고 이후에 추가 데이터를 전달할 수도 있으니까요. 하지만
상당히 많은 담당자들이 원인 추적을 할만한 어떠한 자료제공도 없이 그저 조금전
자기 눈으로 문제 발생한 상황만을 들먹이며 계속 고쳐내라고 막무가내로 고집만을
부립니다. 그러면 당연히 해결이 될 수가 없겠죠... 그리고 그렇게 시간이 흘러갑니다.
무언가 요청이 처리되지 않는 것이라 느껴지고 있는 시간이 반복되면 이 버그 리포트는
"개발팀에서 비 협조적이다" 라는 공포스런 항의문으로 둔갑하여 윗선에게 보고되고
개발팀은 정말 황당하고 억울하고 속상한 채로 고렙들에게 불려가게 됩니다.


ㅇ ㅏ... 이 많은 반찬 기능 들 중에서 어느 것이 설사 버그 의 원인인지
똥색깔 증상 이라도 알려줘야 원인파악을 하죠 ㅠ ㅠ


저는 과거에 이런 사례가 있었습니다.

저희가 만든 모듈을 중국의 어떤 담당자(갑님)가 테스트 하다가 본인의 PC 에서 에러
코드를 뱉으며 종료했다는 리포트를 해왔습니다. 하지만 그당시의 에러 로그도 없고
화면 캡쳐도 없으며 어떤 에러인지조차 기억조차 나지 않는다고 합니다. 그러나
분명히 에러가 발생하여 자기는 프로그램이 종료되었으며 다시 재현되지는 않지만
이 문제에 대해 원인을 밝히고 반드시 해결해 줄 것을 요청(재촉)받았습니다.

뭐 캐황당하죠 -_-; 어떤 프로그램이든 한번씩 에러코드를 뱉으며 종료할 수는 있습니다.
그것이 내부의 버그이든, 사용자의 시스템 상태가 이상해서 일시적으로 발생한 것이든
어쨌든 지속적으로 발생하지 않고 재현이 불가능한 것이라면 그때 상태의 현황이나
데이터는 반드시 필요한 법입니다. 하지만 로그도 없고 화면 캡쳐도 없고 심지어
겪은 본인이 어떤 에러인지 기억조차 나지 않는다는 상황에서 무엇을 해결할 수 있을까요 ;

그래도 해결을 해보려고 온갖 삽질을 다 해봤습니다. 플그램 실행중 다른  오만 플그램을
다 띄워 보고, 테스트 PC 를 동원해서 전부 실행해 보고, 괜히 렉도 일으켜 보고 아예 그냥
키보드를 다다다다다 연타를 치며 내리쳐보기도 했습니다. 하지만 별 문제는 없었죠 :)
따라서 우리 내부에선 전혀 재현되지 않고 문제가 없다고 응답했지만 그 담당자는 계속
안하무인이었습니다. 정말 방법이 없더군요...

그래서 저는 꽁수를 하나 썼습니다. 기존 모듈과 똑같은 소스 상태에서 버전만 하나 올려서
리빌드를 하고 패치를 했습니다. 그리고 원인이 예상되는 부분을 찾아서 수정했다고
개 구라를 친 뒤 확인해 보라고 응답했습니다. 머 어쨌든 바이너리가 달라지니 클라이언트를
실행하면 모듈을 새로 받게 됩니다. 그리고 그 담당자에선 "아, 새 모듈을 다운받은 뒤 문제가
해결된 것 같네요!" 라는 회신이 왔습니다. ㅎㅎ 정말 캐 어이없죠 :)

담당자의 입장에서는 개발팀에서 무언가 처리해 주길 원하고, 개발팀 입장에서는 도무지
머 해줄게 없고... 그래서 그냥 뭔가 처리된 것처럼 가짜 패치를 하고 뭐. ㅅㅂ 뭡니까 이게.
마치 의사가 환자에게 가짜 약을 먹인 후 안심시키는 플라시보 효과와 다를 바 없는 행동
이라고 생각됩니다. 제대로 된 버그 리포트가 없어서 발생한 사건 중의 하나입니다.

따라서 에러 리포팅을 할 때의 자세는 아주 중요하다고 봅니다.
에러가 발생할 당시의 충분한 자료를 제공하는 것이 필요하죠. 확보할 수 있는건 다
확보해 보고, 또 여러 프로그램 끼리의 충돌 문제로 버그가 생길 수도 있는데 그럴 때는
프로그램의 실행 순서나 버튼을 누르는 순서까지도 매우 중요한 단서가 됩니다. 따라서
최대한 개발팀에서 참조할 수 있는 사소한 것이더라도 데이터 조각을 최대한
수집해 주는 것이 좋습니다.



"옆에서 엄마가 티비 채널을 MBC 로 바꾸니까 이렇게 화면이 일그러졌어요"
아무리 사소한 단서라지만 이런 사소한 단서는 쵸큼 ....


하지만 가장 큰 문제는 에러를 확보하기 힘든 상황에서의 버그를 처리하는 것입니다.
고객사와 연결이 되지 않는 유저들이나 데이터 제공을 거부하는 몇몇 소수의 유저들에게
발생하는 에러를 처리하기는 정말 힘들죠. 그럴 때는 여러 사람이 협력해야 합니다.
리포팅을 해오지 못한다고 무조건 운영팀을 탓하지 말고 자동 에러 리포팅 시스템 등
개발팀에서도 문제의 근거를 모을 수 있는 방법이 있거나 누군가 아이디어를 제공하면
그것은 추가 개발이 필요해도 또 그넘의 개발일정 탓 하지 마시고 개인 시간을 쪼개서라도
빨리 해줘야 된다고 봅니다.

이제 개발자의 이야기가 나왔으니 버그를 수정하는 자세에 대해 얘기를 해 볼까요. 

개발자의 행동도 매우 중요하다는 얘기를 드리고 싶습니다. 운영팀이나 테스트팀에서
충분한 버그 리포트를 전달해 주었는데도 그걸 고치는데 미적댄다거나
다음 릴리즈 버전에서도 지난 번에 잇슈가 된 버그와 유사한 버그가 또 자꾸
발생되거나 하는 사건이 발생하면 어쩌다 한두번 혹은 가끔 그런다면 이해할 수 있어도
계속 매번 그런다면(그리고 미안한 기색도 전혀 없다면) 그건 그냥 무능한 개발자라고
보아도 무방합니다.

자신이 개발한 모듈을 테스트하는 담당자가 있고 서비스하는 담당자도 있고
사용하며 즐기는 사람도 있는데 맨날 버그만 산더미처럼 만들고 리포팅을 해줘도
그걸 고칠 생각도 하지 않는다면 그것은 이 모든 사람들에 대한 모독 행위입니다.
(이런 리포팅을 다 해결하려면 추가 일정이 필요하거나 또는 개발 인력이 더 있어야
한다고 외치는 개발자가 있다면 그건 말기 암 증세)

그런 개발자의 기본 자세조차 되어 있지 않은 무책임한 개발자는 얼른 당장
지구를 떠나 줄 것을 요청드리는 바이며 주변의 동료들이나 관련 팀 담당자들은
그 훌륭한 개발자분이 정신을 차리도록 도와주시거나 아니면 지구를 빨리 떠날
수 있도록 다른 별을 알아봐 주시는 것이 프로젝트 성공에 더 큰 발판이 되리라
생각합니다.



window31. 2009년 4월.

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/266 관련글 쓰기

  1. 사진찍는프로그래머의 생각

    2009/05/06 10:13
    삭제
    ㅇ ㅏ… 이 많은 반찬 기능 들 중에서 어느 것이 설사 버그 의 원인인지 똥색깔 증상 이라도 알려줘야 원인파악을 하죠 ㅠ ㅠ 디버깅의 어려움을 설명하는 이 멋진 은유

댓글을 달아주세요

  1. 2009/04/23 09:48
    댓글 주소 수정/삭제 댓글
    현상재현이 안되고 단서도 없으면 버그잡기 정말 어렵죠.. ㅎㅎ
    그런데... "이사람 뻥치는거 아냐?"라는 마음으로 코드를 볼때는 안보이던 버그가 "틀림없이 문제가 있다"라는 확신을 가지고 보면... 거짓말처럼 문제가 보이는 경우가 있습니다. 단서 제공도 중요하지만 그와 같은 정도로 중요한 것은 코드를 들여다 볼때 개발자의 마음가짐이란 얘기죠. ^^
    • 2009/04/24 12:40
      댓글 주소 수정/삭제
      맞는 말씀입니다. 개발자의 마음가짐도 정말 중요하죠 !!
      일껏 정보를 전달해 줫는데도 "이건 원래 이래요" 라고 하는 분들은 정말 ;;
  2. 2009/04/23 12:04
    댓글 주소 수정/삭제 댓글
    가끔 버그리포팅 + 재현 + 대안까지 제시를 해도 안하는 사람들도 있더군요
    고객달래야하지, 버그수정해달라고 닥달해야지, 답답할때가 많네요. ㅠㅠ
    • 2009/04/24 12:40
      댓글 주소 수정/삭제
      그런분은 지구를 떠나게 해야죠 ! %^
  3. 2009/04/23 15:58
    댓글 주소 수정/삭제 댓글
    ㅋㅋㅋㅋ

    오비이락인거죠 :)
    • 2009/04/24 12:41
      댓글 주소 수정/삭제
      하하하하 생각해보니 그런거 같네요 : )
  4. 2009/05/03 20:08
    댓글 주소 수정/삭제 댓글
    음식과 설사의 비유 정말 멋집니다.
    감동스러운 비유를 보고 가네요..
    저도 버그 때문에 사경을 헤메는 경우가 많은데
    개발자도 참 문제가 많다고 봅니다.
    자기 모듈은 절대 문제 없다고 고집 피우는 개발자들도 많거든요.
    보고 하는 사람이나, 개발자나 손발이 잘 맞아야 문제를 해결 할텐데..
    여튼 좋은 글 잘 보고 갑니다.
    • 2009/05/05 13:33
      댓글 주소 수정/삭제
      하하하하 그 부분을 발견해 주시다니 눈쌀미가 있으십니다 : )
      개발자들은 자기 모듈에 대해 마치 자신이 모욕당하는 듯한 강한 거부감을 느끼는 사람들이 많죠 ;
      오히려 진짜 고수분들은 안 그러는데 하수일수록 그러는거 같다는 ;
    • 2009/05/05 20:30
      댓글 주소 수정/삭제
      맞습니다.
      자기 모듈의 버그를 인정할 줄 모르는 개발자 보면 정말 답답하죠.
      제품이 누가 봐도 말이 안되는 동작을 하고 있는데, 이건 "개선"이지 "결함"이 아니라고 우깁니다. 결함이라고 하면 짜증내면서 안고쳐준다고 협박하고. ㅡ.ㅡ
      중요한 건 코드의 결함이냐 스펙의 결함이냐의 차이일 뿐이지, 고객이 봤을때 결함이면 결함이라는 거죠. 개발자가 "결함"이 아닌 다른 미화된 표현을 쓴다고 해서 결함이 다른 걸로 바뀌지는 않으니까요.

BLOG main image
by window31

카테고리

분류 전체보기 (272)
Reverse Engineering (21)
C, C++ (20)
Kernel (8)
Guitar (18)
잡담 (74)
etc (6)
who am i (8)
보안 이야기 (85)
Tools (3)
월간 마이크로소프트웨어/.. (28)

글 보관함