Skip to content

Commit

Permalink
[백엔드] 부하테스트
Browse files Browse the repository at this point in the history
[백엔드] 부하테스트
  • Loading branch information
shinseongsu authored Dec 5, 2023
2 parents eb8cad1 + d7a2fa1 commit ac20126
Show file tree
Hide file tree
Showing 2 changed files with 183 additions and 0 deletions.
86 changes: 86 additions & 0 deletions k6/smoke.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import http from "k6/http";
import { check, group, sleep, fail } from "k6";

export let options = {
vus: 1, // 1 user looping for 1 minute
duration: "10s",

thresholds: {
http_req_duration: ["p(99)<1500"], // 99% of requests must complete below 1.5s
},
};

const BASE_URL = "https://investing.n-e.kr";
const USERNAME = "[email protected]";
const PASSWORD = "1234";

export default function () {
//메인 페이지 주식 조회
mainPage();

//로그인
let token = login();

// 주식 조회
searchStock();

// 주식 구매
purchase(token);

sleep(1);
}

function mainPage() {
let mainRes = http.get(`${BASE_URL}/stocks`);
check(mainRes, {
"go mainPage successfully": (resp) => resp.status == 200,
});
}

function login() {
let payload = JSON.stringify({
userId: `${USERNAME}`,
password: `${PASSWORD}`,
});

let params = {
headers: {
"Content-Type": "application/json",
},
};

let loginRes = http.post(`${BASE_URL}/users/login`, payload, params);

check(loginRes, {
"logged in successfully": (resp) => resp.json("accessToken") !== "",
});

return loginRes.json("accessToken");
}

function searchStock() {
let changeInfoRes = http.get(`${BASE_URL}/stocks/10001`);
check(changeInfoRes, {
"search Stock successfully": (response) => response.status === 200,
});
}

function purchase(accessToken) {
let payload = JSON.stringify({
stockId: "10001",
stockOfAmount: "9430",
stockCount: "1",
});

let params = {
headers: {
"Content-Type": "application/json",
accessToken: accessToken,
},
};

let pathRes = http.post(`${BASE_URL}/stocks/purchases`, payload, params);
check(pathRes, {
"stock purchases successfully": (resp) => resp.status == 200,
});
}
97 changes: 97 additions & 0 deletions k6/stress.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
import http from "k6/http";
import { check, sleep } from "k6";

// 평균 rps - 550 , 최대 rps - 1000
export let options = {
stages: [
{ duration: "1m", target: 100 },
{ duration: "1m", target: 200 },
{ duration: "1m", target: 300 },
{ duration: "1m", target: 400 },
{ duration: "1m", target: 500 },
{ duration: "1m", target: 600 },
{ duration: "1m", target: 700 },
{ duration: "1m", target: 800 },
{ duration: "1m", target: 900 },
{ duration: "1m", target: 1000 }
],

thresholds: {
http_req_duration: ["p(99)<1500"], // 99% of requests must complete below 1.5s
},
};

const BASE_URL = "https://investing.n-e.kr";
const USERNAME = "[email protected]";
const PASSWORD = "1234";

export default function () {
//메인 페이지 주식 조회
mainPage();

//로그인
let token = login();

// 주식 조회
searchStock();

// 주식 구매
purchase(token);

sleep(1);
}

function mainPage() {
let mainRes = http.get(`${BASE_URL}/stocks`);
check(mainRes, {
"go mainPage successfully": (resp) => resp.status == 200,
});
}

function login() {
let payload = JSON.stringify({
userId: `${USERNAME}`,
password: `${PASSWORD}`,
});

let params = {
headers: {
"Content-Type": "application/json",
},
};

let loginRes = http.post(`${BASE_URL}/users/login`, payload, params);

check(loginRes, {
"logged in successfully": (resp) => resp.json("accessToken") !== "",
});

return loginRes.json("accessToken");
}

function searchStock() {
let changeInfoRes = http.get(`${BASE_URL}/stocks/10001`);
check(changeInfoRes, {
"search Stock successfully": (response) => response.status === 200,
});
}

function purchase(accessToken) {
let payload = JSON.stringify({
stockId: "10001",
stockOfAmount: "9430",
stockCount: "1",
});

let params = {
headers: {
"Content-Type": "application/json",
accessToken: accessToken,
},
};

let pathRes = http.post(`${BASE_URL}/stocks/purchases`, payload, params);
check(pathRes, {
"stock purchases successfully": (resp) => resp.status == 200,
});
}

0 comments on commit ac20126

Please sign in to comment.