소프트웨어 테스팅에서 내구성 테스트란 무엇입니까? (예제 포함)

⚡ 스마트 요약

내구성 테스트는 애플리케이션을 정상적인 예상 부하 상태에서 장시간 실행하여 시간이 지남에 따라 성능이 저하되는지 여부를 확인하는 테스트입니다. 이 테스트는 1시간 부하 테스트로는 발견할 수 없는 결함을 찾아냅니다.

  • 🕒 지속 부하: 예상되는 프로덕션 트래픽은 몇 분이 아닌 몇 시간 또는 며칠 동안 정체될 수 있습니다.
  • 📉 분해 집중 분석: 문제는 목표 달성 여부가 아니라 응답 시간이 점차 늘어나는 추세인지 여부입니다.
  • 💧 공통적인 결과: 메모리 누수, 연결 풀 고갈, 그리고 무한한 로그 또는 캐시 증가.
  • 📊 모니터링 세트: 전체 실행 과정에서 메모리 사용량, CPU 사용량, 응답 시간, 처리량 및 데이터베이스 연결 상태를 보여줍니다.
  • 🛠️ 압형: 표준 부하 측정 도구는 트래픽을 분석하고, APM 도구는 리소스 곡선을 기록합니다.
  • ⚖️ 트레이드오프: 결과는 매우 유용하지만 얻는 데 시간이 오래 걸리므로 테스트를 실행할 수 있는 빈도가 제한됩니다.

내구력 테스트란 무엇인가요?

내구성 테스트란 무엇인가?

내구성 테스트 소프트웨어를 지속적으로 사용하는 동안 소프트웨어 응용 프로그램의 동작을 평가하기 위해 상당한 시간에 걸쳐 높은 부하로 소프트웨어를 테스트하는 비기능적 유형의 소프트웨어 테스트입니다. 내구성 테스트의 주요 목적은 애플리케이션이 응답 시간을 저하시키지 않고 확장된 부하를 처리할 수 있을 만큼 충분히 능력이 있는지 확인하는 것입니다.

이러한 유형의 테스트는 성능 실행 주기의 마지막 단계에서 수행됩니다. 내구성 테스트는 긴 과정이며 때로는 최대 XNUMX년까지 지속되기도 합니다. 여기에는 인터넷 트래픽이나 사용자 작업과 같은 외부 부하 적용이 포함될 수 있습니다. 이것이 내구성 테스트와 다른 점입니다. 부하 테스트일반적으로 몇 시간 정도면 끝납니다.

내구성은 용량을 의미합니다. 즉, 내구성 테스트를 용량 테스트라고 부를 수 있습니다.

내구성 테스트의 목표

  • 내구성 테스트의 주요 목표는 메모리 누수를 확인하는 것입니다.
  • 지속적인 사용 시 시스템이 어떻게 작동하는지 확인합니다.
  • 오랜 기간이 지난 후에도 시스템 응답 시간이 테스트 시작과 동일하거나 더 좋게 유지되도록 합니다.
  • 특정 시스템이 성능 목표를 지원하고 충족할 사용자 및/또는 트랜잭션 수를 결정합니다.
  • 향후 로드를 관리하려면 향후 사용을 지원하는 데 얼마나 많은 추가 리소스(프로세서 용량, 디스크 용량, 메모리 사용량, 네트워크 대역폭 등)가 필요한지 이해해야 합니다.
  • 내구성 테스트는 일반적으로 시스템에 과부하를 주거나 특정 시스템 리소스를 줄이고 결과를 평가하는 방식으로 수행됩니다.
  • 이는 상대적으로 "정상적인" 사용 기간으로 간주되는 기간 이후에 결함이나 메모리 누수가 발생하지 않도록 하기 위해 수행됩니다.

내구성 테스트에서 모니터링해야 할 사항

내구성 테스트

지구력 테스트에서는 다음 사항을 테스트합니다.

  • 테스트 메모리 누수– 시스템이나 OS의 충돌을 일으킬 수 있는 애플리케이션에 메모리 누수가 있는지 확인하기 위해 검사가 수행됩니다.
  • 시스템 계층 간 연결 폐쇄 테스트 – 시스템 계층 간의 연결이 성공적으로 닫히지 않으면 시스템의 일부 또는 전체 모듈이 정지될 수 있습니다.
  • 테스트 데이터베이스 연결이 성공적으로 닫혔습니다.– 데이터베이스 연결이 성공적으로 닫히지 않으면 시스템 충돌이 발생할 수 있습니다.
  • 테스트 응답 시간 – 시스템을 장기간 사용하면 애플리케이션의 효율성이 떨어지므로 시스템의 응답 시간을 테스트합니다.

내구성 테스트 수행 방법

