1. 클라이언트 성능 테스트
    1. 클라이언트 성능 테스트란?
      • 클라이언트 성능 테스트는 제품 개발이 완성되는 시점에 진행되는 기술 검증 테스트를 의미한다.
      • 애플리케이션 사용 중 FPS,CPU 사용량, GPU 사용량, 배터리 사용 전력량, 디바이스 온도, 메모리 사용량, 네트워크 사용량 등을 측정한다.
      • 측정한 데이터를 분석하여 애플리케이션 응답성, 안정성, 신뢰성, 부하 발생 병목구간을 확인하고 성능 문제점을 보고한다.
    2. 클라이언트 성능 테스트의 목적
      • 애플리케이션 자체 성능과 제품으로 인해 디바이스 성능을 위해하는 요인을 찾아 개선한다.
      • 특히 모바일 애플리케이션의 경우 디바이스 성능 저하 혹은 악영향을 끼치는 것을 원하지 않는다.
      • 동시에 사용성 측면에서 좋은 응답을 원하기 때문에 성능적인 측면을 고려해야 한다.
    3. 클라이언트 성능 테스트 벤치마크 도구
      • 성능 테스트 도구와 성능 테스트 벤치마크 도구 차이
        • 성능 테스트 도구는 애플리케이션과 시스템 성능을 평가하여 병목 현상, 확장성 문제, 안정성 등을 파악하는 데 사용된다.
        • 성능 테스트 벤치마크 도구는 하드웨어나 소프트웨어의 성능을 정략적으로 평가하여 다른 시스템 또는 이전 버전과의 비교를 목적으로 한다.
      • 성능 테스트 벤치마크 도구 목록
        • 안투투 벤치마크 : 기기의 성능을 종합적으로 테스트하는 도구로, 디바이스 성능비교에 주로 사용된다.
        • 긱벤치 : 다양한 플랫폼에서 CPU, GPU 성능을 평가하는 크로스플랫폼 벤치마크 도구이다.
        • PC마크 : PC의 종합적인 성능을 평가하는 도구로, 일상 작업 성능을 측정하고 비교한다.
        • GFX 벤치 : GPU의 그래픽 성능을 측정하는 도구로, 모바일, PC의 그래픽 처리 능력을 비교한다.
        • 게임벤치 : 게임 성능을 평가하고 분석하기 위한 도구로, 주로 모바일 게임 및 앱 성능을 측정한다.
    4. 벤치마크 도구 사용 시 유의사항.
      • 테스트할 애플리케이션만 활성화된 상태로 진행한다.
        • 타 애플리케이션도 실행중인 상태로 테스트하면, 성능 지표가 오염될 수 있다.
        • 열려있는 애플리케이션을 모두 닫고 테스트 대상만 포그라운드 상태에서 프로세스를 실행한다.
      • 성능 측정은 최소 한 시간 이상 진행한다.
        • 평균 성능 데이터 수집, 장시간 사용시 발생하는 병목구간을 찾기 위해 충분한 테스트 시간이 필요하다.
      • 제품 출시 전 개발이 어느정도 완성된 상태에서 테스트를 진행한다.
        • 애플리케이션 유지보수를 거치면서 메모리는 지속적으로 축적된다.
        • 출시 초기에 성능을 개선하지 못한다면, 성능 과부하가 지속적으로 발생할 수 있다.
        • 추후에 애플리케이션을 개선하면 더 많은 비용과 시간이 소모되고, 장애요인이 발생할 수 있다.
  2. 모바일 애플리케이션 성능으로 발생할 수 있는 문제점.
    1. 화면 로딩 느림 현상과 버벅거림
      • 화면 구성이 복잡하거나, 대량의 고화질이미지를 사용할 때 메모리를 과도하게 사용하면서 발생 가능하다.
      • 최근 개발되는 애플리케이션은 클라이언트 저장 데이터를 최소화하고 API서버를 통해 응답을 받아온다.
      • 이러한 구조가 대량의 고화질 이미지를 호출하고, 클라이언트에 다운로드하면서 위 현상이 발생할 수 있다.
      • 모바일 게임에서도 고화질 이미 사용으로 인한 화면 지연, 프리징 혹은 FPS 안정성이 떨어지면 동일현상이 발생할 수 있다.
    2. 발열이슈
      • 애플리케이션 강제 종료 및 프리징 현상, 프레임 드랍, 디바이스 배터리 수명 단축의 원인이 될 수 있다.
      • 트랜지스터, 전원 관리 직접 회로, 통신 프로세서, 송수신 처리 등의 원인으로 발열 이슈가 생길 수 있다.
    3. 병목 현상
      • 애플리케이션 사용 시간이 길어질수록 메모리, CPU, GPU의 병목이 발생할 수 있다.
      • 설계 단계에서 병목이 발생하지 않도록 메모리를 자체 해제하도록 설계하거나, 메모리 효율성이 높은 코드로 구성해야 한다.
      • 병목은 유저들의 사용성에 불편을 줄 수 있고, 디바이스 성능을 제한하거나 CPU에 악영향을끼치는 등의 문제를 발생할 수 있다.
    4. 한계와 해결방법
      • 품질 검증 단계 이전에 개발 설계 단계부터 성능을 고려하여 개발해야 한다.
      • 다만 모든 조직에서 성능을 고려하며 작업하는것을 당연시 할수는 없다. (경험 부족 등)
      • 품질 관리 담당자로서 문제점을 찾을 수 있는 테스트 방법을 알고 예방할 수 있도록 안내해야 한다.
  3. 테스트 범위 선정 및 수행 계획 설계
    1. 테스트 콘텐츠 선정
      • 제품의 전체 기능보다는 성능 문제를 발생시킬 것으로 예상되는 콘텐츠를 대상으로 범위를 선정한다.
      • 이커머스 애플리케이션에서 성능 문제를 발생시킬 수 있는 콘텐츠
        • 대량의 상품 목록을 호출하는 상품 조회 또는 검색 목록에서의 로딩 축적
        • 고사양 이미지와 동영상을 출력하는 상품의 상세 페이지
        • 다량의 유저 유입이 순간적으로 증가하여 트래픽이 급증할 수 있는 이벤트 페이지.
      • 모바일 게임에서 성능 문제를 발생시킬 수 있는 콘텐츠
        • 앱 설치 시 다운로드하는 대용량 데이터
        • 네트워크 및 서버 부하가 높은 실시간 대전 콘텐츠
        • 이미지 렌더링 속도에 영향을 주는 확률형 아이템 뽑기
        • 이펙트 효과가 많이 적용된 콘텐츠 등
    2. 테스트 디바이스 선별
      • 안드로이드와 iOS 를 구분하여 최저사양, 권장 사양, 최고 사양 디바이스와 운영체제 버전을 선정한다.
      • 제품의 타깃 서비스 국가가 글로벌일 때, 해당 국가의 주 사용 디바이스를 고료한다.
    3. 테스트 시나리오 준비
      • 선정된 테스트 디바이스와 운영체제별로 테스트 스위트를 구분한다.
      • 콘텐츠 플레이 진행순서로 시나리오 흐름을 만들어 콘텐츠별 측정수치를 입력하도록 설계한다.
    4. 테스트 유의 사항
      • 테스트 수행 시간
        • 각 테스트 콘텐츠별로 20분이상 애플리케이션을 사용하는 것을 권장한다.
        • 테스트 스위트의 전체 테스트 수행은 1시간 이상 진행한다.
      • 애플리케이션 기능 설정
        • 사운드 볼륨, 그래픽, 화질, 채도 등의 기능 설정을 의미한다.
        • 애플리케이션에서 기본으로 제공하는 설정 상태와 최댓값으로 설정한 상태 2가지로 테스트를 진행한다.
      • 디바이스 제공 설정
        • 화면 밝기, 사운드 볼륨, 절전모드, 블루투스 등의 기능 활성 등이 포함된다.
        • 애플리케이션 성능 측정 시, 디바이스 하드웨어 기능 연동에 의한 영향도 확인을 위해 필요하다.
      • 콘텐츠별로 녹화를 끊지 말고 전체 테스트 스위트를 이어서 기록한다.
      • 다만, 콘텐츠별 녹화된 분량을 분리하여 분석이 필요하기 때문에 해당 시간을 기록해둔다.
    5. 클라이언트 성능 품질 기준 수립 (테스트 통과 기준)
      • 측정한 데이터를 기반으로 제품 상태를 분석하고문제의 원인과 정확한 개선 요구 사항을 전달해야 한다.
      • 한 개의 테스트 스위트에서 측정한 데이터의 평균값이 일정 수준을 만족하는 지 확인한다.
      • 테스트 스위트 안의 각각 콘텐츠에 대한 측정 데이터가 일정 수준을 만족하는 지 확인한다.
  4. 테스트 시나리오 작성
    1. 테스트 시나리오 설계하기
      • 클라이언트 성능 테스트 시나리오는 체크리스트 형태로 생성하여, 디바이스별로 테스트 스위트를 구분한다.
      • 테스트 범위를 비즈니스 시나리오 또는 유저 행위 절차를 기반으로 테스트 진행 흐름 순서로 나열한다.
      • 테스트를 진행하며 각 기능 또는 콘텐츠별 측정 성능 수치를 입력하고 특이사항을 시나리오에 기록한다.
      • 일반적인 기능TC처럼 사전조건과 기대 결과가 없고, 테스트 진행 콘텐츠와 측정 데이터만 입력한다.
      • 클라이언트 성능 품질 지표 기준과 비교 분석하기 위한 자료로 사용된다.