엑셀 장인이 되는 과정 - 확률 검증의 세계

엑셀 장인이 되는 과정 - 확률 검증의 세계

엑셀 장인이 되는 과정 - 확률 검증의 세계 시작은 단순했다 입사 첫 달. 팀장이 파일 하나 던져줬다. "이거 확률 맞는지 확인해봐. 100번만 돌려." 드래곤 던전 보상 테이블이었다. 전설 등급 0.5%, 영웅 5%, 희귀 20%, 일반 74.5%. 합쳐서 100%. 깔끔하다. 그때는 몰랐다. 이게 시작이라는 걸. 100번 돌렸다. 전설 1개 나왔다. 0.5%니까 맞는 거 아닌가? 보고했다. 팀장이 웃었다. "100번으로 뭘 알아."다음 날. "1000번 돌려봐." 그때부터 지옥이 시작됐다. 숫자는 거짓말을 한다 1000번 돌렸다. 전설 3개. 0.3%. 어? 0.5%여야 하는데. 버그인가? "더 돌려봐. 5000번." 5000번. 손목 아프다. F5 누르고, 결과 복사하고, 엑셀 붙여넣고. 반복. 전설 28개. 0.56%. 아 맞네. 아니 근데 왜 처음엔 안 맞았지? 팀장이 설명해줬다. "표본이 작으면 오차가 크거든. 100번은 확률 검증이 아니라 그냥 운빨이야." 그날 배웠다. 확률은 충분히 많이 뽑아야 진실이 보인다는 걸.근데 5000번은 시작이었다. 엑셀 함수와의 전쟁 처음엔 손으로 셌다. 전설 몇 개, 영웅 몇 개. CTRL+F로 찾아서. 동료가 지나가다가 한숨 쉬었다. "COUNTIF 써." 뭐? 뭐IF? =COUNTIF(A:A,"전설") 세상에. 자동으로 센다. 혁명이었다. 비율도 구했다. =B2/5000*100 퍼센트 자동 계산. 개꿀. 근데 팀장이 또 왔다. "평균이랑 표준편차 내봐." 뭐? 표준... 뭐? =AVERAGE(), =STDEV() 함수 찾아서 넣었다. 의미는 모르겠고 숫자는 나왔다. "편차가 크면 확률이 불안정한 거야. 적으면 안정적이고." 아 그렇구나. 아직도 잘 모르겠다. 3개월 지나니까 이해됐다. 표준편차가 크면 어떤 날은 전설이 10개, 어떤 날은 2개. 롤러코스터다. 유저가 빡친다. 편차가 작으면? 매일 5개 정도. 예측 가능. 안정적. 10만 번의 의미 6개월차. 익숙해졌다. 5000번은 기본. 10000번도 돌린다. 그런데 신규 가챠 시스템 테스트할 때였다. 천장 시스템. 100번 뽑으면 최고 등급 확정. 근데 중간에도 0.7% 확률로 나온다. "이거 확률 맞는지 확인해줘." 알았다. 10000번 돌렸다. 천장 포함해서 최고 등급 158개. 1.58%. 어? 0.7%여야 하는데 너무 높다. 천장 때문인가? 분리해서 계산했다. 천장 제외하면 100세트에서 순수 확률 뽑기는 58개. 0.58%. 이것도 안 맞다. 0.7%보다 낮다. 기획자한테 물었다. "이거 확률 이상한데요?" "응? 코드 확인해볼게." 30분 뒤. "아 미안. 0.7%가 아니라 0.6%였어. 기획서 오타." ... 10000번 돌린 내 시간.근데 또 문제 생겼다. 0.6%면 10000번에 60개 나와야 하는데 58개다. 표본이 더 필요한가? "10만 번 돌려봐." ...10만 번? 매크로라는 신세계 10만 번을 손으로? 죽는다. 동료가 알려줬다. "매크로 써. VBA 좀만 배워." 뭐? VBA? 프로그래밍? "아니 QA인데 코딩을 왜 해." "안 하면 손목 나간다." 유튜브 뒤졌다. "엑셀 VBA 매크로 초보". Sub 자동테스트() For i = 1 To 100000 '게임 실행 치트 커맨드 '결과 복사 Cells(i, 1).Value = 결과 Next i End Sub 복붙하고 수정했다. 돌렸다. 엑셀이 혼자 움직인다. 숫자가 쌓인다. 마법이다. 3시간 걸렸다. 10만 번. 최고 등급 604개. 0.604%. 오 거의 0.6%다. 맞네. 그날부터 매크로 중독. 반복 작업은 다 매크로로 바꿨다. 확률의 함정들 1년차 끝날 무렵. 이상한 버그 발견했다. 크리티컬 확률 20%. 근데 특정 스킬 쓰면 10%로 떨어진다. 10만 번 돌렸다. 진짜 10%다. 버그 맞다. 개발자한테 넘겼다. "이거 확률 이상해요." "아 그거? 스킬 쓰면 공격 속도 2배 되거든. 크리 확률 반토막 내서 밸런스 맞춘 거야." "...그럼 툴팁에 써놔야 하는 거 아니에요?" "아 맞다." 툴팁 수정으로 종결. 버그가 아니라 히든 스펙이었다. 그 뒤로 이상한 확률 나오면 기획자한테 먼저 묻는다. "이거 스펙이에요?" 10번 중 8번은 "아 그거 의도한 거야." 나머지 2번이 진짜 버그다. 숨겨진 난수 테이블 2년차. 복잡한 거 맡기 시작했다. 보스 패턴 AI. 공격 패턴 A, B, C가 각각 30%, 50%, 20% 확률. 근데 유저 게시판에서 난리다. "B 패턴만 나온다." 테스트했다. 1000번 전투. B 패턴 498번. 49.8%. 맞는데? 영상 보냈다. "저거 보세요. B만 5번 연속." 아. 연속 확률. 다시 분석했다. 같은 패턴 연속 나올 확률 계산. 2연속: 25% 3연속: 12.5% 4연속: 6.25% 5연속: 3.125% 1000번 전투면 5연속이 30번은 나온다. 정상이다. 근데 유저는 5연속 한 번 당하면 "버그다" 신고한다. 확률적으로 정상인데 체감은 버그. 이게 제일 어렵다. 엑셀 지옥도 지금 내 엑셀 파일들. 드롭_테스트_v23.xlsx - 시트 47개, 데이터 35만 행 가챠_확률_검증_최종최종.xlsx - 피벗 테이블 12개 크리티컬_분석_보완본.xlsx - 수식 374개 파일 열 때마다 렉 걸린다. "계산 중..." 30초. 동료가 놀란다. "이거 엑셀이야 데이터베이스야?" 나도 모르겠다. 함수도 복잡해졌다. =IF(COUNTIF($A$2:$A$100000,A2)>0,VLOOKUP(A2,Sheet2!$A:$B,2,0)*SUMIF($C:$C,C2,$D:$D)/AVERAGE($E:$E),"") 이게 뭔지 나도 3일 지나면 모른다. 주석 달아놔야 한다. 근데 엑셀에 주석 다는 법을 몰라서 옆 셀에 설명 쓴다. 확률 검증의 숨은 노력 유저는 모른다. "드롭율 1%면 100번에 1개 나오는 거 아니야?" 아니다. 100번에 0개 나올 확률: 36.6% 1개 나올 확률: 37% 2개 이상: 26.4% 3명 중 1명은 100번 돌려도 0개다. 버그 신고 들어온다. "확률 거짓말이다!" 거짓말 아니다. 확률이 원래 그렇다. 이걸 설명하려고 리포트 쓴다. 그래프 만든다. 데이터 첨부한다. CS팀에 전달. "유저한테 이렇게 설명해주세요." 대부분 이해 못 한다. "그냥 확률이 이상한 거 아니야?" ...10만 번 돌린 내 노력. 통계학 독학 회사는 안 가르쳐준다. 알아서 배워야 한다. 유튜브, 블로그, 커뮤니티. 검색하고 따라한다. 정규분포, 신뢰구간, 카이제곱 검정. 대학 때 F학점 받은 통계학. 지금 다시 배운다. 이항분포 공식. P(X=k) = C(n,k) × p^k × (1-p)^(n-k) 이게 뭔지 이해하는 데 2주 걸렸다. 이해하고 나니 확률 검증이 쉬워졌다. 100번 시행, 1% 확률일 때 0개 나올 확률 계산 가능. C(100,0) × 0.01^0 × 0.99^100 = 0.366 36.6%. 3명 중 1명. 정상. 이제 버그 신고 왔을 때 자신 있게 답한다. "데이터 분석 결과 정상 범위입니다. 통계적으로 36.6% 확률로 발생 가능합니다." 런칭 전날 밤 CBT 런칭 전날. 최종 확률 검증. 전체 콘텐츠 200개. 각각 1만 번씩. 매크로 돌린다. 12시간 예상. 오후 6시 시작. 아침 6시 끝. 중간에 에러 나면? 처음부터. 밤 11시. 진행률 42%. 순조롭다. 새벽 2시. 68%. 졸리다. 레드불 마신다. 새벽 4시. 89%. 거의 다 왔다. 새벽 5시 30분. 완료. 데이터 정리. 이상치 확인. 그래프 생성. 리포트 작성. 오전 9시 회의. 발표. "전체 확률 검증 완료. 이상 없음." 박수. 고생했다는 말. 그날 오후 3시에 퇴근했다. 17시간 일했다. 엑셀 장인의 자격 지금은 3년차. 팀 내 엑셀 담당. 신입이 들어오면 내가 가르친다. "함수 이렇게 쓰고, 피벗 테이블은 이렇게 만들고." 예전의 나를 본다. 100번으로 확률 검증하던 그때. "왜 이렇게까지 해야 해요?" 같은 질문 받는다. "유저는 데이터를 안 믿어. 체감을 믿지. 근데 우리는 데이터로 증명해야 해." "확률 1%는 100번에 1개가 아니라, 무한대로 뽑으면 평균 1%라는 뜻이야." "그래서 우리가 10만 번을 돌리는 거고." 신입이 고개 끄덕인다. 이해했는지는 모르겠다. 3개월 뒤면 알 거다. 숫자 뒤의 진실 게임 하는 사람은 재미를 본다. 전설 아이템 떴다. 기쁘다. QA는 숫자를 본다. 전설 드롭. 0.5%. 10만 번 중 534번. 0.534%. 표준편차 0.23. 정상 범위. 재미는 사라졌다. 숫자만 남았다. 그래도 이 일이 필요하다. 내가 검증한 확률로 누군가는 즐긴다. 유저가 "확률 이상하다" 신고할 때, 내 데이터가 답이 된다. 엑셀 장인. 거창한 이름 아니다. 그냥 숫자 세는 사람. 반복하는 사람. 확률을 믿는 사람. 근데 가끔 생각한다. 이렇게까지 해서 연봉은 왜 안 오르나.10만 번 돌린 엑셀 파일을 보면서, 또 F5를 누른다.

