Your SlideShare is downloading. ×
Continuous Test
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Continuous Test

1,151
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,151
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 지속적인 테스트 (Continuous Test) 남기룡(birdkr@gmail.com)
  • 2. 지속적인 통합 지속적인 컴파일 지속적인 데이터베이스 통합 지속적인 테스트 지속적인 검사 지속적인 배포 지속적인 피드백
  • 3. One Click? 테스트 자동화의 목표 위험 감소 지루하고 반복적인 프로세스 줄이기 프로젝트 가시성 높이기 자신감 얻기
  • 4. CruiseControl.NET + MSBuild CruiseControl.NET 지속적인 통합을 도와주는 빌드 자동화 툴 오픈 소스 프로젝트 Web과 CCTray 트레이 아이콘으로 피드백 MSBuild MS에서 제공하는 빌드 플랫폼 XML로 복잡한 빌드 프로세스를 쉽게 조작할 수 있다.
  • 5. 단위 테스트 UnitTest++ 라이브러리 사용 대상 : 게임 로직 주기 개발과 관련된 테스트 케이스 : 컴파일할 때마다 항상 전체 테스트 케이스 : 저장소에 커밋할 때마다
  • 6. DB 테스트 xDBUnit은 C++에 맞지 않았다. UnitTest++와 SQL스크립트를 사용함. 테스트 단계 테스트 데이터베이스에 테스트 데이터 집합을 생성 테스트 케이스 실행 데이터 변경 검증 주기 : 하루에 한 번
  • 7. Resource Validator 기획자나 아티스트가 입력한 컨텐츠 설정값에 논리적으로 잘못된 값이 입력되었는지 검증 게임을 실행할 때마다 잘못 입력된 값이 있으면 로그인 화면에서 에러 리포트 모듈화시켜 맵툴 등에서도 체크할 수 있도록 한다. 주기 : 게임을 실행할 때마다
  • 8. 통합 테스트 대상 : 단위 테스트 + DB + 컨텐츠(아이템 정보, 퀘스트 정보, 스킬 정보 등) 주기 : 소스를 저장소에 커밋할 때마다
  • 9. 네트워크 스트레스 테스트 클라이언트 패킷 핸들링을 XML로 쉽게 조작 테스트 케이스 로그인 반복, 캐릭터 생성,삭제 반복, 이동 반복 등 스케줄링 Crash가 발생하거나 성능이 일정 수치 이하이면 테스트 실패로 간주 주기 : 일주일에 한 번
  • 10. AI 전투 테스트 랜덤으로 특정 맵에 x마리의 몬스터를 스폰시켜 서로 싸우도록 한다. Crash가 발생하거나 성능이 일정 수치 이하이면 테스트 실패로 간주 주기 : 하루에 한 번
  • 11. 프레임 테스트(클라이언트) 리플레이 파일을 재생하여 평균 프레임이 특정값 이상이면 테스트 성공 프레임율 그래프 출력 3DMark의 벤치마크 테스트와 유사한 방식
  • 12. 픽셀 테스트(클라이언트) 특정 씬을 렌더링하여 원본 이미지와 같은 이미지인지 픽셀당 비교하여 일정 비율(90% 정도) 이상이면 테스트 성공. 3d 엔진을 포함한 단위 테스트를 만들지 못하여 나온 대안 방법 랜덤 요소 제거 등의 몇가지 추가 작업이 필요함.
  • 13. 그래서~ 이 모든 테스트를 자동화!!
  • 14. CruiseControl.NET
  • 15. CruiseControl.NET
  • 16. CruiseControl.NET에 원하는 내용 출력하기
  • 17. 테스트 결과 XML 로그 <?xml version=quot;1.0quot;?> <maiettest-results tests=“2quot; failedtests=“1quot; failures=quot;1quot; time=quot;0.137quot;> <report text=quot;time : 680 secquot; /> <report text=“총 클라이언트 개수 : 4650quot; /> <test name=“로그인 반복quot; time=quot;0.062quot; > <success message=quot;successquot; /> </test> <test name=“캐릭터 생성 반복quot; time=quot;0.062quot; > <failure message=quot;Crash!quot; /> </test> </maiettest-results>
  • 18. Dashboard의 xsl 파일 설정 <xsl:stylesheet version=quot;1.0quot; xmlns:xsl=http://www.w3.org/1999/XSL/Transform > xmlns:xsl= <xsl:output method=quot;htmlquot;/> <xsl:template match=quot;/quot;> <xsl:variable name=quot;maiettest.result.listquot; select=quot;/cruisecontrol/build/maiettest-resultsquot;/> name=quot;maiettest.result.listquot; select=quot;/cruisecontrol/build/maiettest- <xsl:variable name=quot;maiettest.report.listquot; select=quot;$maiettest.result.list/reportquot;/> name=quot;maiettest.report.listquot; select=quot;$maiettest.result.list/reportquot;/> <xsl:variable name=quot;maiettest.case.listquot; select=quot;$maiettest.result.list/testquot;/> name=quot;maiettest.case.listquot; select=quot;$maiettest.result.list/testquot;/> <table class=quot;section-tablequot; cellpadding=quot;2quot; cellspacing=quot;0quot; border=quot;0quot; width=quot;98%quot;> class=quot;section- cellpadding=quot;2quot; cellspacing=quot;0quot; <tr> tr> <td class=quot;sectionheaderquot;> class=quot;sectionheaderquot;> Maiet Test report: </td> </tr> </tr> <xsl:call-template name=quot;maiettest__reportdetailquot;> xsl:call- name=quot;maiettest__reportdetailquot;> <xsl:with-param name=quot;detailnodesquot; select=quot;//reportquot;/> xsl:with- name=quot;detailnodesquot; </xsl:call-template> </xsl:call- </table> <table class=quot;section-tablequot; cellpadding=quot;2quot; cellspacing=quot;0quot; border=quot;0quot; width=quot;98%quot;> class=quot;section- cellpadding=quot;2quot; cellspacing=quot;0quot; <tr> tr> <td class=quot;sectionheaderquot; colspan=quot;2quot;> class=quot;sectionheaderquot; colspan=quot;2quot;> Maiet Test Case results: </td> </tr> </tr> <xsl:call-template name=quot;maiettest__testdetailquot;> xsl:call- name=quot;maiettest__testdetailquot;> <xsl:with-param name=quot;detailnodesquot; select=quot;//testquot;/> xsl:with- name=quot;detailnodesquot; </xsl:call-template> </xsl:call- </table> </xsl:template> </xsl:template> </xsl:stylesheet> </xsl:stylesheet>
  • 19. 참고 서적 지속적인 통합(위키북스) 리팩토링 데이터베이스(위키북스) 사이트 http://confluence.public.thoughtworks.org/display/CCN ET http://msdn.microsoft.com/ko-kr/library/0k6kkbsd.aspx http://kaistizen.net/EE/