KGC 2009가 끝난지 1달이 넘었습니다.
바쁜 일이 있어서 짬을 내지 못했고(…), 많은 분들이 후기를 올려주셨더군요. 그래서, ‘안써도 되겠구나’ 하고 생각했는데 … Makoto Ito(SEGA Corporation) – How to eliminate bugs as much as possible 강연에 대한 후기가 없어서, 써 봅니다.
테스트 = 버그를 발견하기 위한 행동 이라고 정의, 게임의 재미를 찾는 테스트도 있으나 논외로 합니다.
사람에 의한 테스트
장점은 ‘노하우가 쌓이고, 쉽고, 비용을 계산하기 쉽습니다.’ 단점은 ‘테스트 조합이 많아지면서 어려워지고, regression 테스트가 어렵다’는 단점이 있습니다.
사람에 의한 테스트는 사람만이 할 수 있는 복잡한 테스트를 할 수 있기 때문에 꼭 필요하다.Unit test (단위테스트)
잘 알려진 Unit test 입니다. 주로 버그에 대한 테스트 코드를 작성하고, 리소스와 테스트 코드를 결합해서 사용할 수 있습니다. (예. xls 파일과 테스트 코드의 결합)
게임의 경우 시스템 부분과 로직 부분으로 나눌 수 있는데, 시스템 부분에 Unit test를 사용합니다.UI나, 렌더링의 경우 화면의 스크린샷을 비교하는 테스트를 하기도 합니다.
Visual Studio 의 add-in을 사용해서, 작업량을 줄일 수 있습니다.
Join Test
클래스를 포함하는 테스트이며, mock framework를 사용해서 테스트합니다.
컴퓨터에 의한 테스트
개발 초기에는 게임을 시작해서 종료하는 테스트만으로도 도움이 된다. replay를 이용한 테스트, log를 비교하는 테스트, replay 구간 구간을 비교하는 테스트 등이 있습니다.
AI Test
인공지능을 이용해서 테스트 하는 방법인데, 간단하게는 ‘랜덤 테스트’를 할 수 있습니다.
CI
그 이후에, CI 이야기가 나왔습니다. CI의 목적은 항상 ‘플레이 가능하게’
강연자가 추천하는 CI 툴은 2세대 CI 툴 hudson을 추천하고 있고, 사용방법이 매우 쉽다고 하는군요. (우리나라에서는 Cruise Control을 많이 쓰는 것으로 압니다만, 그건 1세대 CI 툴이라고 하는군요.)CI 과정에서 Data convert test 를 하기도 하고 (텍스쳐의 테스트 경우 사용되지 않는 색깔을 이용한다고 합니다.) …
최종 빌드의 리스크를 최소화하는데 목적이 있다고 합니다.
인재 육성
그 방법으로 code review나, study / meeting 등 (예를 들면, journal club)의 예를 들었습니다.
테스트 자동화로 디버깅 시간 감소 -> 여유로워진 시간을 인재 육성 -> 좋은 인재는 버그를 더 줄이고 -> 디버그에 남는 시간을 인재 육성에 투입하는 선순환 구조를 강조했구요.
그리고, 돈이 많은 회사라면 Static Analysis Tool 을 꼭 구입하라고 권하더군요.
제일 중요한 것은 역시 ‘사람’ 아닐까요 .
관련 링크 : http://www.thisisgame.com/board/view.php?id=302087&category=106