지표 설명
- Users : 동시에 사용할 수 있는 유저 수
- TPS ( Test per second ) : 초당 처리되는 테스트 수
- Time : 작업 시간
DAU * 1명당 1일 평균 요청 수
-> 50,000 * 50 = 2,500,000
1일 평균 요청 수 / 86,400 ( 24시간을 초로 변환 ) = 1일 평균 RPS
-> 2,500,000 / 86,400 = 28.9
1일 평균 RPS * ( 최대 트래픽 / 평소 트래픽 ) = 1일 최대 RPS
-> 28.9 * 12 = 347.2
Throughput은 28.9 ( 1일 평균 ) ~ 347.2 ( 1일 최대 )
VUser: (목표 rps * T) / R
R: 시나리오에 포함된 요청의 수 ( 평균 20개 )
T: 시나리오 완료 시간보다 큰 값(VUser 반복을 완료하는데 필요한 시간보다 큰 값) = ( 20 * 0.5 ) + 1 = 11
평소 트래픽 VUser : ( 28.9 * 11 ) / 8 = 39.7
최대 트래픽 VUser : ( 347.2 * 11 ) / 8 = 477.4
But.. 보통 VUser 가 80 정도면 무거운 트래픽이 발생하기 때문에 보통 10 ~ 15 정도도 충분하다고 합니다.
상황 : 앱 실행 후 스토어 탐색
로그인 > 메인화면 조회 > 신규 스토어 조회 > 신규 스토어 검색 > Top 12 스토어 조회 > 식음료 조회 ( 최신순, 추천순, 인기순, 별점 높은 순 ) Pageable > 마켓 검색 페이지 > 스토어 검색 후 결과 ( 최신순, 추천순, 인기순, 별점 높은 순 )
상황 : 스토어에 상세 정보 및 리뷰, 포토 리뷰 조회
Best Top12 리뷰 조회 > 스토어 상세 페이지 진입 > 스토어 리뷰 조회 ( 최신순, 추천순, 인기순, 별점 높은 순 ) Pageable > 포토리뷰 모아보기 조회 > 포토리뷰 상세보기 진입
상황 : 앱 실행 후 주문
로그인 > 스토어 상세 페이지 진입 > 메뉴, 옵션 조회 > 메뉴, 옵션 선택 후 장바구니 담기 > 쿠폰 조회 > 쿠폰 다운로드 > 장바구니 목록 조회 > 옵션 수정 > 주문하기 > 주문 결과 페이지 조회
상황 : 앱 파트너쉽 조회 및 작성
로그인 > 파트너쉽 요청 페이지 조회 ( Pageable ) > 파트너쉽 요청 상세보기 > 파트너쉽 댓글 작성 > 파트너쉽 추천 > 파트너쉽 추천 취소
상황 : 서비스에 대한 이슈 조회
로그인 > 퀘스트 상세페이지 조회 > 마이페이지 조회 > 내 정보 변경 > 공지사항 목록 조회 Pageable > 공지사항 세부 사항 조회 > 이벤트 목록 조회 ( 모든 이벤트, 내가 참여한, 내가 미참여한 이벤트 ) Pageable > 이벤트 세부사항 조회
상황 : 리뷰 내역, 찜 관리
로그인 > 스토어 상세보기 > 스토어 찜 등록 > 찜한 목록 조회 > 찜한 목록에서 제거 > 리뷰 관리 조회 Pageable ( 리뷰 쓰기, 작성한 리뷰 조회 ) > 작성한 리뷰 중 하나 상세보기
상황 : 쿠폰 관리, 주문 내역 관리
로그인 > 쿠폰 보관함 조회 Pageable > 주문 내역 조회 Pageable > 주문 상세 내역 조회 > 주문 상세 내역 삭제
ID | 기능 | 비고 |
---|---|---|
0 | 신규 Market 12개 출력 | |
1 | 인기 Market 12개 추천 | |
2 | 인기 top 12 리뷰 조회 | |
3 | 사용자 퀘스트 조회 | - |
4 | 신규 매장 12개 조회 | |
5 | 메인화면 스토어 검색 결과 | |
6 | 검색 페이지 - History 조회 | - |
7 | 검색 페이지 - History 조회 | - |
8 | 검색 페이지 - 자동 완성 | - |
9 | 검색 페이지 - 인기 검색어 조회 | - |
ID | 기능 | 비고 |
---|---|---|
0 | 인기 top 12 리뷰 조회 | noOffset 최적화 ( 884ms -> 173ms ) |
1 | 스토어 상세 정보 가져오기 | - |
2 | 스토어 메뉴 정보 가져오기 | - |
3 | 마켓 리뷰 평균 평점 | - |
4 | 포토 리뷰 간략하게 조회 | - |
5 | 리뷰 조회 ( 최신순 ) ( Pageable ) | 커버링 인덱스로 최적화 ( 983ms -> 105ms ) |
6 | 리뷰 조회 ( 가장 인기있는 ) ( Pageable ) | 커버링 인덱스로 최적화 ( 863ms -> 97ms ) |
7 | 리뷰 조회 ( 점수 높은 순 ) ( Pageable ) | 커버링 인덱스로 최적화 ( 901ms -> 105ms ) |
8 | 리뷰 조회 ( 점수 낮은 순 ) ( Pageable ) | 커버링 인덱스로 최적화 ( 903ms -> 101ms ) |
9 | 포토 리뷰 가져오기 ( Pageable ) | - |
10 | 포토 리뷰 갯수 가져오기 | - |
11 | 포토 리뷰 상세보기 | - |
ID | 기능 | 비고 |
---|---|---|
0 | 스토어 상세 정보 가져오기 | - |
1 | 스토어 메뉴 정보 가져오기 | - |
2 | 메뉴 옵션 정보 가져오기 | - |
3 | 메뉴와 옵션 선택 후 장바구니 넣기 | - |
4 | 쿠폰 정보 가져오기 | - |
5 | 쿠폰 다운로드 | - |
6 | 장바구니 목록 조회 | - |
7 | 메뉴 옵션 변경 | - |
8 | 주문전 주문 정보 가져오기 | - |
9 | 주문하기 | - |
10 | 나의 주문내역 가져오기 ( Pageable ) | 커버링 인덱스 최적화 ( 858ms -> 126ms ) |
ID | 기능 | 비고 |
---|---|---|
0 | 파트너쉽 목록 가져오기 ( Pageable ) | 커버링 인덱스 최적화 ( 1,006ms -> 222ms ) |
1 | 파트너쉽 상세 데이터 가져오기 | - |
2 | 파트너쉽 댓글 가져오기 ( Pageable ) | noOffset 최적화 ( 718ms -> 126ms ) |
3 | 파트너쉽 추천 및 추천 취소 | - |
4 | 파트너쉽 댓글 작성 | - |
5 | 인기있는 파트너쉽 가져오기 | - |
ID | 기능 | 비고 |
---|---|---|
0 | 퀘스트 상세보기 | - |
1 | 마이페이지 정보 보기 | - |
2 | 내 정보 변경 | - |
3 | 공지사항 목록 가져오기 ( Pageable ) | 커버링 인덱스로 최적화 ( 408ms -> 49ms ) |
4 | 공지사항 상세 데이터 가져오기 | - |
5 | 이벤트 목록 가져오기 ( Pageable ) | noOffset 으로 최적화 ( 422ms -> 47ms ) |
6 | 이벤트 세부 정보 가져오기 | - |
ID | 기능 | 비고 |
---|---|---|
0 | 스토어 찜 등록, 찜 제거 | - |
1 | 스토어 찜 목록 조회 ( Pageable ) | noOffset 최적화 ( 457ms -> 34ms ) |
2 | 스토어 찜 갯수 조회 | - |
3 | 리뷰 작성 갯수 작성 가능 갯수 조회 | - |
4 | 리뷰 작성 가능 주문 조회 ( Pageable ) | 커버링 인덱스 최적화 ( 338ms -> 32ms ) |
5 | 작성한 리뷰 모아보기 조회 ( Pageable ) | 커버링 인덱스 최적화 ( 391ms -> 30ms ) |
6 | 작성한 리뷰 상세보기 | - |
ID | 기능 | 비고 |
---|---|---|
0 | 다운로드 받은 쿠폰 조회 | - |
1 | 다운로드 받은 쿠폰 갯수 조회 | - |
2 | 내 주문내역 가져오기 ( Pageable ) | 커버링 인덱스로 최적화 ( 452ms -> 98ms ) |
3 | 주문 상세 내역 가져오기 | - |
시나리오 | 평균 MTT |
---|---|
시나리오 1 | 174.8 |
시나리오 2 | 105.2 |
시나리오 3 | 206.6 |
시나리오 4 | 151.6 |
시나리오 5 | 52.14 |
시나리오 6 | 52.8 |
시나리오 7 | 100.5 |
전체 | 120.52 |
참고 1 : https://thalals.tistory.com/288
참고 2 : https://leezzangmin.tistory.com/42
참고 3 : https://velog.io/@max9106/nGrinderPinpoint-test1