성능 테스트 유형
지연 테스트 (Latency Test)
종단 트랜잭션에 걸리는 시간은?
고객이 트랜잭션 또는 페이지 로딩을 얼마나 오래 기다려야 하는지를 측정하는 테스트이다.
지연 측정 시 반드시
처리율을 어느 정도 수준으로 유지했는지 함께 기술해야 한다.
처리율 테스트 (Throughput Test)
현재 시스템이 처리 가능한 동시 트랜잭션 개수는?
어떤 측면에서는 처리율은 지연과 동등한 개념이라고 볼 수 있다.
사실상 한계점(=변곡점)이 바로 최대 처리율이다.
한계점이 발생하는 지점과
그 시점의 부하 수준을 포착하는 것이다.
부하 테스트 (Load Test)
특정 부하를 시스템이 감당할 수 있는가?
부하 테스트는 처리율 테스트와 조금 다르다.
시스템이 이 정도 부하는 견딜 수 있을까? 라는 질문에 대해
Yes/No 답을 구하는 과정이다.
예를 들어 트래픽이 상당할 것으로 예상하는 이벤트에 대비하기 위해 부하 테스트를 수행한다.
스트레스 테스트 (Stress Test)
이 시스템의 한계점은 어디까지인가?
처리율 테스트와 비슷한 개념이라는 생각이 든다.
시스템 여력이 어느 정도인지 알아보는 수단이다.
보통 일정 수준의 트랜잭션을 시스템에 계속 걸어놓는다.
= 일정 수준의 트랜잭션 = 즉 특정 처리율 = 트랜잭션의 최대치
시간이 갈수록 동시 트랜잭션이 증가하고 시스템 성능은 저하될 것이다.
그리고 측정값이 나빠지기 시작하기 직전의 값이 바로 최대 처리율이다.
내구성 테스트 (Endurance Test)
시스템을 장시간 실행 시 성능 이상 증상이 나타나는가?
메모리 누수, 캐시 오염, 메모리 단편화 등
한참 시간이 지나야 문제를 일으키는 요소들이 있는데
이런 종류의 문제는 내구 테스트로 감지한다.
방법으로는 평균 사용률로 시스템에 일정 부하를 계속 주며 모니터링하다가
갑자기 리소스가 고갈되거나 시스템이 깨지는 지점을 찾는다.
내구 테스트는 빠른 응답을 요구하는 시스템에서 많이 이뤄진다.
용량 계획 테스트 (Capacity Planning Test)
리소스를 추가한 만큼 시스템 확장이 되는가?
스트레스 테스트와 비슷한 면이 있다.
하지만 분명히 구분되는 차이점이 있다.
스트레스 테스트 : 현재 시스템이 어느 정도 부하를 버틸 수 있는가?
용량 계획 테스트 : 업그레이드한 시스템이 어느 정도 부하를 버틸 수 있는가?
따라서 특정 이벤트를 위한 테스트가 아닌
예정된 계획 일부분으로 실행하는 경우가 많다.
저하 테스트 (Degradation)
시스템이 부분적으로 실패 시 어떤 일이 벌어지는가?
부분 테스트라고도 불린다.
저하 테스트는 복원 테스트 하나만 기억하면 된다.
평상시 운영 환경과 동등한 수준의 부하를 시스템에 가하는 중
특정 컴포넌트의 성능이 갑자기 확 다운되는 시점에 벌어지는 일들을 확인한다.
저하 테스트에서의 키워드는 트랜잭션 지연 분포와 처리율이다.
Summary
다양한 패턴의 테스트에 대해 알아봤다.
추가로 한국에서는 실제 퍼포먼스를 측정하기 위해
nGrinder를 많이 사용하는데
굉장히 좋은 툴이니 이번 기회에 같이 알아놓는 걸 추천한다.
테스트 환경 구축
테스트환경은 가급적 모든 면에서 운영 환경과 똑같이 복제햐야 한다.
운영환경과 많이 차이 나는 성능 테스트 환경에서는 실제 환경에서 어떤일들이일어 날지 예측하기 어렵고 쓸모있는 결과를 얻지 못할 가능성이 큽니다.