본문 바로가기

QA

부하 테스트와 스트레스 테스트의 차이

 

보리스 바이저(Boris Beizer) faqs.org 에 올려놓은 글을 번역해 보았다.
부하 테스팅, 스트레스 테스팅과 함께 볼륨 테스팅도 가끔 혼돈되는 의미로 사용되는 데 거기에 대해서는 추후 포스팅 예정...


가장 일반적으로 사용하는 용어이면서도 잘못 사용되고 있는 예로 부하 테스팅(Load testing)”스트레스 테스팅(Stress testing)”을 들 수 있다. 우리는 종종 이 단어들을 동일한 의미로 사용하는 것을 발견할 수 있다. 이런 용어가 잘못 사용되는 것이 중요하게 다루어져야 하는 이유는, 시스템이 적절하게 부하에 대한 테스트가 수행되지도 않을뿐더러, 충분하게 스트레스 테스트도 이루어지지 못하게 할 수 있기 때문이다.

 

1.     스트레스 테스팅은 시스템이 부하를 처리하는 데 필요한 충분한 리소스(e.g. , 디스크, MIPS, 인터럽트)를 갖추지 않은 상태에서 비합리적인(Unreasonable) 부하를 가해보는 테스팅이다. 이 아이디어는 잠재적으로 손해를 끼칠 수 있는 시스템 중단 상태를 만드는 버그를 찾기 위해 임계점까지 시스템에 스트레스를 가하는 것이다. 시스템은 과부하에 대해 적합한 리소스 없이는 그것을 처리하리라고 기대되지 않지만, 적절한 방식으로 동작해야 한다(e.g. 시스템 패일). 스트레스 테스팅 하에서 발견된 버그와 장애 모드는 애플리케이션의 종류, 장애 모드, 중요함 등의 요소에 따라 수정될 수도 있고 그렇지 않을 수도 있다.

스트레스 테스팅의 부하(유입되는 트랜잭션 스트림)는 시스템을 리소스 고갈 상태로 만들기 위해 종종 고의로 왜곡된다.

 

2.     부하 테스팅시스템에 통계상 가장 일반적인 부하를 가하는 테스팅이다. 이러한 일반적인 부하를 사용하는 가장 주된 두 가지 이유는 소프트웨어의 신뢰성을 검증하고 퍼포먼스 테스팅을 수행하기 위해서이다.부하 테스팅이라는 용어를 정확하게 사용하기에는 그 자체로 너무 애매모호하고 불명확하다. 예를 들어, 당신은 과부하(Over load)”, “하이 로드(High load)”와 같은 단어를 상황에 맞게 구별해서 사용할 수 있는가? 퍼포먼스 테스팅에서, 부하는 시스템이 리소스 고갈 없이, 혹은 허용된 지연 시간 안에 처리할 수 있는 트랜잭션(애플리케이션에 따라 다름)의 최소량(Zero)에서부터 최대 수준에 이르기까지 다양하다.

 

3.     이 용어들을 사용하는 또 다른 상황은 시스템이 견뎌낼 수 있는 최대 허용치의 부하를 다루는 테스트를 수행할 때이다. 이런 경우, “부하 테스팅은 단순히 퍼포먼스 테스팅에서 가장 높은 Transaction arrival rate를 의미하기도 한다.