TIL | [부하테스트] 가상 유저 정보 생성하기

bubblegum·2024년 4월 12일
0

Today I learn(TIL)

목록 보기
66/84
post-thumbnail

토큰 인증이 필요한 api를 테스트하기 위해서는 가상의 유저 정보를 생성하여 토큰을 전달해줄 필요가 있다.

1. 가상 사용자 정보와 토큰 생성

먼저, 가상의 사용자 정보와 토큰을 생성할 JavaScript 함수를 만듭니다. 이 함수들은 Artillery의 processor를 통해 테스트 스크립트에서 사용될 수 있습니다.

generateData.js 파일에 다음과 같은 함수를 구현할 수 있습니다.

// 가상의 사용자 정보를 생성하는 함수
function generateUserData() {
    const user = {
        id: `user_${Math.floor(Math.random() * 10000)}`,
        username: `user${Math.floor(Math.random() * 10000)}`,
        password: `password${Math.floor(Math.random() * 100)}`,
    };
    return user;
}

// 가상의 토큰을 생성하는 함수
function generateToken() {
    // 간단한 예시로, 실제 토큰 생성 로직은 프로젝트의 요구사항에 따라 달라질 수 있습니다.
    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let token = '';
    for (let i = 0; i < 20; i++) {
        token += chars.charAt(Math.floor(Math.random() * chars.length));
    }
    return token;
}

module.exports = {
    generateUserData,
    generateToken,
};

2. Artillery 테스트 스크립트에 적용

generateData.js 파일에서 정의한 함수들을 Artillery 테스트 스크립트에서 사용하기 위해, processor를 사용하여 해당 파일을 테스트 스크립트에 연결합니다.

testScript.yml 테스트 스크립트 예시:

config:
  target: 'http://example.com/api'
  processor: "./generateData.js" # 함수가 정의된 파일 연결
  phases:
    - duration: 60
      arrivalRate: 10
variables:
  # 사용자 데이터와 토큰을 변수로 저장
  userData: "{{ generateUserData() }}"
  token: "{{ generateToken() }}"
scenarios:
  - flow:
    - post:
        url: "/login"
        json:
          username: "{{ userData.username }}"
          password: "{{ userData.password }}"
        capture:
          json: "$.token"
          as: "loginToken"
    - get:
        url: "/protected/resource"
        headers:
          Authorization: "Bearer {{ loginToken }}"

이 예시에서는 generateUserData 함수를 사용하여 가상의 사용자 정보를 생성하고, generateToken 함수를 사용하여 가상의 토큰을 생성합니다. 생성된 사용자 정보는 로그인 요청에 사용되며, 로그인 후 반환된 토큰은 보호된 리소스에 대한 요청에 사용됩니다.

이 방법을 통해 실제와 유사한 데이터를 사용하여 인증이 필요한 API의 부하 테스트를 보다 현실적으로 시뮬레이션 할 수 있습니다.

이런 자료를 참고했어요.
[1] Firebase - 커스텀 토큰 만들기 - Authentication - Firebase (https://firebase.google.com/docs/auth/admin/create-custom-tokens?hl=ko)
[2] Google Cloud - 서비스 계정에 단기 사용자 인증 정보 만들기 | IAM 문서 (https://cloud.google.com/iam/docs/create-short-lived-credentials-direct?hl=ko)
[3] Google Cloud - 단기 서비스 계정 사용자 인증 정보 만들기 | IAM 문서 (https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials?hl=ko)
[4] kakaocorp.com - REST API | Kakao Developers 문서 - 카카오 (https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api)

뤼튼 사용하러 가기 > https://agent.wrtn.ai/5xb91l

profile
황세민

0개의 댓글

관련 채용 정보