지속적인 통합
지속적인 컴파일
지속적인 데이터베이스 통합
지속적인 테스트
지속적인 검사
지속적인 배포
지속적인 피드백
One Click?
테스트 자동화의 목표
위험 감소
지루하고 반복적인 프로세스 줄이기
프로젝트 가시성 높이기
자신감 얻기
CruiseControl.NET + MSBuild
CruiseControl.NET
지속적인 통합을 도와주는 빌드 자동화 툴
오픈 소스 프로젝트
Web과 CCTray 트레이 아이콘으로 피드백
MSBuild
MS에서 제공하는 빌드 플랫폼
XML로 복잡한 빌드 프로세스를 쉽게 조작할 수 있다.
단위 테스트
UnitTest++ 라이브러리 사용
대상 : 게임 로직
주기
개발과 관련된 테스트 케이스 : 컴파일할 때마다 항상
전체 테스트 케이스 : 저장소에 커밋할 때마다
DB 테스트
xDBUnit은 C++에 맞지 않았다.
UnitTest++와 SQL스크립트를 사용함.
테스트 단계
테스트 데이터베이스에 테스트 데이터 집합을 생성
테스트 케이스 실행
데이터 변경 검증
주기 : 하루에 한 번
Resource Validator
기획자나 아티스트가 입력한 컨텐츠 설정값에
논리적으로 잘못된 값이 입력되었는지 검증
게임을 실행할 때마다 잘못 입력된 값이 있으면
로그인 화면에서 에러 리포트
모듈화시켜 맵툴 등에서도 체크할 수 있도록 한다.
주기 : 게임을 실행할 때마다
통합 테스트
대상 : 단위 테스트 + DB + 컨텐츠(아이템 정보,
퀘스트 정보, 스킬 정보 등)
주기 : 소스를 저장소에 커밋할 때마다
네트워크 스트레스 테스트
클라이언트 패킷 핸들링을 XML로 쉽게 조작
테스트 케이스
로그인 반복, 캐릭터 생성,삭제 반복, 이동 반복 등
스케줄링
Crash가 발생하거나 성능이 일정 수치 이하이면
테스트 실패로 간주
주기 : 일주일에 한 번
AI 전투 테스트
랜덤으로 특정 맵에 x마리의 몬스터를 스폰시켜
서로 싸우도록 한다.
Crash가 발생하거나 성능이 일정 수치 이하이면
테스트 실패로 간주
주기 : 하루에 한 번
프레임 테스트(클라이언트)
리플레이 파일을 재생하여 평균 프레임이 특정값
이상이면 테스트 성공
프레임율 그래프 출력
3DMark의 벤치마크 테스트와 유사한 방식
픽셀 테스트(클라이언트)
특정 씬을 렌더링하여 원본 이미지와 같은
이미지인지 픽셀당 비교하여 일정 비율(90%
정도) 이상이면 테스트 성공.
3d 엔진을 포함한 단위 테스트를 만들지 못하여
나온 대안 방법
랜덤 요소 제거 등의 몇가지 추가 작업이 필요함.
참고
서적
지속적인 통합(위키북스)
리팩토링 데이터베이스(위키북스)
사이트
http://confluence.public.thoughtworks.org/display/CCN
ET
http://msdn.microsoft.com/ko-kr/library/0k6kkbsd.aspx
http://kaistizen.net/EE/
0 comments
Post a comment