k6とは
公式サイトによるとk6は、
負荷テストを行う上でベストな開発者体験の提供を目指しているソフトウェアです。
The best developer
experience for load testing
JavaScriptを使って負荷テストのコードを書く事ができます。
コードで負荷テストを記述できるので、バージョン管理がやりやすいです。
Go言語で開発されているオープンソースのソフトウェアで、ライセンスはAGPL-3.0です。
GraphQLやWebScoketやgRPCにも対応しています。
インストール方法は簡単で、macOSであれば、brew install k6
でインストールすることができます。
他のOSでも簡単にインストールすることが可能です。
詳しくは、こちらをご覧ください。
最小のサンプルコード
最も簡単なサンプルのコードはこちらです。
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('https://test.k6.io');
sleep(1);
}
次のコマンドで実行することができます。
$ k6 run script.js
仮想のユーザを作って実行する場合は、次のようにオプションを設定して実行することで、ユーザ数を増やすことができます。
$ k6 run --vus 10 --duration 30s script.js
--vus で、仮想ユーザ数の指定
--durationで、継続時間を指定
POSTリクエストを送りたい場合
POSTリクエストを送りたい場合は、下記のように記述することで送れます。
リクエストBody(payload)をJSON形式で送りたい場合は、JSON形式に変換して送る必要があります。
また、headerにContent-Typeを指定する必要があります。
export default function () {
//loginして、jwtを取得する
const url = 'ログイン先URL'
let payload = JSON.stringify({
user: {
email: 'user@example.com',
password: 'password',
},
})
const params = {
headers: {
'Content-Type': 'application/json',
},
}
const res = http.post(url, payload, params)
check(res, {
'status is 200': (r) => r.status === 200,
})
const JWTToken = JSON.parse(res.body).data.attributes.token
}
JWTなどの認証情報が必要な場合
JWTなどの認証情報を使いたい場合は、paramsに渡すことで利用することが可能です。
export default function () {
const url = 'JWT認証が必要なURL'
const JWTToken = '取得したJWTTocken'
const params = {
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${JWTToken}`,
},
}
let res = http.get(`${url}`, params)
check(res, {
'status is 200': (r) => r.status === 200,
})
}
最後に
少し癖がありますが、便利なのでぜひ使ってみてください。
より詳しく知りたい方は、公式ドキュメントをご覧ください!
公式ドキュメントは、わかりやすい英語で書かれており、スイスイ読むことができます。