본문 바로가기

3. Performance

성능 QA 요약

1. 성능 테스트란?

서비스 및 서비스 시스템의 성능을 확인하기 위해서 실제 사용 환경과 비슷한 환경에서 테스트를 진행하는 것을 말한다.
이를 통해서 "응답시간", "처리량", "병목구간", "서버 리소스(CPU, Memory, DISK)" 측정해서 문제점을 확인하고 튜닝하는 것

2. 테스트 종류 

Load Test : 부하를 순차적으로 증가시키면서 응답시간이 급격히 증가시켜서 더는 처리량이
증가하지 않거나 CPU 와 메모리등의 리소스의 임계값을 찾아서 튜닝 포인트를 찾는 테스트

Stress Test : 임계값 이상의 요청이나 비정상적인 요청을 보내 비정상적인 상황의 처리 상태를 확인하고 시스템의 최고 성능 한계를 측정
화기 위한 테스트

Spike Test : 값자기 사용자가 몰렸을때를 정상적으로 처리되는지 확인하고 부하가 줄었을때 정상적으로 반응하는지를 확인하기 위한 테스트

Stability /Soak Test :  긴 시간 동안 테스트를 진행해서 테스트 시간에 따른 시스템의 메모리 증가, 성능 정보의 변화 등을 확인하는 테스트.

3. 성능 테스트 프로세스 

단계

프로세스

내용

1

요구사항 분석

- 테스트 목적 과 범위를 정하는 단계로, 효율적인 테스트를 위해서는 목적을 정확히 설정해야 한다.
- 구 시스템 과 신규 시스템 비교 테스트, 임계치 테스트, 장애 발생을 위한 fail-over 테스트
- 범위가 정해지면 해당 시스템의 소프트웨어적인 구조와 하드웨어적인 구조를 분석한다. 

2

테스트 계획

- 언제, 누가, 어떤 방법으로 , 어디서 테스트할 것인진 정하는 단계
- 테스트 필요한 인력 과 역할을 정한다. 

3

테스트 환경 구축

- 최대한 테스트 타켓 장비 와 가까이에 구축 한다. 요즘은 클라우드 환경의 테스트 팜을 구성하는 경우가
많다.
- 테스트 환경을 구축할 때 가장 중요한 것은 부하발생기와 테스트 대상 서버 사이의 네트워크가
최단 구간 안에 존재하게 하는 것이다. 중간에 많은 보안 장비 와 스위치/라우터등을 거치면 예상하지 못한
결과가 발생 한다. 

4

테스트 설계

- 테스트 케이스 와 필요한 데이터 셋을 준비 한다.
- 실제 환경 과 비슷한 수준의 많은 데이터를 준비할수록 결과가 좀 더 실제 값과 비슷해진다. 

5

테스트 수행 과결과 수집

- Pre-Test : 쓰레드를 1개로 하고 기능 테스트를 한다. Main 테스트를 하면 많은 사람들이 투입되기 때문에
사전에 준비가 매우 중요함

- Main Test : 실제 쓰레드를 증가하면서 테스트를 진행하며 CPU/OS/DISK 정보등
모니터링 정보를 수집 한다. 

6

테스트 분석

- 테스트 결과 자료와 시스템 성능 자료를 모아서 테스트 결과를 분석하고, 문제점을 발견 한다.

7

문제점 수정 및 재테스트

- 테스트 결과를 개발팀 과 운영팀에 전달하여 문제점을 수정하고 다시 한 번 테스트를 한다.

8

결과 리포트 작성

- 테스트 리포트는 테스트 목적에 따라 해당 목적을 가장 잘 표현할 수 있는 방식으로 작성하는 것이 좋다.
요약 리포트 와 상세 리포트를 분리해서 상세 결과를 필요로 하는 부서와 요약 결과만을 필요로 하는
부서에 별도로 리포트를 제출하는 것은 좋은 방법이다. 

4. 테스트 인력 구성 

테스트 인력

역할

Test Leader

- 전체적인 테스트 계획, 목적수립, 시나리오 작성, 일정 관리와 인력 배치를 담당한다.

Test Scripter(Designer)

- 정의된 테스트 목적 및 범위에 따라 작성된 시나리오로 사이트를 분석하고 이를 바탕으로 상세 케이스를 작성한다.

Test Operation

- 작성된 테스트 스크립트를 이용해서 실제 테스트를 수행한다.

Development Team

- 테스트에 필요한 데이터를 준비하고 애플리케이션을 모니터링하며 발견은 문제점과 개선점을 찾아낸다.

System Engineer

- 테스트 환경을 구축하고 시스템(OS, 네트워크, 스토리지)를 모니터링 하여 발견된 문제점과 개선점을 찾아낸다.

 5. 주요 용어 와 개념 

용어

개념

Active User

실제 서버에 연결된 상태로 요청을 처리 중인 사용자를 말한다.

InActive User

웹 브라우저에 결과 화면이 출력된 상태에서 화면의 내용을 읽거나 정보를 입력하고 있는 사용자
서버와의 세션을 갖고 있지만 요청을 주고받는 상태가 아닌 사용자 

Concurrent User(Active User + InActive User)

보통 '동시 접속 사용자수'라고 표현한다. 일반적으로 사용자 수의 많고 적음을 표현하는 값으로
성능 테스트에서 가상 사용자 수를 결정하는 기준이 된다.
서비스 유형 과 시간에 따라 그 비율이 달라지긴 하지만 일반적으로 Active User:InActive User
는 1:10 정도. 

Vitural User

가상 사용자 수로, Jmeter에서는 Thread수로 표현하기도 한다.

Ramp-Up Period

Thread 생성에 걸리는 시간을 의미한다. Ramp=Up Period 동안 차례대로 Thread를 생성한다.

Thoughput

단위 시간당 대상 서버에서 처리되는 요청의 수를 말한다. 보통 TPS라고 한다.

Response Time/Load Time

응답시간 또는 처리시간이라고 표현한다. 요청을 보낸 후 응답이 완료되어 사용자 화면에 출력될 때까지의 시간을 나타낸다.

Latency

요청을 보낸 후 데이터를 받기 시작할 때까지 시간

Think Time

하나의 요청에 응답을 수신하고 다음 요청을 보낼 때까지 시간을 의미한다.

Request Interval Time

요청을 보낸 후 다음 요청을 보낼 때까지 시간을 의미 한다. 비교적으로 Load Time >= Latency

6. Test Process

Step

진행절차

1

QA는 부하 테스트 환경 정보를 개발팀에서 제공을 받는다

2

QA는 터미널에서 부하 테스트 스크립트를 작성한다.

3

QA는 개발팀에 전체 시스템 모니터링을 요청 한다.

4

QA는 부하 테스트 결과 와 시스템 모니터링 정보를 취합해서 리포팅 한다.