0Pricing
NestJS Enterprise Backend APIs · レッスン

APIのパフォーマンステスト

NestJS APIのパフォーマンステストに使えるツールと戦略を学び、ボトルネックを特定してスケーラビリティを確保します。

「APIのパフォーマンステスト」はCoddyKit上の無料NestJS Enterprise Backend APIsレッスンです。 これはレッスン3/6です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはNestJS Enterprise Backend APIs学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 NestJS Enterprise Backend APIsコースには全6レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Why Performance Matters

Ever used a slow app? Performance testing helps prevent that! It's about checking how your API behaves under various workloads.

We want to ensure our NestJS APIs are fast, responsive, and reliable, even when many users access them simultaneously. This is crucial for a good user experience and system stability.

Measuring API Health

When performance testing, we look at specific metrics:

  • Latency: The time taken for a request to complete. Lower is better!
  • Throughput: The number of requests processed per second. Higher is better!
  • Error Rate: The percentage of failed requests. Aim for zero.
  • Resource Utilization: How much CPU/Memory your server uses.

These metrics help us understand our API's strengths and weaknesses.

Different Test Scenarios

There are different ways to test performance:

  • Load Testing: Simulates expected peak usage to ensure the API handles it.
  • Stress Testing: Pushes the API beyond its limits to find its breaking point.
  • Spike Testing: Simulates sudden, large increases in load over a short period.
  • Soak Testing: Runs a moderate load over a long duration to detect memory leaks or degradation.

Our Tool: k6 for APIs

For performance testing APIs, several tools exist. We'll use k6, an open-source load testing tool.

k6 is great because you write your tests in JavaScript, making them highly flexible and easy to version control. It's designed for developers and DevOps teams.

It simulates virtual users (VUs) making requests to your API and collects detailed metrics.

Anatomy of a k6 Test

A k6 test script is a JavaScript file. It defines what actions virtual users will perform. The default function is where your virtual users' actions are defined. Each virtual user will execute this function repeatedly.

import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  http.get('http://localhost:3000/api/users');
  sleep(1); // Wait for 1 second
}

Configuring Test Scenarios

To make our k6 test useful, we need to define how many virtual users (VUs) we want to simulate and for how long. This is done using the options object.

vus sets the number of concurrent virtual users, and duration sets the total test time. This lets us simulate different load patterns.

import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  vus: 10, // 10 virtual users
  duration: '30s', // for 30 seconds
};

export default function () {
  http.get('http://localhost:3000/api/products');
  sleep(1);
}

Testing Various API Actions

APIs aren't just about GET requests. We often need to test POST, PUT, and DELETE operations too. k6 provides functions for these.

When sending data, remember to include a request body. It's crucial to simulate realistic user interactions, like creating a new user or updating a product.

import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  vus: 5,
  duration: '10s',
};

export default function () {
  // Simulate creating a user
  const payload = JSON.stringify({
    name: 'Test User',
    email: 'test@example.com',
  });
  const params = {
    headers: {
      'Content-Type': 'application/json',
    },
  };
  http.post('http://localhost:3000/api/users', payload, params);
  sleep(0.5);
}

Validating API Responses

It's not enough for an API to respond; it must respond correctly. k6 allows you to add assertions to your tests using check().

This ensures that the API returns the expected status code (e.g., 200 OK, 201 Created) or even specific data in the response body. This verifies functionality under load.

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  vus: 2,
  duration: '5s',
};

export default function () {
  const res = http.get('http://localhost:3000/api/status');
  check(res, {
    'is status 200': (r) => r.status === 200,
    'body contains "OK"': (r) => r.body.includes('OK'),
  });
  sleep(0.1);
}

Understanding Test Outcomes

After running a k6 test, you'll see a summary of metrics like average response time, throughput, and error rate. Look for:

  • High Error Rates: Indicates broken functionality under load.
  • Increasing Latency: API getting slower as load increases.
  • Low Throughput: API not processing enough requests.

These are clues to where bottlenecks might exist in your NestJS application or database.

Test Your Knowledge

Let's quickly review some core concepts.

Performance Testing Summary

Great job! You've learned the basics of performance testing for NestJS APIs.

  • We covered key metrics like latency and throughput.
  • Explored different test types: load, stress, spike, and soak.
  • Introduced k6 as a powerful, code-based testing tool.
  • Understood how to create basic k6 scripts, define scenarios, and interpret results.

Performance testing is vital for building scalable and reliable applications. Keep practicing to ensure your APIs can handle the heat!

よくある質問

「APIのパフォーマンステスト」レッスンは無料ですか?

はい。「APIのパフォーマンステスト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、NestJS Enterprise Backend APIsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 NestJS Enterprise Backend APIsコースには全6レッスンが含まれています。

「APIのパフォーマンステスト」で何を学びますか?

NestJS APIのパフォーマンステストに使えるツールと戦略を学び、ボトルネックを特定してスケーラビリティを確保します。 ブラウザで直接実行するハンズオンコードでNestJS Enterprise Backend APIsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

NestJS Enterprise Backend APIsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのNestJS Enterprise Backend APIsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/6です。

「APIのパフォーマンステスト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このNestJS Enterprise Backend APIsレッスンでコードを書いて実行できますか?

はい。すべてのNestJS Enterprise Backend APIsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ユニットテストとE2Eテスト
  2. HardhatとTruffleフレームワーク
  3. APIのパフォーマンステスト
  4. スマートコントラクトのユニットテスト
  5. Docker化とKubernetes
  6. テストネットとメインネットへのデプロイ
← NestJS Enterprise Backend APIsに戻る