일상에서 QA
모든 곳에 있는 오류
우리의 일상에서 버그 같은 순간은 어렵지 않게 찾아볼 수 있다. 예컨대 얼마 전 아파트 공용 현관문이 고장 났다. 분리수거 지정일인 주말을 빼면 평일에는 닫혀 있어야 한다. 하지만 일주일 내내 열려있었고 명백한 오류였다. 다만 보안의 측면을 제외하면 따로 현관 비밀번호를 누르지 않아도 되어 편리했다. 한편 엘리베이터도 종종 오류가 발생한다. 가끔 닫힘 동작을 하지 않고 덜컹거리곤 한다. 몇 번 닫힘 버튼을 누르다 보면 그제야 문이 닫히고 올라간다. 일상 속에서 버그 같은 순간은 이렇게 마주한다. 때로는 한 명의 QA로 왜 이러는지, 어떤 상황에서 발생하는지 테스트하고 싶을 때도 있다. 일종의 직업병이다. 세상은 완벽하지 않고 곳곳에서 오류는 존재한다는 걸 느낀다. 다만 누군가는 발견할 것이고 또 누군가는 기록도 하고 다른 누군가는 해결할 것이다. QA 일을 오래 하다 보면 버그 뒤에 각자의 사정이 있다는 걸 안다.
게임 속 세계와 현실의 경계
게임은 누군가에 의해 창조된 세계다. 수많은 규칙성은 정의될 수 있고 해결하는 방향도 여러 가지다. 그런 면에서 현실보다 정직한 세상이다. 게임에서 버그는 이유라도 있지만 현실은 그렇지 않기 때문이다. 현실의 문제는 이유조차 알 수 없을 때가 많다. 초월적인 존재가 되어 관찰자로서 우리를 보지 않는 이상 이 세상을 손바닥 보듯 모두 볼 수 없다. 하지만 한 가지 통하는 것은 존재한다. 게임이든 현실이든 모든 시스템은 기대와 결과가 어긋날 때가 있다. 그 어긋남을 조율하는 건 사람이라는 점이다.
테스트의 법칙은 인생에도 통한다
인생은 어쩌면 '테스트'의 연속일지도 모른다. 버그 리포트로 남기지 않을 뿐이다. QA를 하면서 느끼고 깨달은 건 '완벽한 테스트는 없다.'이다. 테스트 케이스를 아무리 촘촘히 짜도 예상하지 못한 상황은 반드시 생긴다. 현실에서도 그렇다. 계획한 대로 되는 하루는 없고 변수는 늘 사람에게서 생긴다. 지난 삶은 경험 삼아 이렇게 저렇게 모험을 해나갈 뿐이다.
버그 수정을 확인할 때는 항상 사이드 이펙트를 고려한다. 여기서 고친 것이 다른 곳에 영향이 없는지 확인하는 절차다. 이와 함께 '리그레션 테스트'가 있다. 예전에 했던 테스트를 반복하는 것으로 빌드가 크게 바뀌는 상황에서 안정성을 검증한다. 인생과 이들과 비슷할 때가 많다. 다 고친 줄 알았던 습관, 다 잊은 줄 알았던 감정이 어느 날 다시 나타난다. 그리고 그때 깨닫는다. 수정은 했지만 검증은 하지 않았다는 걸.
게임이 론칭되기 전이면 '부하 테스트'를 하곤 한다. 대규모 인원 세팅 후 콘텐츠들이 어느 정도까지 원활하게 진행되는지 점검하는 과정이다. 사람도 마찬가지다. 버티는 능력의 경계가 어디까지인지 알기 위해 우리는 어쩔 수 없이 피로를 느끼며 실패를 겪는다. QA에서 중요한 건 '언제 멈춰야 하는지 아는 것'이다. 한도 끝도 없이 업무를 진행할 수 없기 때문이다. 인생에서도 그렇다. 버그보다 더 위험한 건 멈추지 못하는 테스트다.
그래서 나는 이렇게 생각한다. 삶의 매뉴얼은 완벽할 필요가 없다고. 대신 수정 가능해야 한다고. 인생의 테스트는 통과가 아니라 '지속'이다. 우리는 늘 다음 버전을 준비하는 중이다.
모든 것은 연결되어 있다
앞서 언급한 것처럼 하나의 버그가 다른 곳에 예상치 못한 영향을 미칠 때 '모든 것은 연결되어 있다.'를 느낀다. 현실에서도 마찬가지다. 회사에서의 말 한마디가 팀 분위기를 바꾸고 누군가의 지친 표정이 집까지 따라서 온다. 사람과 사람 사이의 연결은 코드보다 복잡하고 로그처럼 명확하게 남지 않는다. 그럼에도 우리는 그 연결 속에서 산다. 결국 관계다. 클라이언트와 서버가 맞물려야 하듯, 사람과 시스템이 조화를 이루어야 한다.
그래서 나는 ‘버그’보다 ‘원인’을 본다. 증상이 아니라 의도와 맥락을 추적하는 것이다. 그게 진짜 디버깅이라고 생각한다.
세상도 그렇게 돌아간다. SNS의 피드, 데이터 로그, 뉴스의 헤드라인, 우리의 일상까지 서로 다른 정보들이 하나로 얽혀 거대한 현실이라는 코드를 이룬다. 완벽히 동기화된 적은 없지만 그 안에서도 연결은 계속된다.
모든 것은 모든 곳에 있다. 어쩌면 우리는 거대한 네트워크 속의 패킷일지도 모른다. 누군가의 요청에 반응하고 또 다른 누군가의 신호를 기다리는 존재로 남기에.
모든 곳의 나
예전에는 QA가 파괴적인 일이라고 봤다. 미리 게임을 파괴해 보면서 안정성을 높이는 것이라고 나 스스로 QA를 정의했다. 이제는 다르다. QA의 본질은 무엇인가 파괴하는 것이 아닌 재생시키고 살리는 거다. 보이지 않게 문제를 정리하고 무너진 기능을 다시 일으키는 일이다. 그건 어쩌면 삶의 방식이기도 하다.
나 역시 완벽하지 않다. 하지만 매일의 행적, 나만의 로그를 남긴다. 버그가 생기면 기록하고 수정된 것을 다시 확인한다. 그 과정을 통해 조금 더 나은 버전으로 업데이트된다. ‘모든 곳의 나’란, QA로서의 나이기도 하고 인간으로서의 나이기도 하다. 모든 곳에서 작동하며 누군가의 화면을 조금 더 안정적으로 만들어주는 존재. 그게 나의 일이고, 나의 존재 방식이다.