ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 비기능 테스트
    테스팅 관련/테스트 2021. 4. 11. 11:49

     

     

    성능 테스트

    시스템에 부하를 주면서 성능을 측정하는 테스트

    성능 지표 = 초당 처리량 TPS(Throughput per Second), 응답 시간 (Response Time)

    TPS = 초당 몇 건의 요청을 처리하느냐, 응답 시간 = 요청당 응답 시간

     

    부하 테스트

    가상 사용자 수를 늘려가면서 부하의 양을 점차 늘림 → TPS와 응답 시간의 변화 추이 측정 & 임계 성능 측정

    부하량을 계속 늘리다 보면, TPS가 더는 증가하지 않고 일정 수준을 유지하게 됨 → (이때의) 부하량 (=가상 사용자 수)은 처리 가능 용량으로 볼 수 있으며, TPS = 최대 성능

    응답 시간이 중요한 시스템은 목표 응답 시간을 기준으로 성능의 임계점을 결정

    부하량이 늘어나면 응답 시간은 x^2 형식으로 증가

    임계 성능 = 응답 시간이 목표 응답 시간 이상으로 올라가는 시점 → (이때의) TPS = 최대 성능

     

    CPU와 메모리 자원을 모두 사용하여 성능치를 구한다

    시스템 허용 용량 = 일반적으로 CPU는 70~80% 사용할 때 (시스템에 대한 하드웨어를 증설하는 시기)

    대용량 분산 시스템 (클라우드 컴퓨팅 사용) = 임계 성능 개념 X, 서버를 증설할 수록 선형적으로 성능이 비례하여 증가, 하드웨어 자원 무한적으로 늘릴 수 있음, TPS가 부하량에 따라 선형적으로 증가, 응답 시간은 부하량이 늘어나더라도 일정하게 유지, 성능의 임계치 측정 불가, 테스트 목적: 부하량 증가에 따른 TPS 증가치 측정

     

    장애 테스트

    시스템에 장애가 났을 때 이에 대한 감지와 장애 복구 능력을 검증하는 테스트

    장애가 발생할 수 있는 곳에 부하를 주는 중에 강제적으로 장애를 일으켜서 문제없이 잘 처리되는지를 체크

    • 미들웨어 장애 테스트: 서버 소프트웨어를 기동하기 위한 미들웨어 (예. DBMS, 웹서버, 웹 애플리케이션 서버 등)이 장애가 났을 때에 대한 장애 대응능력 검증, 미들웨어 자체의 크러스터링 기능에 의해서 처리되는 경우가 많음
    • 하드웨어 장애 테스트: 하드웨어에 장애가 발생했을 때의 대처 능력 검증, 해당 하드웨어의 전원을 강제적으로 내림으로써 인위적으로 장애 발생
    • 네트워크 장애 테스트: 각 서버 간의 네트워크 연결 장애에 대한 대응 능력 검증, 네트워크 선을 스위치나 서버에서 강제적으로 뽑아서 장애 발생시킨 후 테스트 수행
    • 장애에 대한 대처: 하드웨어나 소프트웨어에 대한 클러스터링이나 이중화 구성을 통해 이루어짐

     

    페일 오버 = 장애가 났을 때, 장애가 나지 않은 나머지 시스템으로 요청을 전달하여 처리하는 것

    페일 백 = 장애가 복구되었을 때, 테스트 수행 (= 장애 복구 테스트)

    장애 복구 테스트는 장애 테스트와 역순으로 진행

     

    안정성 테스트

    시스템이 오랫동안 운영이 되도라도 문제가 없는지 검증

    부하를 수일(3~7일) 동안 지속적으로 주면서 시스템이 문제없이 서비스 되는지 체크

    메모리 누수, 인프라 자원 효율적 반납하지 못 할 때 → 장애 발생

    짧은 기간에 많은 양의 부하를 주고, 하드웨어 자원의 사용 그래프를 분석 → 잠재적 문제 예측 가능

    메모리 누수 = 코드 상에서 메모리를 요청한 후 반납하지 않아서 사용 가능한 메모리 용량이 줄어드는 현상, 메모리를 자동으로 관리해주는 자바의 경우에도 발생할 수 있음

     

    확장성 테스트

    시스템을 증설함에 따라 용량이 선형적으로 증가하는지 확인

    수직적 확장성 = 서버의 수는 유지한 채 CPU나 메모리 용량 등을 증설 (ex. 가상 머신에 할당되는 CPU 코어 수와 메모리 늘려서 테스트 수행)

    수평적 확장성 = 서버의 대수를 늘려서 용량을 증설 (서버의 대수가 증가한다고 해서 용량이 증가될 수 있는 것 X, 시스템 자체가 서버 증설에 대해서 확장할 수 있는 아키텍처로 설계되어 있어야 함)

    용량 증가에 따라 TPS가 선형적으로 증가하는지 확인

     

    단일 거래 테스트

    하나의 기능에 대해서 테스트 수행

    단일 시나리오에 대해서만 테스트를 진행하기 때문에 비기능적 결함에 대한 발견이 쉬움

     

    복합 거래 테스트

    여러 개의 단일 거래를 실 운영 상황에 맞춰서 가중치를 줘서 부하를 주는 테스트

    여러 시나리오를 동시에 테스트하기 때문에 개별 시나리오의 상호 간섭을 검증, 실 운영 환경에 가까운 테스트 결과를 얻을 수 있음, 복합 거래로 측정된 성능치 = 운영 환경에서의 성능과 용량

    각 단일 거래에 주는 가중치는 실 업무 패턴을 중심으로 작성 (ex. 웹 로그 분석)

     

     

     

    시스템 테스트는 성능 테스트를 기본으로 이루어 진다

    부하를 넣은 상태에서 장애를 테스트 하고,

    시스템을 확장해가면서 확장 테스트를 수행하며,

    부하 상황을 지속시킴으로써 안성정을 테스트한다

     

    성능 테스트를 얼마나 잘 만드느냐 = 나머지 테스트를 성공적으로 수행할 수 있게 해주는 중요한 테스트

     

     

     

    출처: 지식 제로부터 배우는 소프트웨어 테스트 (ISBN 9791195484508)

Designed by Tistory.