티스토리 뷰

Network

서버 테스트 방법

엘키 2008. 4. 25. 13:49

스트레스 테스트
예상한 것보다 훨씬 많은 행동을 시도하는 테스트 클라이언트를 통해서, 많은 부하가 발생했을 시에도 정상동작하는지 확인한다.

접속/해제 테스트
좀비 클라이언트가 남는지 확인한다.
접속/해제시 소켓 재사용 로직이 잘 처리되는지 확인한다. (최대 접속 가능 수가 5000이라고 치면, 5000개 이상의 클라이언트로 접속/해제 테스트를 수행한다)

로그인 / 로그 아웃 테스트
로그인 과정에서 끊길 수 있도록, 난수로 결정된 시간 값으로 클라이언트에서 디스커넥을 시도한다. 좀비가 남지 않는지 확인해야 하는데, 이 좀비는 위의 접속해제와 다른 것이 소켓 풀에서의 좀비가 아니라, 서버 로직상에서의 좀비를 확인해야 한다.

랜덤 (더미) 패킷 테스트
프로토콜에 전혀 맞지 않는 (비암호화) 무작위 생성 패킷을 발송한다.
이 검사를 통해 프로토콜 검사를 통과하는 경우는 생길 수 있지만, 그로 인한 예외처리가 잘 되어있는지를 확인하기 위함이다.

변조 패킷 테스트
프로토콜엔 맞되, 들어있는 값이 다른 패킷을 생성해 발송한다.
예를 들면, 뒤에 붙는 데이터 크기보다 더 큰 크기라고 속여서 발송하는 것이다. (실제 길이는 8byte인데, 헤더에는 64byte라고 속이는 등)
header의 값을 참조로만 사용하게끔 서버의 verify 로직이 잘 작성 되어있는지 확인하는 테스트이다.

부하 테스트
프로토콜을 맞춘 패킷을 매우 많이 쏘아올려, 동시 접속자 몇당, 초당 몇 바이트의 패킷 까지 정상적인 수행 속도를 유지하는지 확인한다.
패킷별로 패킷 처리 속도도 기록하라.

로직 테스트
정상적인 로직이 구현되었는지 확인하는 테스트 클라이언트를 구현하고 확인하라. 잘못된 데이터를 전달 받거나, 패킷이 회신 되지 않거나 했을 때에는 개발자에게 알려주도록 하라.

경계 값 테스트
로직 테스트 시 데이터를 올려보낼때 경계값(아이템 최대치가 10이 제한이면, 10, 11 , 0, -1, -32768 등의 값을 올려보낸다) 과 터무니 없는 값도 입력해서 예상치 못한 행동을 미리 시도해보는 것이 좋다.

무작위 패킷 테스트
정상적인 클라이언트가 올려보내기로한 패킷의 순서를 무시하고 패킷을 올려보낸다.
패킷이 순서가 존재하는 상황이 줄어야겠지만, 거래나 퀘스트 같은 경우가 여러 과정을 거치게끔 되어있는 경우가 많다.
동일한 패킷을 여러번 올려보내도 로직상 문제가 없는지 확인한다. (아이템 보상 패킷, 되팔기 패킷 등이 주 검토 대상.)

'Network' 카테고리의 다른 글

[UDP] 홀 펀칭 (Hole Punching)  (0) 2009.11.19
[UDP] Reliable UDP  (0) 2009.11.06
TCPView  (1) 2008.02.26
Traceroute - 네트워크 경로 추적 프로그램  (0) 2008.02.18
유닉스/라우터에서의 Traceroute  (0) 2008.02.18
댓글