소프트웨어 테스팅에서 스트레스 테스트란 무엇입니까?
⚡ 스마트 요약
스트레스 테스트는 애플리케이션을 정상 작동 한계 이상으로 몰아붙여 한계점을 찾아내고, 오류 발생 시 적절한 처리가 이루어지는지 확인하며, 극한 부하가 제거된 후 시스템이 깔끔하게 복구되는지 검증하는 과정입니다.
스트레스 테스트란 무엇입니까?
스트레스 테스트 스트레스 테스트는 소프트웨어 애플리케이션의 안정성과 신뢰성을 검증하는 소프트웨어 테스트 유형입니다. 스트레스 테스트의 목표는 극한의 부하 조건에서 소프트웨어의 견고성과 오류 처리 능력을 측정하고, 극한 상황에서도 소프트웨어가 다운되지 않도록 하는 것입니다. 스트레스 테스트는 의도적으로 정상 작동 범위를 벗어난 조건에서 소프트웨어를 테스트하고, 극한 조건에서의 동작을 평가합니다.
스트레스 테스트는 테스트 대상 애플리케이션(AUT)에 단시간 동안 과부하를 가하여 시스템의 내구성을 확인하는 테스트입니다. 스트레스 테스트의 가장 중요한 용도는 시스템, 소프트웨어 또는 하드웨어가 한계에 도달했을 때 어떻게 작동하는지, 그리고 한계를 넘어섰을 때 효과적인 오류 처리 능력을 보여주는지 확인하는 것입니다.
In 소프트웨어 공학스트레스 테스트는 종종 다음과 같은 항목들과 함께 언급됩니다. 내구성 테스트하지만 두 테스트는 차이가 있습니다. 스트레스 테스트는 짧은 시간 동안 비정상적으로 높은 하중을 가하여 파괴점을 찾는 반면, 내구(장시간) 테스트는 적당한 하중을 몇 시간 동안 유지하여 점진적인 성능 저하를 확인합니다.
아래 스크린샷은 웹 페이지에서 대량의 데이터를 복사하는 모습을 보여줍니다.
테스트 대상 애플리케이션은 웹사이트에서 5GB의 데이터를 복사하여 메모장에 붙여넣을 때 부하가 걸립니다. 이때 메모장은 부하가 걸린 상태로 다음 스크린샷과 같이 "응답 없음" 오류 메시지를 표시합니다.
동일한 원리가 서버 측 시스템에도 그대로 적용됩니다.
스트레스 테스트의 필요성
다음은 스트레스 테스트의 활용이 명확하게 드러나는 실시간 사례입니다.
- 축제 기간 동안 온라인 상점ping 해당 사이트는 트래픽이 급증하거나 세일을 발표할 때 트래픽이 폭증할 수 있습니다.
- 블로그가 주요 신문에 언급되면 트래픽이 갑자기 급증합니다.
이러한 비정상적인 트래픽 급증에 대비하기 위해 스트레스 테스트를 실시하는 것이 필수적입니다. 갑작스러운 트래픽 증가에 제대로 대응하지 못하면 수익 손실과 기업 이미지 실추로 이어질 수 있습니다.
스트레스 테스트는 다음과 같은 이유로 매우 유용합니다.
- 이 검사는 시스템이 비정상적인 상황에서도 제대로 작동하는지 확인합니다.
- 이는 시스템이 과부하 상태에 있을 때 적절한 오류 메시지가 표시됨을 확인시켜 줍니다.
- 극한 상황에서의 시스템 오류는 막대한 매출 손실을 초래할 수 있습니다.
- 극한 상황에 대비하기 위해서는 사전에 스트레스 테스트를 실시하는 것이 좋습니다.
다음 섹션에서는 성공적인 스트레스 테스트가 입증해야 할 사항을 설명합니다.
스트레스 테스트의 목표
스트레스 테스트의 목표는 시스템 장애 발생 후 시스템의 동작을 분석하는 것입니다. 스트레스 테스트가 성공적으로 수행되려면 시스템은 극한 상황에서도 적절한 오류 메시지를 표시해야 합니다.
스트레스 테스트를 수행할 때 방대한 데이터 세트가 사용되는 경우가 있는데, 시스템 오류 발생 시 해당 데이터가 손실될 수 있습니다. 따라서 테스터는 스트레스 테스트 중에 이러한 보안 관련 데이터가 손실되지 않도록 해야 합니다.
스트레스 테스트의 주요 목적은 시스템이 장애 발생 후 복구되는지, 즉 복구 가능성이라는 속성을 확인하는 것입니다. 복구 테스트 그런 다음 복원 절차를 자세히 검증합니다.
부하 시험 vs 스트레스 시험
두 기술 모두 다음 범주에 속합니다. 성능 시험 가족 구성원이 많아서 혼동하기 쉽습니다. 아래 그림은 두 가지 부하 프로파일을 비교합니다.
| 부하 테스트 | 스트레스 테스트 |
|---|---|
| 부하 테스트 정상적인 작업 부하 조건에서 시스템 동작을 테스트합니다. 실제 예상되는 작업 부하를 시뮬레이션합니다. | 스트레스 테스트는 시스템이 극한 조건에서 어떻게 작동하는지 테스트하는 것으로, 시스템이 고장날 때까지 수행됩니다. |
| 부하 테스트는 시스템을 망가뜨리지 않습니다. | 스트레스 테스트는 시스템에 과도한 데이터를 전송하거나 자원을 고갈시켜 시스템을 의도적으로 고장 내려고 시도하는 테스트입니다. |
관련 프로필은 다음과 같습니다. 스파이크 테스트 (갑작스럽고 짧은 폭발) 볼륨 테스트 (많은 사용자보다는 방대한 데이터) 확장성 테스트 (성장 여력).
스트레스 테스트의 유형
다음은 스트레스 테스트의 유형을 하나씩 설명한 것입니다.
분산 스트레스 테스트
분산 클라이언트-서버 시스템에서 테스트는 서버에서 모든 클라이언트에 걸쳐 수행됩니다. 스트레스 서버의 역할은 스트레스 테스트 세트를 모든 클라이언트에 배포하고, 모든 클라이언트가 테스트를 실행하도록 하는 것입니다. trac각 클라이언트의 상태를 기록합니다. 클라이언트가 서버에 접속하면 서버는 클라이언트 이름을 추가하고 테스트를 위한 데이터 전송을 시작합니다. 아래 그림은 스트레스 테스트 서버가 일부 클라이언트에는 도달하지만 다른 클라이언트에는 도달하지 못하는 상황을 보여줍니다.
한편, 클라이언트 기기는 서버와의 연결이 유지되고 있음을 확인하는 신호(하트비트)를 서버로 전송합니다. 서버가 클라이언트 기기로부터 아무런 신호를 수신하지 못하면 해당 기기에 대한 추가적인 디버깅이 필요합니다. 그림에서 서버는 두 클라이언트(클라이언트1과 클라이언트2)와는 연결할 수 있지만, 클라이언트3과 클라이언트4로부터는 신호를 주고받을 수 없습니다.
이러한 스트레스 테스트 시나리오에는 야간 실행이 최적의 선택입니다. 대규모 서버 팜에서는 스트레스 테스트 중 오류가 발생한 컴퓨터를 효율적으로 파악하고 조사하는 방법이 필요합니다.
애플리케이션 스트레스 테스트
이 테스트는 단일 애플리케이션에서 데이터 잠금 및 차단, 네트워크 문제, 성능 병목 현상과 관련된 결함을 찾는 데 중점을 둡니다.
거래 스트레스 테스트
스트레스 테스트는 두 개 이상의 애플리케이션 간의 하나 이상의 트랜잭션에 대해 수행됩니다. 시스템을 미세 조정하고 최적화하는 데 사용됩니다.
전신 스트레스 테스트
이는 동일한 서버를 공유하는 여러 시스템에서 실행할 수 있는 통합 스트레스 테스트입니다. 한 애플리케이션이 다른 애플리케이션의 데이터 전송을 차단하는 결함을 찾는 데 사용됩니다.
탐색적 스트레스 테스트
이는 실제 시나리오에서 발생할 가능성이 낮은 비정상적인 매개변수나 조건으로 시스템을 테스트하는 데 사용되는 스트레스 테스트 유형입니다. 다음과 같은 예상치 못한 상황에서 결함을 찾아내는 데 사용됩니다.
- 많은 사용자가 동시에 로그인했습니다.
- 모든 컴퓨터에서 바이러스 검사기가 동시에 실행됩니다.
- 웹사이트에서 접속 중인 데이터베이스가 오프라인 상태가 되었습니다.
- 대량의 데이터가 데이터베이스에 동시에 입력되고 있습니다.
어떤 변형이 적용되든 실행 순서는 동일하게 유지됩니다.
스트레스 테스트를 수행하는 방법은 무엇입니까?
스트레스 테스트 프로세스는 크게 5단계로 진행됩니다.
- 1단계) 스트레스 테스트 계획: 여기서는 시스템 데이터를 수집하고, 시스템을 분석하고, 스트레스 테스트 목표를 정의합니다.
- 2단계) 자동화 스크립트 생성: 이 단계에서는 스트레스 테스트 자동화 스크립트를 작성하고 스트레스 시나리오에 필요한 테스트 데이터를 생성합니다.
- 3단계) 스크립트 실행: 이 단계에서는 스트레스 테스트 자동화 스크립트를 실행하고 스트레스 결과를 저장합니다.
- 4단계) 결과 분석: 이 단계에서는 스트레스 테스트 결과를 분석하고 병목 현상을 파악합니다.
- 5단계) 미세 조정 및 최적화: 이 단계에서는 원하는 벤치마크를 충족하기 위해 시스템을 미세 조정하고, 구성을 변경하고, 코드를 최적화합니다.
마지막으로, 수정 사항이 원하는 결과를 가져왔는지 확인하기 위해 전체 과정을 다시 실행합니다. 예를 들어, 성능 목표를 달성하기 전에 스트레스 테스트 프로세스를 3~4회 반복해야 하는 경우가 흔하므로 스크립트는 일반적으로 유지 관리됩니다. 되돌아옴 모음곡.
스트레스 테스트에 권장되는 도구
아래 네 가지 도구는 기업용 제품군부터 무료 오픈 소스 옵션까지 대부분의 요구 사항을 충족합니다.
LoadRunner
LoadRunner 널리 사용되는 부하 시험 도구이며, 현재 다음에서 판매됩니다. OpenText HP에서 Micro Focus로 이직한 후 Professional, Enterprise 및 Cloud 에디션에서 사용 가능합니다. OpenTextLoadRunner에서 생성된 부하 테스트 결과는 벤치마크로 간주됩니다.
JMeter
Apache JMeter 오픈소스 테스트 도구입니다. 순수한 오픈소스 도구입니다. Java 스트레스 및 성능 테스트용 애플리케이션으로, 부하, 기능 및 스트레스 테스트와 같은 다양한 테스트 유형을 지원합니다. 현재 5.6.x 릴리스 버전에서 사용 가능합니다. Apache JMeter 필요 Java 8 이상, 그리고 Java 17개 추천.
스트레스 테스터
이 도구는 웹 애플리케이션 성능에 대한 광범위한 분석을 제공하고, 결과를 그래프 형식으로 표시하며, 사용이 간편합니다. 고급 스크립팅이 필요하지 않아 투자 대비 효과가 높습니다.trac소규모 팀에 적합합니다.
Neo하중
Neo하중, 이제 Tricentis 포트폴리오는 웹 테스트에 널리 사용되는 도구입니다. 모바일 애플리케이션이 도구는 수천 명의 사용자를 시뮬레이션하여 부하 상태에서의 애플리케이션 성능을 평가하고 응답 시간을 분석할 수 있습니다. 또한 클라우드 통합 성능, 부하 및 스트레스 테스트를 지원하며 확장성이 뛰어납니다.
더 많은 옵션은 가이드에 나와 있습니다. 성능 테스트 도구어느 쪽을 선택하든, 그 결과는 아래 지표에 대한 상대적인 의미만을 가질 뿐입니다.
스트레스 테스트 측정항목
메트릭은 시스템 성능을 평가하는 데 도움이 되며 일반적으로 스트레스 테스트가 끝난 후 분석됩니다. 일반적으로 사용되는 메트릭은 세 가지 범주로 분류됩니다.
확장성 및 성능 측정
- 초당 페이지 수: 초당 요청된 페이지 수를 측정합니다.
- 처리량 : 기본 측정 지표 - 초당 응답 데이터 크기.
- 라운드 : 테스트 시나리오가 계획된 횟수와 고객이 실제로 실행한 횟수의 비율.
애플리케이션 응답
- 타격 시간: 이미지 또는 페이지를 불러오는 데 걸리는 평균 시간.
- 첫 번째 바이트까지의 시간: 첫 번째 데이터 또는 정보 바이트를 반환하는 데 걸린 시간.
- 페이지 시간: 페이지의 모든 정보를 불러오는 데 걸린 시간.
실패
- 연결 실패: 클라이언트가 거부한 연결 실패 횟수(신호 약화).
- 실패한 라운드: 실패한 라운드 수.
- 검색 실패: 시스템에서 발생한 접속 실패 횟수(깨진 링크 또는 표시되지 않은 이미지).
마지막 부분에는 스트레스 테스트를 실시해야 하는 가장 흔한 상황들이 나열되어 있습니다.
스트레스 테스트의 예시
스트레스 테스트는 평소 트래픽 수준을 훨씬 뛰어넘는 트래픽 증가가 예상되는 모든 상황에서 그 역할을 다합니다.
- 축제 세일을 알리는 전자상거래 웹사이트.
- 주요 사건 발생 시점의 뉴스 웹사이트.
- 교육청이 시험 결과를 발표합니다.
- 소셜 네트워킹 사이트, 블로그, 모바일 앱은 바이럴 현상 발생 시 활발하게 사용됩니다.
각 경우에 테스트는 메모리, 프로세서, 네트워크와 같은 리소스를 모니터링하고, 부하 상황에서 적절한 오류 메시지가 표시되는지 확인하며, 시스템이 정상으로 복귀하는지 확인합니다. 이는 다음 범주에 속합니다. 소프트웨어 테스팅 수명주기 비기능적 검사와 함께 시스템 테스트 그리고 더 넓은 범위의 소프트웨어 테스트 유형.

.png)
.png)

