Showing Posts From
화요일
- 12 Dec, 2025
화요일 오전 크로스펑셔널 미팅, 시간만 흘렀다
9시 30분 회의실 회의실에 먼저 도착했다. 노트북 켜고 지난주 품질 메트릭스 정리했다. 테스트 커버리지 82%, 크리티컬 버그 3건 오픈, 예상 테스트 기간 2주. 개발 리드가 들어왔다. 기획 리드는 커피 들고. PM은 노트북 두 개 펴놨다. "오늘 다음 스프린트 일정 정리하죠." PM이 화면 공유했다. 간트차트가 떴다.일정부터 정해져 있다 "출시일은 3월 15일로 확정입니다. 경영진 보고 끝났어요." 시작부터 그렇다. 개발 리드가 손들었다. "개발 완료는 3월 1일 목표로 하겠습니다." 2주다. QA 기간이 2주다. 내가 말했다. "그럼 QA는 3월 1일부터 15일까지?" "네, 2주면 충분하죠?" 충분하지 않다. 이번 기능은 결제 로직 변경이다. 크로스 브라우저 테스트, 모바일 디바이스 테스트, 결제 시나리오만 100개가 넘는다. "최소 3주는 필요합니다. 결제 관련이라 리스크가 높아요." PM이 고개를 저었다. "일정이 이미 확정됐어요. 마케팅 캠페인도 다 짰고요." 기획 리드가 거들었다. "자동화 있잖아요. 그거로 커버 안 되나요?" 자동화 커버리지는 60%다. 나머지 40%는 수동이다. 결제는 특히 수동 테스트 비중이 크다. "자동화로 안 되는 케이스가 많습니다. 실제 카드 결제, PG사 연동, 환불 프로세스..." "그래도 2주 안에 해야죠. 일정은 못 미뤄요." 협의가 아니다. 통보다.품질은 협상 대상 내가 노트북을 돌렸다. 지난 분기 장애 현황을 보여줬다. "지난번 결제 기능 배포 때 장애 3건 났습니다. 테스트 기간이 10일이었어요. 고객 환불 요청 247건, CS 비용만 800만원." 개발 리드가 화면을 봤다. "그건... 예외 케이스였죠." 예외가 아니다. 테스트 기간이 부족했다. "이번에도 같은 상황 올 수 있습니다. 최소 3주, 안 되면 기능 축소를 고려해야 합니다." 기획 리드가 말했다. "기능 축소는 안 됩니다. 이미 대외 발표했어요." PM이 중재하듯 말했다. "QA 리소스 더 투입하면 어떨까요?" 팀원이 8명이다. 다 다른 프로젝트 잡혀있다. 갑자기 리소스를 어디서 뽑나. "지금 팀원들 다 풀로 돌고 있습니다. 외주 쓰려면 최소 2주 전에 말씀하셔야 했고요." "그럼 야근으로..." 야근으로 품질이 올라가지 않는다. 피곤하면 버그를 놓친다. "야근은 단기 솔루션이 아닙니다. 지속 가능하지 않아요." 회의실이 조용해졌다. 다들 노트북만 본다. PM이 말했다. "일단 2주로 진행하고, 중간에 리스크 보면서 조정하죠." 조정이 안 된다는 걸 다 안다. 일정은 한 번 정해지면 안 바뀐다. 협업이라는 이름 기획 리드가 물었다. "테스트 우선순위는 어떻게 되나요?" "크리티컬 패스부터 합니다. 결제 플로우, 환불, PG 연동 순서로." "UI 변경 사항도 체크해야 하지 않나요? 디자인 많이 바뀌었어요." 그것도 해야 한다. 하지만 시간이 없다. "UI는 세컨더리로 잡겠습니다. 기능 먼저, UI는 병렬로 돌리고요." 개발 리드가 끼어들었다. "API 변경도 있어요. 백엔드 테스트 케이스 새로 작성해야 하지 않나요?" 해야 한다. 다 해야 한다. 2주 안에. "API 테스트는 자동화로 커버하겠습니다. 새 케이스는 이번 주 안에 작성하고요." PM이 정리했다. "좋습니다. 그럼 QA는 3월 1일부터 15일, 2주 진행. 중간 체크포인트는 3월 8일로 하죠." 중간 체크포인트에서 뭘 체크하나. 이미 늦었다고 말할 때쯤이면 손 쓸 방법이 없다.회의록에 남는 것 회의가 끝났다. 1시간 30분. PM이 회의록 작성했다. 컨플루언스에 올라왔다.출시일: 3월 15일 개발 완료: 3월 1일 QA 기간: 3월 1일~15일 (2주) 중간 체크: 3월 8일 담당: QA 팀내가 제기한 리스크는 안 적혔다. 3주 필요하다는 의견도 없다. 장애 이력도 없다. 회의록에는 합의만 남는다. 이견은 사라진다. 슬랙에 메시지 남겼다. "QA 기간 2주는 리스크 높습니다. 최소 3주 필요. 회의록에 추가 부탁드립니다." PM이 답했다. "일정 확정이라 어렵습니다. 리스크는 트래킹하겠습니다." 트래킹만 한다. 해결은 안 한다. 팀원들한테 뭐라고 하나 팀 채널에 공지했다. "다음 스프린트 일정 나왔습니다. 결제 기능 리뉴얼, QA 기간 3월 1일~15일." 팀원들 반응이 올라왔다. "2주요? 결제인데?" "다른 프로젝트는요?" "야근 각인가요..." 영민이가 물었다. "3주 달라고 안 하셨어요?" 했다. 근데 안 됐다. "일정이 확정이래. 최대한 효율적으로 돌려보자." 효율적으로. 이 말이 얼마나 공허한지. 지원이가 말했다. "자동화 커버리지 올릴까요?" 올려야 한다. 근데 자동화 작성 시간도 필요하다. "크리티컬한 케이스 위주로 추가해. 다음 주까지." 다음 주면 개발 끝난다. 그때 자동화 돌려봐야 버그 나온다. 수정하고 재테스트하면... 시간이 없다. 점심시간 팀원들이랑 식당 갔다. 다들 조용했다. 수진이가 말했다. "팀장님, 스트레스 많으시죠?" 많다. 근데 표현 안 한다. "괜찮아. 우리가 잘하면 돼." 우리가 아무리 잘해도 시간은 안 늘어난다. 영민이가 물었다. "이번에도 일정 못 지키면 QA 탓 하려나요?" 할 것이다. 항상 그랬다. "그래서 우리가 더 꼼꼼히 해야지. 리스크 문서화하고, 테스트 커버리지 투명하게 공유하고." 방어적이다. 이게 QA 리드의 일이다. 팀 지키는 것. 오후, 테스트 전략 회의 팀원들 모았다. 2주 안에 뭘 할 수 있을까. 화이트보드에 썼다. Week 1:테스트 케이스 작성 (2일) 스모크 테스트 (1일) 주요 시나리오 테스트 (2일)Week 2:크로스 브라우저 (2일) 모바일 디바이스 (2일) 리그레션 (1일)버퍼는 없다. 버그가 안 나온다는 가정이다. 지원이가 손들었다. "버그 나오면요?" "개발팀이랑 핫픽스 프로세스 돌린다. 최대한 빨리 수정받고." 수진이가 물었다. "크리티컬 버그 나오면요?" "일정 조율 다시 요청한다. 근데... 안 될 거야." 다들 안다. 그래도 물어본다. 리스크 문서 컨플루언스에 리스크 문서 작성했다. 제목: [결제 리뉴얼] QA 리스크 및 완화 계획 Risk #1: 테스트 기간 부족 (2주 → 3주 필요)Impact: High Probability: High Mitigation: 우선순위 기반 테스트, 자동화 확대Risk #2: 리소스 부족 (8명 → 10명 필요)Impact: Medium Probability: High Mitigation: 외주 검토, 타팀 지원 요청Risk #3: 결제 장애 발생 가능성Impact: Critical Probability: Medium Mitigation: 프로덕션 모니터링 강화, 롤백 계획문서 링크를 PM한테 보냈다. "리스크 공유드립니다. 검토 부탁드립니다." 읽씹이다. 한 시간 지나도 답이 없다. 두 시간 후에 답왔다. "확인했습니다. 일정 내 최선을 다해주세요." 최선을 다해달라. 이 말만 돌아온다. 개발 리드한테 DM 슬랙 DM 보냈다. "형준님, 이번 일정 너무 타이트한 거 아시죠?" 답이 빨리 왔다. "알아요. 저도 개발 일정 빡빡해요." "크리티컬 버그 나오면 어떡하시려고요?" "최대한 안 나오게 개발하죠. 유닛 테스트 커버리지 올리고 있어요." 유닛 테스트로는 부족하다. 통합 테스트, E2E 테스트가 필요하다. "그래도 리스크는 있잖아요. 일정 조정 같이 얘기해볼까요?" "저도 말했어요. 근데 안 되더라고요. 이미 대외 발표했대요." 대외 발표가 뭐가 중요한가. 품질이 중요하지. "그럼 기능 축소는요?" "그것도 안 된대요. 다 중요한 기능이래요." 다 중요하면 시간을 줘야 한다. 시간도 안 주고 다 중요하다는 건 모순이다. 6시, 퇴근 시간 팀원들이 하나씩 퇴근한다. "내일 봐요, 팀장님." "먼저 들어갑니다." "수고하셨어요." 나는 남았다. 테스트 계획서 마저 써야 한다. 노트북 화면에 간트차트가 떠있다. 빨간 줄이 많다. 리스크 표시다. 2주. 14일. 112시간. 테스트 케이스는 348개. 자동화는 210개. 수동은 138개. 수동 테스트 하나에 평균 30분. 138개면 69시간. 크로스 브라우저는 5개 브라우저. 주요 시나리오 50개. 250회 테스트. 계산이 안 맞는다. 집에 가는 길 지하철에서 남편한테 카톡 보냈다. "오늘 회의 최악이었어." 답이 왔다. "또 일정 싸움?" "응. 2주 달래. 결제 기능인데." "에휴. 거기도 그렇구나." 남편 회사도 비슷하다. 개발자도 일정에 치인다. "저녁은?" "너 오면 같이 먹자. 뭐 먹을래?" "아무거나. 피곤해." "치킨 시킬까?" "좋아." 치킨 먹으면 살찐다. 근데 오늘은 상관없다. 집에서 딸이 학교 숙제 하고 있었다. "엄마 왔어요?" "응, 우리 공주. 숙제 다 했어?" "거의요. 이거 하나만 더." 남편이 부엌에서 나왔다. "힘들었어?" "응. 회의가 2시간." "결론은?" "일정 확정. QA 2주." "에휴." 치킨이 왔다. 셋이서 먹었다. 딸이 물었다. "엄마 회사 재밌어요?" 재밌냐고. "응, 재밌어. 엄마 일 중요해." 거짓말은 아니다. 중요하다. 근데 인정은 안 받는다. 밤 11시 딸 재우고 남편이랑 소파에 앉았다. "오늘 회의에서 내 말 하나도 안 들어줬어." "그랬구나." "3주 필요하다고 했는데 2주래. 리스크 얘기했는데 일정 확정이래." "그럼 어떡하려고?" "어떡하긴. 해야지. 팀원들이랑 최대한 효율적으로." "그러다 장애 나면?" "그럼 QA 탓이지." 남편이 내 손을 잡았다. "너무 스트레스 받지 마. 네가 할 수 있는 거 다 하는 거잖아." 다 해도 부족하다. 시간이 없으니까. "13년 했는데 여전히 이래." "QA가 원래 그렇잖아. 우리도 개발자들 무시당해." "그래도 개발은 성과가 보이잖아. 기능 만들면 눈에 보이고." "QA도 보이지. 버그 안 나는 게 네 성과야." 버그 안 나는 건 당연한 거래. 버그 나오면 QA 잘못이고. 침대에서 불 끄고 누웠다. 내일 할 일 생각했다.테스트 계획서 완성 팀원들 태스크 분배 자동화 케이스 리뷰 개발팀 일정 재확인 리스크 업데이트2주 후면 배포다. 장애 안 나면 좋겠다. 나면... 포스트모템 쓰고, 재발 방지책 세우고, 경영진한테 보고하고. 또 "QA가 뭐했냐"는 소리 들을 것이다. 눈을 감았다. 내일 또 회의다.협업이라는 이름으로 모였지만, 결국 정해진 각본대로 흘렀다. QA의 목소리는 회의록에 남지 않는다. 그래도 내일 또 싸워야 한다. 팀을 위해.