다음은 내구성 테스트에 대한 기본 테스트 접근 방식입니다.

  • 테스트 환경 – 내구성 테스트, 팀 내 역할 및 책임 할당 등에 필요한 하드웨어, 소프트웨어, 운영 체제를 식별합니다. 테스트 실행 전에 환경이 준비되어야 합니다. 또한 일반적인 데이터베이스 프로덕션 크기와 연간 성장을 추정해야 합니다. 이는 1년, 2년 또는 5년 후에 애플리케이션이 어떻게 반응할지 테스트해야 하기 때문에 필요합니다.
  • 테스트 계획, 시나리오 작성 – 테스트의 성격(수동, 자동화 또는 둘의 조합)을 기반으로 테스트 케이스 디자인, 검토, 실행을 계획해야 합니다. 시스템에 스트레스를 주는 테스트, 중단점 테스트 등도 테스트 계획의 일부가 되어야 합니다. 시스템에 스트레스를 주는 테스트는 애플리케이션의 중단점을 결정합니다.
  • 테스트 추정 - 테스트 단계를 완료하는 데 걸리는 시간을 추정해 보세요. 관련된 테스터 수와 필요한 테스트 주기 수를 기준으로 분석해야 합니다.
  • 위험도 분석 - 위험을 분석하고 예방을 위한 적절한 조치를 취합니다. 위험 요소에 따라 테스트 사례의 우선 순위를 지정하고 내구성 테스트 중에 테스터가 단계적으로 수행할 수 있는 위험 및 문제를 아래에서 식별합니다.
  • 시간이 지나도 성능이 일관되게 유지됩니까?
  • 아직 발견되지 않은 다른 사소한 문제가 있습니까?
  • 해결되지 않은 외부 간섭이 있습니까?
  • 테스트 일정 – 예산, 기간 내 결과물을 결정합니다. 처럼 내구성 테스트 지속적으로 시스템/애플리케이션에 거대하지만 자연스러운 트랜잭션 로드 배열을 적용합니다.

내구성 테스트 예시

DaVinci에는 스트레스 테스트 테스트된 시스템을 한계까지 끌어올리고, 내구성 테스트 애플리케이션을 한계까지 끌어올리다 시간이 지남에.

예를 들어, 메모리 누수, 데이터베이스 서버 사용률, 시스템 응답 없음과 같은 가장 복잡한 문제는 소프트웨어가 장시간 실행될 때 발생합니다. 내구성 테스트를 생략하면 배포 전에 이러한 결함을 발견할 가능성이 매우 낮아집니다.

내구성 테스트 도구

내구성 테스트의 장점

  • 이는 부하가 걸린 시스템이 작업 부하를 처리할 수 있는 방법을 결정하는 데 도움이 됩니다.
  • 고객이 인프라 요구 사항을 검증하거나 향상하는 데 사용할 수 있는 정확한 데이터를 제공합니다.
  • 시스템이 장기간 높은 수준에서 실행된 후 발생할 수 있는 성능 문제를 식별합니다.
  • 일반적인 문제는 소규모 대상 성능 테스트에서 식별됩니다. 즉, 매우 짧은 시간 내에 막대한 로드가 있는 경우에도 애플리케이션을 계속 사용할 수 있도록 보장합니다.
  • 내구성 테스트는 장기간 실행 후 성능 저하가 있는지 확인하는 데에도 사용됩니다.

내구성 테스트의 단점

  • 얼마나 많은 스트레스를 적용할 가치가 있는지 정의하는 것은 종종 어렵습니다.
  • 내구성 테스트는 다음과 같은 경우 심각한 중단을 초래할 수 있는 애플리케이션 및/또는 네트워크 오류를 일으킬 수 있습니다. 테스트 환경 고립되어 있지 않습니다.
  • 시스템에 과도한 스트레스를 가하면 영구적인 데이터 손실이나 손상이 발생할 수 있습니다.
  • 스트레스가 제거된 후에도 리소스 활용도는 매우 높게 유지됩니다.
  • 일부 응용 프로그램 구성 요소가 응답하지 않습니다.
  • 처리되지 않은 예외는 최종 사용자가 관찰합니다.

이 테스트가 성능 테스트 제품군에 어떻게 부합하는가

성능 테스트는 포괄적인 용어입니다. 아래에 설명된 변형들은 적용되는 하중의 형태와 유지 시간만 다를 뿐이므로 서로 혼동되는 경우가 많습니다.

