From 4ced6ad3c3678f4bc72b5ae9fc0a500fdeb7860c Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 14 Oct 2025 09:50:47 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=84=B1=EB=8A=A5=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 예약 시나리오 테스트에서는 VU 1000 -> 1500 증가 - 일정 생성 테스트에서는 전체 일정 생성 보장을 위한 duration 증가 --- test-scripts/create-reservation-scripts.js | 22 +++++++++------------- test-scripts/create-schedule-scripts.js | 4 ++-- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/test-scripts/create-reservation-scripts.js b/test-scripts/create-reservation-scripts.js index 4f33b6c1..590e17c8 100644 --- a/test-scripts/create-reservation-scripts.js +++ b/test-scripts/create-reservation-scripts.js @@ -17,16 +17,10 @@ export const options = { executor: 'ramping-vus', startVUs: 0, stages: [ - { duration: '1m', target: 100 }, - { duration: '1m', target: 200 }, - { duration: '1m', target: 300 }, - { duration: '1m', target: 300 }, - { duration: '1m', target: 400 }, - { duration: '1m', target: 500 }, - { duration: '2m', target: 500 }, - { duration: '1m', target: 600 }, - { duration: '1m', target: 800 }, - { duration: '1m', target: 1000 }, + { duration: '3m', target: 500 }, + { duration: '2m', target: 1000 }, + { duration: '2m', target: 1500 }, + { duration: '3m', target: 1500 }, { duration: '3m', target: 0 }, ] } @@ -84,13 +78,13 @@ export default function (data) { const user = randomItem(users) const accessToken = login(user.account, user.password, 'USER').accessToken - const storeId = randomItem(stores).storeId + let storeId = randomItem(stores).storeId if (!accessToken) { console.log(`로그인 실패: token=${accessToken}`) return } - const targetDate = randomDayBetween(1, 4) + let targetDate let availableScheduleId, selectedThemeId, selectedThemeInfo, reservationId, totalAmount @@ -99,6 +93,8 @@ export default function (data) { let schedules while (searchTrial < 5) { + storeId = randomItem(stores).storeId + targetDate = randomDayBetween(1, 7) const res = http.get(`${BASE_URL}/stores/${storeId}/schedules?date=${targetDate}`) const result = check(res, {'일정 조회 성공': (r) => r.status === 200}) if (result !== true) { @@ -145,7 +141,7 @@ export default function (data) { let isScheduleHeld = false group(`일정 Holding 및 테마 정보 조회 -> 예약 과정중 첫 페이지의 작업 완료`, function () { const holdRes = http.post(`${BASE_URL}/schedules/${availableScheduleId}/hold`, null, getHeaders(accessToken)) - const body = JSON.parse(holdRes) + const body = JSON.parse(holdRes.body) if (check(holdRes, {'일정 점유 성공': (r) => r.status === 200})) { const themeInfoRes = http.get(`${BASE_URL}/themes/${selectedThemeId}`) diff --git a/test-scripts/create-schedule-scripts.js b/test-scripts/create-schedule-scripts.js index 9d533cf3..35eb6a39 100644 --- a/test-scripts/create-schedule-scripts.js +++ b/test-scripts/create-schedule-scripts.js @@ -13,7 +13,7 @@ export const options = { executor: 'shared-iterations', vus: 263, iterations: TOTAL_ITERATIONS, - maxDuration: '10m', + maxDuration: '30m', }, }, thresholds: { @@ -113,7 +113,7 @@ function createSchedule(storeId, accessToken, schedule) { function generateDates(days) { const dates = []; const today = new Date(); - for (let i = 1; i < days; i++) { + for (let i = 1; i <= days; i++) { const date = new Date(today); date.setDate(today.getDate() + i); dates.push(date.toISOString().split('T')[0]);