성능테스트
실제 어플리케이션 및 실 환경 인프라 하에서 현실 세계의 부하량으로 모델링하여 성능을 측정하여,
적정한 용량 및 확장성, 예상 트랜잭션 수용 가능여부를 판단하기 위해 수행하는 프로세스
성능테스트의 목적
- 시스템 오픈 후 성능병목 없이 안정적인 운영 가능 여부 판단
- 고객과 합의한 성능 목표 충족 여부 판단
- 주요 성능 결함 및 아키텍처 병목 식별
- 시스템 임계치 파악을 통한 확장 대상 자원 계획 수립 지원
- 도출한 성능결함 제거 및 시스템 최적화를 통한 비용 최소화
- 사용자 관점의 품질개선 및 신뢰 제고
성능 테스트 종류
응답 시간
- 사용자가 체감하는 시스템의 성능 지표로 가장 영향력이 큰 지표
- 시스템에 Request를 요청하고 Response를 받을 동안 소요되는 시간
응답시간 구성
Client Time + Network Time + Server Processing Time으로 구성된다.
- Network Time = RTT(Round Trip Time) 요청이 갔다 오는 시간
- Server Processing Time = Queuing Time(큐에 대기하는 타임) + Process Time(서버에서 요청을 처리하고 응답하는 시간)
- 오픈 환경에서 통제가 되지 않은 N/W구간을 최대한 배제하기 위해 서버망에 부하발생기를 설치하여 수행 및 응답시간을 측정함
- 시스템 및 기타 여러 가지 원인으로 인해 순간적으로 왜곡된 10%의 응답시간을 제외한 90% 응답시간과 평균 응답시간을 가장 의미 있는 응답시간으로 인정함
예) 20번의 측정 회수 중에 90% 응답시간은 전체 중 가장느린10%를 제외한 가장 느린 응답시간, 즉 20번의 측정 회수니까 가장느린 2개의 응답시간을 빼고 3번째로 느린 응답시간이 90% 응답시간임(평균 내고 그런계산 따로 없음)
성능측정 지표
Think Time
시스템으로부터 Response를 받은 후 다음 Request를 발생시킬 때까지 간격
Request Interval
Request를 발생시키고 다음 Request를 발생시킬 때까지 간격으로
Response Time + Think Time으로 구성됨
Pacing Time
성능테스트 도구에서 Request를 발생시키는 간격시간으로 Pacing 시간 내에 이전
Transaction 이 진행중인 경우 Request 는 Skip 됨 . 안정적으로 목표 TPS 부하를 달성하기 위해
Pacing Time 을 TPS * 110% 혹은 Pacing Time * 90% 로 설정함
처리량 Throughput
단위 시간당 시스템에 의해 처리되는 업무 처리량
업무처리량은 대상 시스템 및 지표에 따라 다양하게 측정될 수 있으며 N/W 에서는 주로 bps 사용
- MIPS(Millions of Instructions Per Second), PPS(Packet Per Second), BPS(Bits Per Second),
TPMC(Transaction Per Minute type C), TPS(Transaction Per Second) 등
TPS(Transactino per Second) : 사용자의 요청 (Request)에 대한 초당 처리 건수
사용자가 시스템에 요청하여 수행하는 최소 업무처리 단위로 응답시간 측정 대상
단위시간당 트랜젝션 수행수가 대표적인 성능측정 지표이며 , 일반적으로 TPS 를 사용
Transaction 은 내부적으로 여러 개의 Request 를 발생 시킬 수 있으나 사용자가 인식하는 Action 을
기준으로 함
부하발생주체
- 사용자 : 인터넷 모바일 환경에서 불특정 다수 사용자가 시스템 접속하면서 대부분의 부하를 발생시킴
- 프로그램 : Batch 등 일괄처리 프로그램이 주로 야간에 수행되나 일부 주간에 부하를 발생시킴
- 장비 : 출입통제 단말기나 센서와 같은 장비에서 특정 이벤트가 발생시 트랜젝션을 발생시킴
사용자 구분
특정 기간을 기준으로 시스템을 사용하고 있는 상태에 따라 사용자를 구분할 수 있다.
총 사용자 (Named Users)
- 대상 시스템에 접속(PC, 모바일 등)하여 사용할 수 있는 사용자수
- 별도의 로그인을 하지 않는 대국민서비스 Web Site : 불특정 다수로 큰 의미가 없음
- 계정이나 ID기반의 패쇄형 기업시스템 : 로그인 계정 수 또는 실제 조직원 수
- License기반 시스템 : CRM, ERP 등 사용자 제한이 있는 경우 계약한 License 수
- 시스템 접근 가능한 PC수가 제한된 경우 : 접근 가능 PC 대수
동시사용자 (Concurrent USer)
- 해당 시간에 시스템을 실제로 사용 (조건입력 , 결과조회 , Request 발생) 하고 있는 사용자
- 대상 시스템에 Connection 을 지속적으로 유지하고 있는 사용자
- Web(HTTP) : Connectionless 방식으로 시스템에 로그인한 사용자 수와 불일치
- Mainframe, C/S, TP Monitor 기반 시스템 : 시스템 접속 로그인 사용자 수
부하 사용자(Active User)
- 해당 시간에 Request 를 발생시키거나 Response 를 기다리는 사용자
- 현재 시스템이 처리하고 있는 Request 의 사용자로 실제 서버에 부하를 발생시키고 있는 사용자
- 목표 TPS 를 달성하기 위해 Think Time 없이 계속 적으로 부하를 발생시키는 사용자수
부하 산정 관련 공식
Concurrent User = Active User + Inactive User
n개 업무 전체 처리량 = (1/(
a업무 비율 + ... + n업무 비율
a업무 최대처리량 n업무 최대처리량
))
품질 특성 ISO 25010
Quality Characteristics |
||
주특성 |
부특성 |
설명 |
기능성 |
기능 성숙도 Functional Completeness |
명시된 요구사항 구현 정도 |
기능 정확도 Functional Correctness |
정의된 정밀도에 따라 정확하게 결과를 제공하는 정도 |
|
기능 타당성 Functional Appropriateness |
사용자의 목적 달성에 소프트웨어가 도움을 주는 정도 |
|
효율성 |
시간 반응성 Time-behavior |
기능 수행 시 응답, 처리 시간과 처리율이 요구사항을 충족시키는 정도 |
요소 활용 Resource Utilization |
기능 수행 시, 사용되는 자원의 유형 및 양이 요구사항을 만족 시키는 정도 |
|
기억 용량 Capacity |
제품 혹은 시스템 파라미터(최근 사용자 수, 통신 대역폭, 데이터베이스가 저장할 수 있는 데이터 양 등)의 최대 한계가 요구사항을 만족시키는 정도 |
|
상호 운영성 |
공존성 Co-existence |
다른 소프트웨어에 유해한 영향을 주지 않고 환경 및 자원을 공유하면서 요구된 기능을 효과적으로 수행하는 정도 |
상호 운영성 Interoperability |
둘 혹은 그 이상의 시스템, 제품 혹은 구성요소가 정보를 교환하거나 교환된 정보를 이상 없이 사용할 수 있는 정도 |
|
사용성 |
타당성 식별력 Appropriateness recognisability |
사용자의 요구에 적절한 기능인지 식별할 수 있는 정도 |
학습성 Learnability |
사용자가 소프트웨어의 사용법을 배워 명시된 목적을 달성할 수 있는 정도 |
|
운용성 Operability |
제품 혹은 시스템이 작동 및 제어를 쉽게 할 수 있는 정도 |
|
사용자 오류 보호 User error protection |
소프트웨어가 발생한 오류로부터 사용자를 보호하는 정도 ( 버튼 비활성화, 알림 창 등) |
|
사용자 인터페이스 미학 User interface aesthetics |
사용자 인터페이스가 사용자에게 만족스러운 정도 |
|
접근성 Accessibility |
연령과 장애에 관계없이 사용될 수 있는 정도 |
|
신뢰성 |
성숙성 Maturity |
소프트웨어 구성요소가 표준적 환경에서 신뢰도 요구를 충족 시키는 정도 |
가용성 Availability |
사용자가 원하는 시간에 사용 및 접근이 가능한 정도 |
|
결점 완화 Fault tolerance |
시스템, 제품 및 구성요소가 하드웨어 혹은 소프트웨어에 결함이 존재하더라도 이를 극복하고 의도한대로 작동해야 함 |
|
회복 가능성 Recoverability |
중단 및 실패 발생 시, 제품 혹은 시스템이 데이터를 복구할 수 있는 정도 |
|
보안성 |
기밀성 Confidentiality |
제품 혹은 시스템은 반드시 권한이 있는 데이터에만 접근 가능하도록 해야 함 |
무결성 Integrity |
시스템, 제품 혹은 구성요소가 컴퓨터 프로그램 혹은 데이터에 대해 무단으로 접근 혹은 변경되는 것을 방지하는 정도 |
|
부인 방지 Non-repudiation |
사건 및 행위 후에 부인하지 못하도록 행동 및 사건에 대해 입증되는 정도 |
|
책임성 Accountability |
시스템 내의 각 개인을 유일하게 식별하여 언제 어떠한 행동을 하였는지 기록하여 필요 시 그 행위자를 추적할 수 있는 능력 |
|
진본성(인증성) Authenticity |
사건 및 행동에 대해 행위자임을 증명할 수 있는 능력 |
|
유지보수성 |
모듈성 Modularity |
최소의 영향을 가진 개별 구성요소로 구성된 정도 |
재사용성 Reusability |
자신이 하나 이상의 시스템에서 사용될 수 있고, 기타 자신을 구축하 수 있는 정도 |
|
분석성 Analyzability |
시스템 변화에 대해 어떠한 영향을 받는지 평가 할 수 있는 보고서를 제공하는 정도 |
|
수정 가능성 Modifiability |
제품 혹은 시스템이 장애 없이 효과적이고 효율적으로 수정될 수 있는 정도 |
|
시험 가능성 Testability |
제품 사용전, 사용에 필요한 검증 기능 제공 여부 |
|
이식성 |
적용성 Adaptability |
제품 혹은 시스템이 다른 하드웨어, 소프트웨어 혹은 기타 사용 환경에 효과적이고 효율적으로 적용될 수 있는 정도 |
설치성 Installability |
제품 또는 시스템이 성공적으로 설치 및 제거될 수 있는 정도 |
|
대치성 Replaceability |
제품이 동일한 환경에서 동일한 목적을 위해 다른 지정 소프트웨어 제품으로 대처될 수 있는 정도 |
'성능 테스팅' 카테고리의 다른 글
성능테스트 설계 (0) | 2020.09.20 |
---|---|
성능테스트 계획/분석 (0) | 2020.09.17 |
테스트 개요 (0) | 2020.09.17 |
로드러너 관련 (0) | 2020.08.25 |