코딩과 결혼합니다

[Game_Crew] 성능 테스트 : Mockaroo 를 사용하여 더미데이터 생성하기 본문

코딩과 매일매일♥/Game_Crew

[Game_Crew] 성능 테스트 : Mockaroo 를 사용하여 더미데이터 생성하기

코딩러버 2023. 12. 22. 02:20
728x90

📌더미 데이터 생성하기에 앞서...

주로 사용되는 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 데이터가 성공적으로 추가되었다.