아침 10시 출근, 그 환상과 현실

아침 10시 출근, 그 환상과 현실

10시 출근이라는 환상 처음 면접 봤을 때다. "저희는 10시 출근입니다." 이 말에 바로 끌렸다. 9시 출근하는 친구들 보면서 '난 좀 다르지' 했다. 아침 여유롭게 일어나서 밥 먹고 출근. 완전 화이트 기업 아닌가. 입사 일주일은 진짜 그랬다. 9시에 일어나서 편의점 삼각김밥 먹고. 지하철도 한산했다. 10시에 회사 도착하면 다른 회사 사람들은 이미 일하는 중. 나만 여유롭게 커피 한 잔. "10시 출근 부럽다" 친구들이 말했다. 그때는 나도 좋았다. 진짜로.현실은 CBT 두 달 지나니까 알았다. 10시 출근의 진실. CBT 일정이 잡혔다. "이번 주는 좀 바쁠 겁니다." 팀장 말. 좀이 아니었다. 월요일부터 밤 10시 퇴근. 화요일은 12시. 수요일은 아예 새벽 3시. "10시 출근이니까 괜찮죠?" 아니다. 전혀 괜찮지 않다. 새벽 3시 퇴근하고 10시 출근. 7시간인데 이동 시간 빼면 5시간. 씻고 자면 3시간. 이게 10시 출근의 함정이다. 9시 출근 회사는 6시 퇴근이다. 야근해도 8시, 9시. 우리는 10시 출근에 밤 12시 퇴근이 기본. 계산해보면 우리가 더 오래 일한다. CBT 기간은 지옥이다. 유저들이 게임 시작하는 시간. 저녁 7시부터가 진짜 근무 시간. 버그 리포트가 쏟아진다. 재현 테스트 돌리고, 로그 확인하고, 개발팀한테 전달하고. "이거 긴급 버그예요. 오늘 안에 수정 가능할까요?" 불가능한 걸 알면서 묻는다. 개발자도 야근한다. 다 같이 죽는다.주말의 의미 금요일 저녁. 일반 회사 사람들은 퇴근한다. 우리는 주말 테스트 준비. "이번 주말에 신규 콘텐츠 빌드 나옵니다." 토요일 출근 확정. 일요일도 마찬가지. CBT 기간에 주말은 없다. 토요일 10시 출근. 평일이랑 똑같다. 차이는 지하철이 한산하다는 것. 회사 가는 사람이 나뿐. 친구들은 놀러 간다. 카톡이 온다. "야 오늘 강남 나와." 못 간다. "주말인데 야근이야?" 야근이 아니라 그냥 근무다. 일요일도 출근하면 연차가 하나 생긴다. 대신 쓸 수가 없다. CBT 끝나고 런칭 준비. 런칭 끝나고 버그 수정. 다음 CBT 준비. 무한 반복. 작년에 연차 10개 날렸다. 못 쓰고 없어진 거다. "왜 안 써요?" 쓸 타이밍이 없었다. 주말 근무는 수당 나온다. 1.5배. 그래도 평일 야근보다는 낫다. 평일 야근은 기본 급여에 포함이라는 마법의 논리.야근 수당의 한계 입사할 때 연봉 3400만원. 월급 283만원. 여기서 세금 빼면 250만원 정도. 야근 수당이 있다. 한 시간에 15000원. 밤 10시까지 일하면 3시간. 45000원. 한 달 20일이면 90만원. 처음에는 좋았다. 월급이 340만원. 세전이지만 그래도 많다고 느꼈다. 문제는 한계가 있다는 것. 야근 수당은 월 100만원까지. 그 이상은 안 나온다. CBT 때는 하루 5시간씩 야근한다. 한 달이면 150만원어치. 50만원은 그냥 사라진다. "원래 그런 거예요." 선배가 말했다. 다들 당연하게 받아들인다. 계산해봤다. 시급으로 치면 최저시급이랑 비슷하다. 대졸 3년차가 최저시급. 이게 맞나. 친구는 SI 회사 다닌다. 연봉 4000만원. 야근은 우리보다 적다. "게임 회사가 좋지 않냐?" 뭐가 좋은지 모르겠다. 다른 친구는 대기업 다닌다. 연봉 5000만원. 9시 출근 6시 퇴근. "10시 출근 부럽다." 전혀 안 부럽다고 말 못 한다. 야근 수당 때문에 버틴다. 그것마저 없으면 못 버틴다. 250만원으로 서울에서 살 수 없다. 건강이 무너진다 새벽 3시 퇴근이 일주일 계속되면 몸이 이상해진다. 아침에 일어나면 눈이 붓는다. 소화가 안 된다. 편의점 도시락만 먹어서 그런가. 운동할 시간이 없어서 그런가. 작년 겨울 CBT 때다. 한 달 내내 밤샘했다. 감기 걸렸다. 병원 갈 시간 없어서 약국 약으로 버텼다. 안 나았다. 두 달 기침했다. 회사에 약 먹는 사람이 많다. 소화제, 두통약, 영양제. 다들 책상에 약통이 있다. "젊으니까 괜찮아요." 팀장 말. 35살인데 벌써 허리 안 좋다고 한다. 나는 27살. 8년 후면 나도 그렇게 되나. 카페인 중독이다. 하루에 커피 5잔. 에너지 드링크 2캔. 안 마시면 집중이 안 된다. 밤에 잠도 잘 안 온다. 건강검진 결과 나왔다. "간 수치가 높습니다." 술을 안 마시는데 간 수치가 높다. 야근 때문이라고 한다. 스트레스 때문이라고 한다. 10시 출근해서 새벽 2시 퇴근. 16시간 일한다. 일주일이면 80시간. 한 달이면 320시간. 정상이 아니다. 게임이 일이 되면 원래 게임을 좋아했다. RPG 덕후다. 게임 회사 들어온 이유다. 지금은 게임이 보이지 않는다. 버그만 보인다. 던전 들어가면 벽 충돌 체크한다. NPC 대화하면 오타 찾는다. 아이템 먹으면 확률 계산한다. 친구들이랑 게임하면 재미없다. "이거 밸런스 이상한데." 습관적으로 말한다. 친구들이 싫어한다. "그냥 게임이야. 즐겨." 즐길 수가 없다. 직업병이다. 좋아하는 게임 시리즈가 있었다. 신작 나왔다. 샀다. 한 시간 했다. 끄고 다시 안 켰다. 왜냐면 회사에서 똑같은 장르 테스트한다. 퇴근하고 또 같은 거 할 수 없다. "게임하면서 돈 버네 좋겠다." 제일 듣기 싫은 말이다. 게임이 아니라 노동이다. 같은 던전 100번 돌면 게임이 아니다. CBT 때 유저 플레이 보면 부럽다. 재미있어 한다. 나는 재미를 느낄 수 없다. 버그 터질까 봐 불안하다. 런칭하고 유저들 반응 좋으면 뿌듯하다. 일주일 정도. 그 다음부터는 다음 프로젝트 시작. 또 테스트. 반복. 그래도 못 그만두는 이유 이직 생각한다. 매일 생각한다. 문제는 이력서다. "게임 QA 3년." 이게 경력인가. 다른 회사 가도 QA다. 연봉 비슷하다. 야근도 비슷하다. 개발자 되고 싶다. 코딩 공부 시작했다. 퇴근하고 한 시간씩. 주말에 두 시간씩. 진도가 안 나간다. 너무 피곤하다. 같은 팀 선배가 작년에 나갔다. 다른 게임 회사 갔다. QA로. 연봉 400만원 올랐다. 그게 다다. 또 다른 선배는 게임 관뒀다. 일반 회사 CS팀 갔다. "거기는 6시 칼퇴근이야." 부럽다. 근데 게임은 재밌다. 가끔. 신규 콘텐츠 처음 테스트할 때. 아무도 안 해본 거 내가 먼저 한다. 그건 좋다. 런칭 전 긴장감도 나쁘지 않다. 유저들 좋아하는 거 보면 보람 있다. 그리고 동료들. 같이 야근하는 사람들. 새벽 2시에 치킨 시켜 먹으면서 수다. 그런 게 좋다. 돈이 문제다. 3년 차에 3400만원. 5년 차도 4000만원 안 된다. 결혼은 어떻게 하나. 집은 어떻게 사나. "게임 업계가 원래 그래요." 다들 말한다. 맞다. 원래 그렇다. 그게 문제다. 10시 출근의 진실 10시 출근은 환상이다. 진짜는 이렇다. 10시 출근 새벽 2시 퇴근. 주말 없음. 야근 수당 한계 있음. 건강 무너짐. 게임이 일이 되는 것. 그래도 출근은 10시다. 친구들한테 "10시 출근이야" 말한다. 부러워한다. 진실은 말 안 한다. 복잡하니까. 다음 주도 CBT다. 또 밤샘이다. 월요일 10시 출근해서 화요일 새벽 3시 퇴근. 그리고 화요일 10시 또 출근. 이게 10시 출근의 현실이다.10시 출근, 생각했던 것과 달랐다.

