본문 바로가기
강좌/NDC

"달빛조각사"에서 서버 테스트 코드를 작성하는 방법

by lms0806 2022. 6. 9.
728x90
반응형
 

NDC-NEXON DEVELOPERS CONFERENCE

 

ndc.nexon.com

해당 내용정리는 Nexon에서 진행하는 Nexon Developers Conference에 나온 영상들을 참고하였습니다

 

<순차>

서버 테스트 뿌리내리기

서버 테스트 작성하기

더 짜기 쉽고 더 튼튼하게

병렬 테스트로 더 빠르게

마무리

 

<서버 테스트 뿌리내리기>

 - 초반작업 3가지(구성원드르이 동의, 테스트 환경 구축, 주요 로직 테스트)

 

 - 테스트 성공 상태 유지

실패를 방지할수록 성공상태로 돌리는 비용이 증가

 

- 열심히 테스트 하기

테스트가 없어도 코드 리뷰 진행

단, 테스트를 깨면 반드시 고쳐야함

 

테스트 호용성을 느낀 후, 코드 리뷰를 통해 테스트를 짜는 방법이 전파

 

- 테스트 기반 다지기

 테스트는 짜기 쉽고, 코드를 최적화해 빠르게 하고, 가끔 깨지는 테스트의 원인을 분석해 구조적 개선을 진행해야함

 

<서버 테스트 작성하기>

일반적인 테스트 피라미드
달빛조각사팀의 테스트 피라미드

 

유닛테스트보다 느린데, 서버 콘텐츠 자체를 테스트함

달빛 조각사팀의 테스트

통합 테스트에서는 클라이언트를 흉내내, 게임 콘텐츠를 테스트하는 스토리를 만듬

 

 

<더 짜기 쉽고 더 튼튼하게>

@tag를 이용해 테스트 코드 작성에 집중할 수 있고, 가독성이 좋아짐

 

게임 테이블 데이터를 수정해 사용하면, 해당 테스트가 끝날 때 원래 속성으로 복구하고, 전체 속성 정의가 필요하지 않고, 기획자가 테스트를 깨뜨리지 않고, 데이터 조작이 쉬워지니 다양한 속성을 테스트할 수 있음

 

순서에 상관없이 확인할 패킷을 리스트로 구현

 

테스트 sleep 시간을 짧게 주면 깨지기 쉽고, 길게 주면 테스트가 느려짐

이를 해결하기 위해, 간격을 두고 여러번 검사를 진행함

주어진 시간내에 실패하면 여러번 주어져 시도하고, 주어진 시간 전에 성공하면 다시 시도하지 않고 성공처리를 함

 

<병렬 테스트로 더 빠르게>

게임 테이블 데이터를 수정하게 되면 똑같은 데이터를 사용하는 테스트에 영향을 주게 됨으로써, 추적하기 힘들고 재현하기 힘든 테스트 실패가 발생

수정하지말고 새로 type id를 발급해서 게임 데이터를 추가하는 방식으로 변경함으로써, 다른 테스트에 영향을 주지 않음

 

시간과 기간과 관련된 게임 상수를 변경하는 테스트는 다른 테스트에 영향을 줄 수 있어서 병렬테스트가 아닌 순차테스트로 실행

 

 

728x90
반응형

댓글