테스트 유형 부하 패턴 질문에 대한 답변
부하 테스트 예상 최대 부하, 단시간 시스템이 일반적인 최대 트래픽 상황에서 목표를 달성합니까?
스트레스 테스트 용량을 초과하여 증가하다가 결국 고장이 발생합니다. 어디에서 문제가 발생하며, 깔끔하게 실패하는가?
스파이크 테스트 갑작스러운 극심한 급증 후 감소 교통량 급증에도 살아남아 회복할 수 있을까요?
내구성 테스트 정상 하중이 여러 시간 동안 유지됩니다. 시간이 지남에 따라 성능이 저하됩니까?
침수 테스트 장기간에 걸친 지속적인 부하 메모리 누수나 리소스 고갈 문제가 있습니까?
안정성 테스트 다양한 조건에서 부하 변화 시스템 환경이 변화하더라도 신뢰성은 유지됩니까?
볼륨 테스트 일반 사용자, 매우 큰 데이터 용량 데이터베이스 규모가 커짐에 따라 제대로 작동하나요?

내구성 시험과 침수 시험은 흔히 동의어로 취급됩니다. 일반적으로 두 테스트는 모두 장시간 동안 지속적인 부하를 견뎌낸다는 공통점을 가지고 있습니다. 팀에서 두 테스트를 구분하는 경우, 내구력 테스트는 응답 시간이 증가하는지 여부에 중점을 두는 반면, 부하 지속 테스트는 메모리, 파일 핸들, 연결 풀과 같은 리소스 사용량에 중점을 둡니다. 일반적으로 두 테스트 중 하나만 실행해도 두 가지 모두에 대한 증거를 얻을 수 있습니다.

테스트 중 수집해야 할 주요 지표

성능 테스트는 실행 중에 기록한 내용이 얼마나 정확한지에 따라 결과가 달라집니다. 서버 측과 클라이언트 측에서 다음 여섯 가지 항목을 캡처한 다음, 직감에 의존하기보다는 기준선과 비교하세요.

메트릭 그것이 당신에게 말하는 것 경고 표시
평균 응답 시간 일반적인 사용자 경험 실행 전반에 걸친 상승 편차
95번째 백분위수 응답 시간 가장 느린 사용자의 경험 평균을 훨씬 웃도는 수치, 즉 일관성이 부족하다는 의미입니다.
맞춤형 설비 초당 처리되는 요청 수 하중이 일정하게 유지되는 동안 낙하
오류율 실패 또는 시간 초과된 요청 비율 합의된 기준치를 초과하는 모든 상승
CPU 및 메모리 사용량 서버 리소스 여유 공간 올라가지만 결코 돌아오지 않는 기억
데이터베이스 연결 및 스레드 수영장 탈진 공개 없이 꾸준히 증가하는 수치

평균과 백분위수를 함께 읽으세요. 평균 800ms, 95번째 백분위수 900ms는 시스템이 안정적임을 나타냅니다. 하지만 동일한 평균값에서 9초라는 것은 20명 중 1명이 불편한 시간을 보내고 있으며, 평균값이 이를 숨기고 있다는 의미입니다.

값뿐만 아니라 모양도 살펴보세요. 장시간 실행되는 테스트에서 리소스 그래프가 평평하면 통과이고, 상승하면 누수로 간주됩니다. 테스트 종료 시점에 절대값이 허용 범위 내에 있더라도 마찬가지입니다.

내구성 테스트: 핵심 요점

  • In 소프트웨어 공학, 내구성 테스트는 부하 테스트의 하위 집합입니다.
  • 내구성 테스트는 긴 과정이며 때로는 최대 XNUMX년까지 지속됩니다.
  • 확인을 위해 점검이 이루어집니다.
  • 테스트 메모리 누수
  • 테스트 응답 시간
  • 데이터베이스 연결 등 테스트

자주 묻는 질문

부하 테스트는 시스템이 단시간 동안 최대 부하에서 목표를 달성하는지 검증합니다. 내구성 테스트는 정상 부하를 수 시간 동안 유지하여 테스트 종료 시점에도 목표가 여전히 유효한지 확인합니다.

응답 시간이나 리소스 사용량이 임계값을 넘지 않더라도 지속적으로 상승하는 추세라면, 이는 결함으로 간주됩니다. 결함은 바로 이러한 추세 자체에 있으며, 결국 실제 운영 환경에서 한계를 넘어서게 될 것입니다.

기능 및 부하 테스트를 통과하고, 발견된 취약점을 수정할 수 있을 만큼 충분히 일찍 테스트를 실행해야 합니다. 출시 전날 밤에 테스트를 실행하면 결과에 따라 조치를 취할 시간이 없습니다.

AI 기반 모니터링은 지표의 추세 변화 시점을 감지하고 이를 배포 또는 예약된 작업과 연관시켜 수 시간 분량의 그래프를 특정 용의자로 특정할 수 있도록 합니다.

우선순위를 정하는 데 도움이 될 수 있습니다. 위험 모델은 취약점이 있는 코드를 수정하는 릴리스를 파악하여, 전체 실행은 취약점이 발생할 가능성이 가장 높은 변경 사항에 대해서만 수행하도록 합니다.

이 게시물을 요약하면 다음과 같습니다.