'재현율이요' - QA의 일상 용어 사전

'재현율이요' - QA의 일상 용어 사전

"재현율이요" - QA의 일상 용어 사전 입에 붙은 말들 출근하면 입에서 튀어나온다. "재현율이요." 동료가 "어제 버그 봤는데"라고 하면 자동으로 나온다. "재현율이요?" 점심 먹다가도 나온다. 식당 직원이 "오늘 치킨 맛있어요"라고 하면 "재현율이요?" 아니 이건 좀 아니지. 그런데 못 고친다. 3년 동안 하루에 100번씩 쓴 말이다. 입에 각인됐다. 재현율. 버그가 다시 발생하는 확률. 100%면 무조건 터진다는 뜻. 50%면 두 번에 한 번 터진다는 뜻. QA의 세계에서 가장 중요한 단어다. 재현율 낮으면 개발자가 못 고친다. 로그에 안 남으니까. 재현율 높으면 우선순위 올라간다. 무조건 터지니까. 그래서 버그 리포트 쓸 때 제일 먼저 확인한다. 10번 해봐서 10번 터지면 100%. 10번에 3번이면 30%. 입버릇이 됐다. 편의점에서 카드가 안 찍혔다. "재현율 확인해봐야겠네요." 알바생이 이상하게 쳐다본다.이건 스펙이에요? 기획자한테 제일 많이 하는 질문이다. "이건 스펙이에요?" 던전에서 몬스터가 벽을 뚫고 나왔다. 버그 같은데 확신이 안 선다. 기획 의도일 수도 있다. 물어본다. "이거 스펙이에요?" 기획자가 답한다. "아뇨, 버그요." 리포트 쓴다. 스킬 쿨타임이 이상하다. 5초인데 3초만에 돌아온다. 버그 같은데 패치노트를 못 봤을 수도 있다. 또 물어본다. "이거 스펙 변경됐어요?" 기획자가 답한다. "아 그거 어제 바꿨어요." 리포트 안 쓴다. 스펙. 기획 명세서. 게임이 '이렇게 작동해야 한다'고 적힌 문서. QA의 바이블이다. 근데 이게 맨날 바뀐다. 어제 본 스펙이랑 오늘 본 스펙이 다르다. 기획자가 계속 수정한다. 그래서 확인해야 한다. 내가 본 게 버그인지, 의도인지. 하루에 20번은 물어본다. "이건 스펙이에요?" 그러다 보니 일상에서도 나온다. 친구가 "야 너 어제 9시에 온다며?"라고 한다. 나는 답한다. "그거 스펙 변경됐어." 친구가 멍하니 쳐다본다.로그 확인해볼게요 개발자가 제일 좋아하는 말이다. "로그 확인해볼게요." 버그 리포트 올리면 개발자가 묻는다. "로그 있어요?" 있으면 "네, 첨부했어요." 없으면 "로그 확인해볼게요." 로그. 게임 내부에서 일어난 일들의 기록. 누가 어디서 무엇을 했는지 다 적혀있다. 버그를 고치려면 로그가 필요하다. 어디서 터졌는지 알아야 고친다. 근데 로그가 없는 버그도 있다. 재현율 낮은 버그. 한 번 터지고 안 터진다. 로그 안 남는다. 그럴 때 QA가 한다. 로그 뽑기. 게임 켜고 버그 터질 때까지 플레이한다. 10번, 20번, 100번. 터지면 그 순간의 로그를 저장한다. 개발자한테 준다. "로그 첨부했어요." 이게 QA의 일이다. 그래서 입에 붙었다. "로그 확인해볼게요." 지하철 카드가 안 찍혔다. 역무원한테 말한다. "로그 확인해볼게요." 역무원이 당황한다. "네?" 아 이러면 안 되는데. 냉장고가 이상하다. A/S 기사한테 전화한다. "로그 확인해주실 수 있어요?" 기사님이 묻는다. "로그가 뭔데요?" 설명하다가 포기한다. 확률 이상한데 밸런스 QA의 입버릇이다. "확률 이상한데." 가챠 시스템 테스트한다. 레어 등급 확률 5%래. 100번 돌린다. 2번 나왔다. "확률 이상한데." 기획자한테 말한다. 기획자가 답한다. "그럴 수 있죠." 아니다. 통계적으로 이상하다. 5%면 100번에 5번 나와야 한다. 오차범위 ±2 정도. 2번은 너무 낮다. 다시 돌린다. 1000번. 38번 나왔다. 3.8%. "확률 이상한데요." 버그 리포트 쓴다. 기획자가 확인한다. 코드 잘못됐다. 확률 계산식에 오류. 고쳐진다. 이게 QA가 하는 일이다. 숫자를 본다. 확률을 검증한다. 플레이어가 느끼기 전에 찾는다. 엑셀 돌린다. 평균, 표준편차, 신뢰구간. 대학교 통계학 시간에 배운 거 여기서 쓴다. 그래서 숫자에 민감해진다. 편의점 1+1 행사. 두 개 집어든다. 하나만 계산된다. "확률 이상한데." 아니 이건 확률이 아니라 시스템 버그다. 친구가 "요즘 복권 잘 안 나오더라"고 한다. 나는 답한다. "샘플 사이즈가 어떻게 되는데?" 친구가 이상하게 쳐다본다.재현 안 돼요 개발자한테 제일 듣기 싫은 말이다. "재현 안 돼요." 버그 리포트 올렸다. 심각도 높음. 게임 강제 종료되는 버그. 개발자가 답한다. "재현 안 돼요." 황당하다. 나는 10번 해서 10번 터졌는데. 다시 해본다. 또 터진다. 영상 찍는다. 버그 터지는 과정 전부. 5분짜리 영상. 개발자한테 보낸다. "이렇게 하면 재현돼요." 개발자가 답한다. "아 이렇게 하는 거였어요. 고쳤어요." 이게 QA와 개발자의 소통이다. 재현. 버그를 다시 발생시키는 것. 재현이 안 되면 버그를 못 고친다. 그래서 QA는 재현 방법을 자세히 적는다. 어디서, 무엇을, 어떻게, 몇 번째에.마을로 이동 NPC와 대화 퀘스트 수락 던전 입장 3번째 방에서 스킬 사용 크래시이렇게 적는다. 개발자가 따라 할 수 있게. 근데 가끔 정말 재현 안 되는 버그가 있다. 나도 한 번밖에 못 봤다. 로그도 없다. 그럴 땐 포기한다. 또 나올 때까지 기다린다. 일상에서도 쓴다. 친구가 "어제 PC방에서 게임 안 켜졌어"라고 한다. 나는 묻는다. "재현돼?" 친구가 답한다. "몰라 한 번만 그랬어." 나는 말한다. "그럼 버그 아니야. 재현 안 되면 버그 아냐." 친구가 어이없어한다. 이거 알려진 이슈예요 유저 게시판 보면 맨날 쓴다. "이거 알려진 이슈예요." 런칭하고 나면 유저들이 버그 제보한다. 게시판에 올라온다. QA가 확인한다. 대부분 이미 알고 있다. CBT 때 나온 버그. 고치는 중이거나 패치 예정. 댓글 단다. "알려진 이슈입니다. 다음 패치 때 수정될 예정입니다." 유저가 답한다. "그럼 왜 런칭했어요?" 할 말이 없다. 알려진 이슈. Known Issue. QA가 이미 찾아서 리포트 올린 버그. 근데 안 고치고 런칭한다. 왜? 시간이 없어서. 우선순위가 낮아서. 게임 터지는 버그는 고친다. 밸런스 버그는 나중에 고친다. UI 버그는 더 나중에 고친다. 런칭은 정해진 날짜에 해야 한다. 못 고친 버그는 알려진 이슈로 남는다. QA는 안다. 어떤 버그가 남아있는지. 유저가 제보하면 '아 그거'라고 생각한다. 그래서 자동으로 나온다. "알려진 이슈예요." 친구가 "이 식당 화장실 물이 안 나오더라"고 한다. 나는 답한다. "알려진 이슈." 친구가 웃는다. "뭔 소리야." 지하철 환승이 불편하다. 친구한테 말한다. "알려진 이슈지 뭐." 친구가 묻는다. "너 무슨 말 하는 거야?" 설명하기 귀찮다. 크리티컬이에요 심각한 버그 발견하면 쓴다. "크리티컬이에요." 던전 들어가면 게임이 꺼진다. 100% 재현된다. 모든 유저한테 터진다. 크리티컬. Critical. 게임 진행 불가능한 수준의 심각한 버그. 바로 보고한다. 팀장한테. 개발팀장한테. 대표한테. 긴급 회의 소집된다. 출시 연기할지 말지 결정한다. 크리티컬은 무조건 고쳐야 한다. 이거 냅두고 런칭하면 게임 망한다. 밤샌다. 개발자랑 같이. 버그 고칠 때까지. 새벽 4시에 고쳐진다. 테스트한다. 재현 안 된다. 통과. 런칭한다. 크리티컬 아닌 버그는 메이저(Major), 마이너(Minor), 트리비얼(Trivial)로 나뉜다. 메이저는 중요한 버그. 고쳐야 하는데 게임 진행은 가능. 마이너는 작은 버그. 불편하지만 참을 만함. 트리비얼은 사소한 버그. UI 텍스트 오타 같은 거. QA는 매일 이걸 분류한다. 이 버그는 크리티컬인가, 메이저인가. 판단 기준이 생긴다. 3년 하면 버그 보자마자 안다. 일상에서도 나온다. 엘리베이터가 고장 났다. 친구한테 말한다. "크리티컬이네." 친구가 묻는다. "그게 뭔데?" 설명한다. "게임 진행 불가능한 수준." 친구가 웃는다. "여기 게임 아닌데." 카페에서 와이파이가 안 된다. 혼잣말한다. "메이저 정도?" 옆 사람이 쳐다본다. 빌드 받아야죠 하루의 시작이다. "빌드 받아야죠." 출근한다. 컴퓨터 켠다. 제일 먼저 하는 일. 빌드 받기. 빌드. Build. 개발팀이 만든 게임 실행 파일. 매일 업데이트된다. 버그 고친 거, 기능 추가한 거. QA는 최신 빌드로 테스트한다. 어제 빌드는 소용없다. 오늘 빌드로 해야 한다. 다운로드한다. 3GB. 10분 걸린다. 설치한다. 기존 빌드 지우고 새 빌드 설치. 실행한다. 로그인한다. 테스트 계정으로. 시작한다. 오늘의 테스트. 빌드 받는 게 일상이 됐다. 출근하면 자동으로 한다. 생각 안 하고. 집에서도 나온다. 게임 업데이트 알림 뜬다. 혼잣말한다. "빌드 받아야지." 친구가 "뭐래"라고 한다. "아니 업데이트." 친구가 웃는다. "너 회사 너무 다닌다." 맞다. 회사를 너무 다닌다. 패치노트 확인했어요? 기획자가 QA한테 자주 묻는다. "패치노트 확인했어요?" 확인 안 했다. 까먹었다. "지금 볼게요." 패치노트. Patch Note. 이번 빌드에서 뭐가 바뀌었는지 적은 문서.던전 A 밸런스 조정 NPC B 대사 수정 스킬 C 버그 수정 UI D 변경이렇게 적혀있다. QA는 이걸 보고 테스트한다. 바뀐 부분 위주로. 던전 A 들어가서 밸런스 확인. 스킬 C 써보면서 버그 재현 안 되는지 확인. 근데 패치노트를 안 보고 테스트하면 문제가 생긴다. "이거 버그 아니에요?" "아뇨, 어제 패치했어요. 패치노트에 있어요." "아..." 민망하다. 그래서 매일 아침 확인한다. 패치노트. 빌드 받고 제일 먼저. 습관이 됐다. 앱 업데이트하면 업데이트 내역 본다. 다른 사람은 안 보는데 나는 본다. 친구가 "누가 그거 읽어"라고 한다. 나는 답한다. "나." 친구가 한숨 쉰다. 치트 써야겠다 테스트 시간 단축의 핵심이다. "치트 써야겠다." 레벨 100 콘텐츠 테스트해야 한다. 지금 레벨 1이다. 정상적으로 레벨업하면 50시간 걸린다. 시간 없다. 치트 쓴다. /levelup 100 레벨 100 됐다. 치트. Cheat. 게임 내부 명령어. 개발자 전용. QA도 쓴다. 레벨업, 아이템 지급, 스탯 변경, 시간 조작. 다 된다. QA는 치트로 극한 상황을 만든다. 레벨 1이 레벨 100 몬스터 만나면 어떻게 되는지. 공격력 0인 상태에서 보스 때리면 어떻게 되는지. 정상적으로 플레이하면 절대 안 나오는 상황. 치트로 만들어서 테스트한다. 버그가 나온다. 고쳐진다. 치트 쓰는 재미가 있다. 신처럼 플레이하는 기분. 근데 치트에 익숙해지면 문제가 생긴다. 집에서 게임한다. 정식 출시된 게임. 치트 없다. 레벨업이 느리다. 답답하다. "치트 없나..." 친구가 웃는다. "너 맛갔다." 맞다. 맛갔다. 스모크 테스트 할게요 빌드 받으면 제일 먼저 한다. "스모크 테스트 할게요." 새 빌드 설치했다. 실행한다. 로그인. 캐릭터 선택. 마을 이동. 던전 입장. 몬스터 처치. 퀘스트 완료. 5분 컷. 이게 스모크 테스트다. Smoke Test. 기본 기능이 돌아가는지 빠르게 확인. 게임이 켜지나? 로그인되나? 캐릭터 움직이나? 전투되나? 이것만 확인한다. 세부 사항은 나중에. 스모크 테스트 통과하면 본격 테스트 시작한다. 스모크 테스트 실패하면 개발팀한테 돌려보낸다. "빌드 안 돌아가요." 개발자가 고친다. 다시 빌드 준다. 다시 스모크 테스트. 통과할 때까지 반복. 스모크 테스트는 QA의 기본이다. 처음 배우는 것 중 하나. 일상에서도 쓴다. 새 전자제품 샀다. 포장 뜯는다. 전원 켠다. 작동 확인. "스모크 테스트 통과." 혼잣말이다. 친구가 이상하게 쳐다본다. 식당 간다. 메뉴 시킨다. 맛본다. "스모크 테스트 통과." 친구가 묻는다. "너 오늘 이상해." 매일 이상하다.일 하다 보니 입에 붙었다. 못 고친다. 이게 내 언어가 됐다. "재현율이요?" 물어보는 게 자연스럽다. QA 3년 하면 이렇게 된다. 업계 용어가 일상 용어 된다. 친구들은 이상하게 쳐다본다. 나는 이게 정상이다. 로그 확인해봐야 아는데.

