- 비동기, 멀티 쓰레드 문제 - 동기, 싱글 쓰레드 구조로 바꿀 수 있으면 테스트 코드에는 그렇게 바꿔서 테스트 코드를 만들고 그럴 수 없으면 만들지 않는다. 더미 클라이언트 테스트 같은 데에서 버그가 발견되길 바라는 수 밖에...
- 머신간 상호 작용 - 네트웍쪽 Mock 객체를 제대로 만들어놓지 않아 머신간에 패킷 여러 개를 주고 받는 상황 자체를 테스트하기가 어렵다. 예를 들면 PC간 아이템 교환 전체 로직 자체를 테스트하고 싶은데 할 수가 없다. 이건 최우선 과제.
- DB 유닛 테스트 - 데이터 베이스 자체에 대해서도 유닛 테스트를 돌리고 싶은데, DBUnit을 배워야 한다. 아니면 비슷한 걸 새로 만들던가... 문제는 DBUnit 이 JUnit 확장이라는 거. 자바 이제 가물가물 한데...=_=
- 3D 엔진 - 이건 답 없다. 디바이스 관련된 부분은 테스트하지 않고, 클라이언트의 다른 부분이라도 테스트할 수 있도록 디바이스 관련된 부분은 최대한 모아놔서 쉽게 Mock 객체를 만들 수 있도록 한다.
- 느린 빌드 시간 - 프로젝트가 커져 링크가 너무 오래 걸린다. 인크레디 빌드 구입하긴 또 아깝고..-_-;; 그래도 어떻게 해결하긴 해야 될 문제..
- 테스트 커버리지 분석 - 어디 C++ 용으로 이쁜 코드 커버리지 분석 도구 없나..공짜로......ㅠ.ㅠ
유닛 테스트 이외의 테스트 자동화 - 전략은 최대한 귀찮지 않게..~ 손 두번 안가게~
- 더미 클라이언트 - 정한 시나리오에 맞춰 또는 무작위로 패킷을 보내주는 더미 클라이언트로 스트레스 테스트 하기. 시나리오는 xml이나 스크립트로 쉽게 편집할 수 있게 한다. 더미 클라이언트 테스트는 가끔씩 직접 돌릴게 아니라 매일 일정 시간 돌아가도록 자동화한다. 결과 보고까지 해줘야 함.
- 픽셀 테스트 - 엔진 피처가 담긴 특정 씬들을 매일 스크린샷으로 저장하여 원본과 픽셀 비교를 해서 일정 비율 이상 다르면 에러 리포트.
- 리플레이 테스트 - 게임한 것을 리플레이로 저장하여 3DMark처럼 클라이언트 프로파일링, 분석 도구로 활용한다. 리플레이는 만들어 놨는데 xml로 뽑아주고 이쁘게 보여주도록 만드는게 귀찮구만..-_-;; 이것도 자동화해서 평균 특정 프레임이상 안나온다던지 하면 경고 리포트.
이 글의 트랙백 주소 :: http://mypage.sarang.net/tt/trackback/241
-
Subject: 유닛 테스트 관련 도전 과제, 전략
Tracked from 박피디의 게임 아키텍트 블로그 [2008/05/01 11:35] 삭제birdkr 님의 글에서 (내 맘대로) 이어서 쓰기 비동기, 멀티 쓰레드 문제 - 테스트 하기 어려움. 이거 고민하느니, 다른 테스트를 만들어두자. :(DB 유닛 테스트 - DBUnit 이라... 한 번 써 봐야 겠네요...

::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::
인크레디빌드 트라이얼이라도 요청해서 돌려보세요. 저희는 프로젝트 구조가 좀 복잡해서 인크레디빌드를 돌려도 큰 성능 향상이 없더군요. 그래서 포기했지요.
하지만 인크레디빌드 쪽이랑 상의해보면서, 도와주려고 노력하는 게 고마ㅜ었어요.
정말이지 인크레디 빌드 써야만 할 것 같네요..ㅜ.ㅜ