일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- java set 저장
- java최솟값구하기
- java 자료구조 활용
- java list 출력
- 격파르타합격후기
- java list 저장
- java참조자료형
- java map 저장
- 인터프린터언어
- 비전공자sqld
- 프로그래머스
- 코딩부트캠프후기
- 작은수제거하기
- 노베이스부트캠프
- javaJVM
- java set 출력
- 항해99후기
- 프로그래머스제일작은수
- java map
- java기본자료형
- 격파르타비전공자
- 격파르타후기
- java알고리즘
- javaJRE
- sqld자격증합격
- 격파르타장점
- 항해15기
- 컴파일
- java알고리즘문제풀이
- java map 출력
- Today
- Total
코딩과 결혼합니다
[Game_Crew] 성능 테스트 : Mockaroo 를 사용하여 더미데이터 생성하기 본문
📌더미 데이터 생성하기에 앞서...
주로 사용되는 api에 대한 성능 테스트를 진행할 것이기 때문에 관련 테이블에만 더미 데이터를 생성해주고자 한다.
1. 함께 게임을 할 사람을 구하는 게시글 등록 API
2. 게임을 하고 난 후에 상대방을 평가하는 API
3. 최근의 10개의 평가를 합산하여 평균을 낸 뒤에 총 평점 테이블에 저장하는 API
4. 상대 사용자의 프로필을 조회 API
이 API가 주로 사용될 것이라 판단이 되며 더미 데이터를 생성해 줄 테이블은 post, record_of_ratings, user 등이다.
특히 record_of_ratings(평가받은 내역)에 많은 데이터를 추가할 것이다.
📌Mockaroo 사용법 익히기
컬럼명, 데이터 타입, 빈 데이터의 빈도율, 랜덤으로 나올 데이터에 직접 공식을 넣을 수도 있다.
또한 새 컬럼 추가와 자동 생성할 데이터 ROW 수 설정, 데이터 형식(포맷)을 정한다.
AI를 사용하여 필드를 생성하는 것도 있지만 쓰지 않을 것이다.
타입은 굉장히 다양하다. 여기에서 필요한 것들을 찾아서 쓰면 될 것 같다.
Formula는 데이터 공식을 추가하는 것으로 그 예시에는 랜덤으로 만들어지는 데이터에 1을 더하거나, 데이터를 모두 대문자로 변경하는 등의 공식이 있다.
📌더미 데이터 생성해 보기
우선 user테이블의 데이터를 생성해 준다. 그런데 문제가 생겼다.
나는 [2023-11-22 12:08:47.876575] 이런 형태로 데이터를 저장해야 하는데 여기서는 type이 Datetime밖에 없어서 년, 월, 일만 생성해 줄 수 있다.
Type을 Formula로 바꾼 뒤에 직접 스크립트를 작성하여 데이터 생성하기
strftime(now(), %Y-%m-%d %H:%M:%S) + "." + random(100000, 999999):
현재 시간을 원하는 형태로 변환해 주고 random(100000, 999999)는 100000에서 999999 사이의 랜덤 한 숫자를 생성한다. 이를 밀리초로 사용할 수 있다. 두 결과를 연결하여 [YYYY-MM-DD HH:MM:SS.SSSSSS] 형태의 결과를 생성한다.
더하여 나는 2023년 11월 23일 ~ 2023년 12월 21의 사이의 날짜와 시간을 랜덤 생성하고 싶기 때문에 아래와 같이 조건을 더 추가해 주었다. t1과 t2는 각각 시작 시간과 종료 시간을 나타낸다.
t1 = Time.parse("2023-11-23 00:00:00")
t2 = Time.parse("2023-12-21 23:59:59")
t = rand(t1..t2)
t.strftime("%Y-%m-%d %H:%M:%S") + "." + random(100000, 999999).to_s
생성 시간과 변경된 시간은 처음에 저장될 때 같은 값으로 저장이 되는데 랜덤으로 생성하는 거라 이를 맞춰주기는 어려울 것 같아서 각각 빈 데이터 빈도율을 0%와 99%로 해두고 나중에 DB에서 직접 복붙하는 식으로 해결하려 한다. 변경된 시간이 생성시간보다 이전이면 안되니까... 빈 데이터 빈도율 100%는 불가하다!
Time.parse / strftime 메서드를 지원하지 않음
SQL로 데이터를 받았다. 미리 몇 개만 확인해 볼걸.. 생성 시간, 수정 시간이 모두 null 값으로 나온다.
그래서 아쉬운 대로 Datetime을 사용한다.
또한 user_id의 경우 6부터 1000까지 1씩 더한 숫자가 저장되어야 하는데 랜덤의 숫자가 저장되게 해버렸다.
Number 타입의 경우 순서대로 숫자가 생성되지 않아서 Sequence 타입을 사용하였다. 이 방법은 1000 이상의 숫자를 생성할 수 없다는 단점이 있지만 나는 딱 1000명 정도의 user를 생성할 것이기 때문에 이를 사용하였다.
10개의 데이터를 미리 뽑아서 확인해 보았다. 내가 원하는 형태로 나와서 이제 다시 필요한 수만큼 데이터를 뽑아본다.
무슨 충돌이 난 건지는 모르겠지만 이렇게 986명의 user 데이터가 성공적으로 추가되었다.
'코딩과 매일매일♥ > Game_Crew' 카테고리의 다른 글
[Game_Crew] 성능 테스트 : 툴 선정하기, 설치 (0) | 2023.12.28 |
---|---|
[Game_Crew] 성능 테스트 : Java Faker 를 사용하여 더미데이터 생성하기 (0) | 2023.12.27 |
[Game_Crew] 성능 테스트 : 데이터를 늘리는 방법? (0) | 2023.12.22 |
[Game_Crew] 리팩토링 : 유저 평점 기능 (0) | 2023.11.20 |
[Game_Crew] 리팩토링 : Post 상세조회 리팩토링 (0) | 2023.11.14 |