런칭 후 버그 터졌을 때 QA의 심정

런칭 후 버그 터졌을 때 QA의 심정

런칭 후 버그 터졌을 때 QA의 심정 디스코드가 터진 날 런칭 3일 차. 새벽 2시. 디스코드 알림이 미쳤다. 100개. 200개. 멈추지 않는다. "아이템 복사 버그 있음" "퀘스트 완료 안 됨" "접속 끊김"유저들이 찾았다. 우리가 못 찾은 버그를. 팀장 전화가 왔다. "출근해." 회의실의 시선 오전 10시. 긴급 회의. 개발팀 전원. 기획팀 전원. 그리고 우리 QA팀. "QA에서 이거 못 찾았어요?" 대표이사가 물었다. 나를 보면서. 말이 안 나왔다. "죄송합니다"만 했다. 옆자리 윤서가 설명했다. "케이스를 못 찾았습니다. 특정 조건에서만..." "특정 조건?" 개발팀장이 웃었다. 비웃는 웃음. "유저들은 10분 만에 찾았는데?" 할 말이 없었다.우리가 3개월 테스트했다. 매일 12시간씩. 유저 10만 명이 3일 했다. 총 300만 시간. 이길 수가 없다. 숫자로. 테스트 로그를 뒤진다 회의 끝나고 자리로. 내 테스트 로그를 열었다. 3개월 치. "아이템 획득 테스트 - 정상" "인벤토리 테스트 - 정상" "퀘스트 보상 테스트 - 정상" 다 했다. 분명히 다 했다. 그런데 왜 못 찾았을까. 유저 제보를 다시 봤다. "아이템 획득 중 네트워크 끊기면 복사됨" 아. 네트워크 불안정 상황. 우리는 사무실에서 테스트했다. 와이파이 빵빵한 곳에서. 유저는 지하철에서 했다. LTE 들락날락하는 곳에서. 그 차이였다. 재현 테스트 오후 내내 재현했다. 와이파이 껐다 켰다 반복. 100번. 51번째에 터졌다. 아이템 2개가 됐다. "재현했습니다." 개발팀에 리포트 올렸다. 개발자가 답했다. "알았어요. 근데 왜 런칭 전에 못 찾았죠?" 또 그 질문. "네트워크 불안정 테스트가 부족했습니다." "그걸 QA가 해야 하는 거 아닌가요?" 맞다. 우리가 해야 했다.말이 안 나왔다. "죄송합니다"만 또 했다. 커뮤니티 반응 점심시간. 커뮤니티를 봤다. "이 회사 QA 뭐 함?" "테스트도 안 하고 런칭했냐" "돈만 받고 놀았네" 칼이었다. 하나하나가. 댓글 200개. 추천 500개. 옹호하는 댓글은 없었다. "QA가 사람인데 다 찾겠어요?" 이 댓글도 있었다. 추천 5개. 나머지는 욕이었다. 창을 껐다. 더 못 봤다. 야근의 이유 저녁 9시. 아직도 회사. 버그 리스트를 정리했다. 유저 제보 500건. 중복 제거하니 80건. 심각도 분류했다. Critical 12건. High 35건. Medium 33건. Critical 12건은 핫픽스 대상. 내일 새벽까지. 개발팀이 수정하면 내가 확인한다. 전수 확인. 예상 시간 6시간. 새벽 4시쯤 끝날 것 같다. 집에는 못 간다. 오늘도. 편의점 도시락 먹었다. 세 번째. 동료의 위로 새벽 1시. 윤서가 커피를 줬다. "너 탓 아니야." "근데 다들 나를 봐." "나도 봐. 우리 팀 전체를 봐." 윤서도 힘들다는 걸 안다. 리드 QA라서 더. "우리가 할 수 있는 거 했어. 시간도 부족했고 인력도 부족했어." 맞다. QA 3명이서 RPG 전체를 테스트했다. 개발자는 20명인데. QA는 3명. "그래도 유저는 모르잖아." "응. 모르지." 윤서가 자기 자리로 갔다. 테스트하러. 나도 했다. 핫픽스 빌드 확인. 4시의 퇴근 새벽 4시 반. 마지막 버그 확인 끝. "전수 확인 완료. 배포 가능합니다." 개발팀장한테 메시지 보냈다. 답장은 안 왔다. 자고 있겠지. 사무실 불을 껐다. 마지막 남은 사람. 엘리베이터에서 거울을 봤다. 눈이 충혈됐다. 3일 동안 15시간씩 일했다. 얼굴이 푸석하다. 27살 얼굴이 아니다. 택시 탔다. 회사 법인카드로. 기사님이 물었다. "야근하셨어요?" "네." "힘드시겠네요." "네." 더 할 말이 없었다. 핫픽스 배포 다음 날 오후. 핫픽스 나갔다. 공지가 떴다. "긴급 점검 완료. 버그 수정했습니다." 커뮤니티 반응을 봤다. "수정 빠르네" "이제야 하네" "처음부터 제대로 하지" 칭찬은 없었다. 당연한 걸 했다고 생각하니까. 욕은 줄었다. 그게 다행이었다. QA 얘기는 더 이상 없었다. 관심 밖. 우리가 밤샘한 건 아무도 모른다. 우리가 6시간 동안 전수 테스트한 것도. 그냥 "개발팀이 수정했다"로 끝. 팀장의 말 오후 회의. 팀장이 말했다. "다들 고생했어. 특히 QA팀." 처음 듣는 말이었다. 긴급 회의 때는 없던 말. "근데 다음부터는 네트워크 불안정 케이스도 체크하자." 또 숙제가 생겼다. 체크리스트에 항목 추가. "네트워크 불안정 시나리오 테스트" 이미 200개 넘는 체크리스트. 거기에 하나 더. 시간은 그대로인데. 일은 늘었다. "시간 더 주실 수 있나요?" 윤서가 물었다. "런칭 일정은 이미 정해졌어. 다음 업데이트도." 없다는 뜻이었다. 무력감의 정체 퇴근길. 지하철에서 생각했다. 왜 이렇게 무력할까. 우리가 못해서? 아니다. 할 수 있는 건 다 했다. 시간이 없어서? 맞다. 하지만 핑계처럼 들린다. 유저가 더 많아서? 맞다. 하지만 변명처럼 들린다. 결국 답은 하나다. 버그는 항상 나온다. 100% 막을 수 없다. 근데 사람들은 100%를 원한다. 개발자 실수는 "버그"라고 한다. QA 실수는 "직무유기"라고 한다. 같은 실수인데 다르게 본다. 그래도 하는 이유 집에 도착했다. 고시원 방. 침대에 누웠다. 천장을 봤다. 그만둘까 생각했다. 100번째쯤. 이직할까 생각했다. 200번째쯤. 근데 안 한다. 아직은. 왜냐면. 버그 찾는 게 재밌어서. 가끔. 유저들이 즐기는 거 보면 뿌듯해서. 가끔. "버그 없네. QA 잘했다"는 말 들으면 좋아서. 거의 안 들리지만. 그리고 이거. 누군가는 해야 하니까. 개발자가 만들면 누군가는 확인해야 한다. 그게 우리 일이니까. 다음 버전 다음 날 출근. 새 빌드 받았다. 차기 업데이트 빌드. 신규 던전. 테스트 시작했다. 또. 던전 입장. 몬스터 잡기. 보상 확인. 정상이다. 지금은. 근데 안다. 어딘가에 버그가 있다는 걸. 내가 못 찾을 수도 있다는 걸. 런칭 후 유저가 찾을 수도 있다는 걸. 그때 또 무력할 거라는 걸. 그래도 한다. 찾을 수 있는 만큼. 마우스를 움직였다. 던전 2회차. 체크리스트를 켰다. 201개 항목. 하나씩 체크했다. 오늘도.버그는 항상 나온다. 근데 QA는 항상 욕먹는다. 그게 이 일이다.

