自己紹介
初めまして、今年からリンクラフトでエンジニアとして働いている @t_hack です。
前職では主にフロントエンドを担当していましたが、現在はバックエンドを担当しています。
今回はLINCRAFT Advent Calendar 2025の18日目を担当させていただきます。
はじめに
案件先で初めて負荷テストツールの「K6」を触ってみたので、このアドベントカレンダーを通して簡単に紹介したいと思います。
K6は、シンプルで使いやすく、スクリプトで負荷テストのシナリオを作成できるため、開発者にも馴染みやすいツールです。
この記事では、K6のインストール~基本的な使い方と、実際に使ってみて感じた特徴について簡単に紹介していきます。
K6とは?
K6は、オープンソースの負荷テストツールで、JavaScriptでテストスクリプトを記述することができます。
シンプルで使いやすいCLI(コマンドラインインターフェース)を提供しており、テスト結果を詳細に出力してくれるので、パフォーマンスのボトルネックを発見するのに役立ちます。
特徴
- 軽量で高速: 軽量で高速なテスト実行が可能。
- シンプルなスクリプト作成: JavaScriptで記述できるので、開発者には馴染みやすい。
- 詳細な統計データ: テスト結果を詳細にグラフや数値で表示することが可能。
インストール方法
K6のインストールは非常に簡単です。以下の手順でインストールできます。
Homebrew(macOSの場合)
brew install k6
Windowsの場合
Windowsでは、K6は公式のインストーラまたはchoco(Chocolatey)パッケージマネージャを使ってインストールできます。
公式インストーラを使用する場合
- K6の公式サイトからWindows用インストーラをダウンロードします。
- ダウンロードしたインストーラを実行し、インストールします。
Chocolateyを使用する場合
Chocolateyがインストールされていない場合は、まずChocolateyのインストール
を行ってください。
インストール後、次のコマンドでK6をインストールできます:
choco install k6
インストールが完了したら、k6コマンドが使えるようになります。
基本的な使い方
K6の基本的な負荷テストの流れは次の通りです。
1. テストスクリプトを作成
JavaScriptでテストシナリオを記述します。例えば、シンプルなHTTPリクエストをテストする場合は、以下のようなスクリプトになります。
import http from 'k6/http';
import { check } from 'k6';
export default function() {
const res = http.get('https://example.com');
check(res, {
'is status 200': (r) => r.status === 200,
});
}
2.負荷テストの実行
スクリプトを作成したら、次のコマンドでテストを実行します。
k6 run test_script.js
複数のシナリオ
複数のシナリオを並行して実行したい場合、scenariosを使うことで、負荷を異なるパターンでかけることができます。例えば、以下のように記述できます。
export let options = {
scenarios: {
load_test: {
executor: 'constant-vus',
vus: 50,
duration: '30s',
},
spike_test: {
executor: 'ramping-vus',
startVUs: 10,
stages: [
{ duration: '10s', target: 50 },
{ duration: '10s', target: 100 },
{ duration: '10s', target: 200 },
],
},
},
};
この設定では、2つの異なるシナリオを並行して実行できます。
結果の確認
テスト結果は、コマンドラインにリアルタイムで表示されます。以下のような情報を確認できます:
- リクエスト数: テスト中に送信されたリクエストの数
- 成功率: リクエストが成功した割合
- レスポンスタイム: 各リクエストの平均レスポンスタイム
また、K6は後述するオプションを使用することで詳細な統計データやグラフを生成する機能も提供しているので、さらに深い分析が可能です。
よく使われるオプション
K6にはさまざまなオプションがあります。ここでは、負荷テストを実行する際に便利なオプションをいくつか紹介します。
ユーザー数(VUs)と実行時間
負荷テストを行う際、重要なのはシナリオにどれだけの負荷をかけるかです。K6では、仮想ユーザー数(VUs)とテストの実行時間を指定できます。
k6 run --vus 100 --duration 30s test_script.js
-
--vus 100: 100人の仮想ユーザーでテストを実行 -
--duration 30s: 30秒間テストを実行
このオプションで、負荷の規模や実行時間を調整できます。
出力形式の変更
K6のテスト結果は、デフォルトではコマンドラインに出力されますが、結果をCSVファイルやJSONファイルとして保存することもできます。
k6 run --out csv=result.csv test_script.js
HTML形式でレポートを出力
テスト結果を視覚的に確認したい場合、K6ではHTML形式でレポートを出力することができます。これにより、テスト後にブラウザで結果を簡単に確認でき、より直感的にテスト結果を把握できるようになります。
k6 run --out html=report.html test_script.js
まとめ
しっかりと負荷テストツールを使用すること自体も今回が初めての経験だったのですが、K6は、JavaScriptでスクリプトが書けるため、開発者にとって使いやすく、初めてでも簡単に負荷テストが実施できるツールでした。
また、詳細なテスト結果を提供してくれるため、パフォーマンス改善に役立ちます。
さいごに
リンクラフトでは、一緒に働く仲間を募集中です!
リンクラフト株式会社では、組織拡大に伴い積極的な採用活動を行っています。
少しでも興味がある方はぜひご連絡ください。
▽会社ホームページ
https://lincraft.co.jp/
▽Instagram
https://www.instagram.com/lincraft.inc/
▽ご応募はこちらより
https://lincraft.co.jp/recruit
※カジュアル面談も受付中です。ご希望の方はHPのお問い合わせフォームよりご連絡ください。