던전 100번 돌았을 때의 공포

던전 100번 돌았을 때의 공포

던전 100번 돌았을 때의 공포 1회차: 오 신선하네 월요일 오전 10시 30분. 새 빌드 받았다. "이번 업데이트 던전 추가됐어요." 기획자가 슬랙에 올렸다. 기대된다. 신규 콘텐츠다. 접속했다. 로딩 화면부터 새롭다. BGM 바뀌었네. 던전 입장. "오 이펙트 예쁜데?" 첫 몹 잡았다. 타격감 좋다. 보스까지 5분. 클리어. 보상 확인. 전설 무기 나왔다. 확률 체크 시작. "재밌네 이거." 테스트 노트에 적었다. '던전 난이도 적절, 보상 괜찮음, 이펙트 만족'. 1회차는 언제나 즐겁다.10회차: 패턴 파악 같은 날 오후 3시. 던전 10번 돌았다. 패턴이 보이기 시작한다. 몹 배치 똑같다. 보스 패턴 3개. 회피 타이밍 외웠다. "전설템 확률 3/10... 30%네." 엑셀에 정리한다. 회차, 시간, 획득 아이템, 버그 발견 여부. 아직 괜찮다. 일하는 기분이다. 보스 페이즈 2에서 스킬 씹히는 버그 찾았다. 만티스에 올렸다. "재현율 40% 정도 되는 거 같은데..." 몇 번 더 돌아야 한다. 버그 재현이 중요하다. QA의 기본이다. 30회차: 자동화 모드 화요일 오전. 어제 20회 더 돌았다. 오늘 또 10회. 이제 눈 감고도 플레이 가능하다. 입장 - 1번 몹 처리 - 2번 몹 처리 - 보스방 - 패턴 1, 2, 3 - 클리어. 4분 50초. 시간까지 똑같다. 점심 먹으면서도 돌렸다. 김밥 씹으면서 보스 잡는다. "아 죽었네." 집중 안 하면 죽는다. 그래도 자동으로 손이 움직인다. 확률 데이터 쌓인다. 전설템 28%. 예상 범위 내. 밸런스팀 과장님이 물었다. "겜큐님, 난이도 어때요?" "적당한 것 같아요." 적당한지 모르겠다. 이미 너무 익숙해서.50회차: 이펙트가 안 보임 수요일 오후 2시. 50회 돌았다. 이펙트가 안 보인다. 처음엔 예뻤던 스킬 연출. 이제 그냥 화면 번쩍임. 보스 등장 컷신 스킵한다. ESC 누르는 손가락이 자동이다. BGM도 안 들린다. 유튜브 틀어놨다. "또 노란색이네." 전설템 색깔. 보라색 먼저 확인한다. 신화템 0개. 확률 0%. 너무 낮은 거 아닌가. 기획자한테 슬랙 보냈다. "신화템 확률 확인 부탁드려요. 50회 0드랍이에요." 답장 왔다. "0.5% 맞아요." 계산해봤다. 50회에서 안 나올 확률 77%. 정상이다. 더 돌아야 한다. 숨 쉬듯이 던전 돈다. 생각 없이 클릭한다. 이게 일이다. 70회차: 게임이 아니다 목요일 오전. 70회 넘었다. 이건 게임이 아니다. 엑셀 작업이다. 데이터 입력이다. 회차, 클리어 시간, 드랍템, 골드량, 경험치. 숫자만 본다. 게임 화면은 배경이다. 옆자리 신입이 물었다. "선배님, 재밌어요 그 던전?" "응." 재미? 모르겠다. 재미를 느낄 정신이 없다. 점심시간. 구내식당 간다. "오늘 메뉴 뭐예요?" "제육볶음이요." "어제도 제육 아니었어?" "어제는 닭갈비였어요." 구분이 안 간다. 던전처럼. 오후에 20회 더 돌았다. 신화템 1개 나왔다. "드디어." 기쁘지 않다. 그냥 데이터 하나 채워졌다.100회차: 공포 금요일 저녁 7시. 100회 달성했다. 축하할 일이다. QA 업무 완료. 기쁘지 않다. 엑셀 정리한다. 전설템 확률 28.3%. 신화템 0.6%. 기획 의도랑 비슷하다. 밸런스 문제없다. 버그 리스트 15개. 심각도 높은 거 3개. 리포트 작성한다. 2시간 걸렸다. 과장님한테 보고했다. "수고했어요. 다음 주 신규 던전 또 나와요." 또. 집에 간다. 지하철 탄다. 핸드폰 켰다. 평소 하던 모바일 게임. 던전 입장 버튼 보인다. 손이 안 움직인다. 게임 껐다. 무엇이 문제인가 토요일 오후. 집에서 쉰다. 친구가 카톡 보냈다. "야 너 게임회사 다니면서 게임 안 해?" "요즘 별로." "부럽다 게임하면서 돈 버잖아." 할 말이 없다. 게임을 하긴 한다. 하루 10시간씩. 근데 게임이 아니다. 반복 작업이다. 데이터 수집이다. 버그 찾기다. 재미를 찾는 게 아니라 문제를 찾는다. 개발자들이 만든 즐거움을 내가 숫자로 바꾼다. 확률, 시간, 효율, 밸런스. 게이머가 느낄 재미를 내가 미리 소비한다. 100번 반복해서. 월요일이 온다 일요일 밤. 내일 출근이다. 신규 콘텐츠 또 나온다. 던전 2개 추가. 각각 100회씩 돌아야 한다. 게임 좋아해서 이 일 시작했다. 지금도 게임 좋아한다. 근데 복잡하다. 좋아하는 걸 일로 하면 행복할 줄 알았다. 반은 맞다. 출근이 싫지 않다. 반은 틀리다. 좋아하던 것도 100번 반복하면 달라진다. 이펙트가 안 보인다. BGM이 안 들린다. 숫자만 보인다. 그래도 간다. 월요일 출근. 새 던전 기다린다. 1회차는 언제나 즐겁다. 10회차까지는.던전 100번 돌면 게임이 엑셀이 된다.