0Pricing
Load Testing & Performance Benchmarking (JMeter & k6) · 课时

检查、阈值与指标

了解 k6 检查如何验证响应,以及如何使用阈值定义性能目标

检查、阈值与指标 是 CoddyKit 上的免费 Load Testing & Performance Benchmarking (JMeter & k6) 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Load Testing & Performance Benchmarking (JMeter & k6) 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Load Testing & Performance Benchmarking (JMeter & k6) 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Validate Test Responses

When performance testing, simply sending requests isn't enough. We need to confirm that the server is responding correctly, not just quickly.

This is where checks come in. Checks allow you to validate the content and status of server responses.

Simple k6 Checks

A basic check in k6 confirms a condition about the response. If the condition is false, the check fails, but the test continues.

Here's how to check if an HTTP response status is 200 (OK):

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

export default function () {
  const res = http.get('https://test.k6.io');
  check(res, {
    'status is 200': (r) => r.status === 200,
  });
  console.log(`Status: ${res.status}`);
}

Validate Response Content

You can also check for specific text or data within the response body. This is crucial for ensuring the server provides the expected information.

Let's check if the response body contains a specific string:

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

export default function () {
  const res = http.get('https://test.k6.io');
  check(res, {
    'body contains "k6.io"': (r) => r.body.includes('k6.io'),
  });
  console.log(`Body includes 'k6.io': ${res.body.includes('k6.io')}`);
}

Combine Multiple Checks

It's common to validate several aspects of a single response. You can add multiple conditions within one check() call.

Each condition is a separate check, and k6 will report on each one individually.

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

export default function () {
  const res = http.get('https://test.k6.io');
  check(res, {
    'status is 200': (r) => r.status === 200,
    'body size is > 0': (r) => r.body.length > 0,
    'header Content-Type exists': (r) => r.headers['Content-Type'] !== undefined,
  });
}

Understanding k6 Metrics

k6 automatically collects various performance metrics during a test run. These metrics provide insights into your system's behavior under load.

Metrics include things like response times, data transferred, and the number of virtual users (VUs).

  • Metrics are quantitative measures of performance.
  • k6 aggregates these into summaries at the end of a test.
  • They help identify bottlenecks and performance trends.

Common Built-in Metrics

k6 provides several built-in metrics that are always collected. Some key ones include:

  • http_req_duration: Total time for HTTP requests.
  • http_req_failed: Rate of failed HTTP requests (e.g., non-2xx status).
  • vus: Current number of active virtual users.
  • iterations: Number of times the default function has run.
import http from 'k6/http';

export default function () {
  http.get('https://test.k6.io');
  // k6 automatically collects metrics like http_req_duration
  // and http_req_failed for this request.
}

Create Custom Metrics

Beyond built-in metrics, you can define your own custom metrics to track specific application logic or business processes.

k6 offers various custom metric types like Counter, Gauge, Trend, and Rate.

import http from 'k6/http';
import { Trend } from 'k6/metrics';

const myCustomTrend = new Trend('my_custom_processing_time');

export default function () {
  const start = Date.now();
  const res = http.get('https://test.k6.io');
  const end = Date.now();
  myCustomTrend.add(end - start); // Add value to custom trend metric
  console.log(`Request took ${end - start}ms`);
}

Set Performance Goals

While checks validate individual responses, thresholds define performance goals for your entire test run, based on aggregated metrics.

If a threshold is breached, the k6 test run will fail, indicating a performance regression or unmet SLA (Service Level Agreement).

Add Thresholds to Your Test

Thresholds are defined in the options object of your k6 script. You specify a metric and a condition it must meet.

Here, we ensure the average response time is below 200ms and less than 1% of requests fail.

import http from 'k6/http';

export const options = {
  thresholds: {
    'http_req_duration{expected_response:true}': ['p(95)<200'], // 95th percentile response time < 200ms
    'http_req_failed': ['rate<0.01'], // less than 1% of requests failed
  },
};

export default function () {
  http.get('https://test.k6.io');
}

Quick Check: k6 Concepts

Which of the following statements about k6 checks and thresholds are TRUE?

Recap: Checks, Thresholds, Metrics

Great job! You've learned how to make your k6 tests more robust and goal-oriented.

  • Checks validate individual server responses for correctness.
  • Metrics are quantitative measurements collected during a test run (e.g., response time, error rate).
  • Thresholds define performance goals based on aggregated metrics, failing the test if conditions aren't met.

常见问题解答

「检查、阈值与指标」课时是免费的吗?

是的 — 「检查、阈值与指标」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Load Testing & Performance Benchmarking (JMeter & k6) 课程的其余内容,请升级到 CoddyKit PRO。 Load Testing & Performance Benchmarking (JMeter & k6) 课程共包含 4 节课。

「检查、阈值与指标」这节课中我会学到什么?

了解 k6 检查如何验证响应,以及如何使用阈值定义性能目标 你通过在浏览器中直接运行的动手代码来练习 Load Testing & Performance Benchmarking (JMeter & k6),全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Load Testing & Performance Benchmarking (JMeter & k6) 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Load Testing & Performance Benchmarking (JMeter & k6) 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「检查、阈值与指标」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Load Testing & Performance Benchmarking (JMeter & k6) 课中编写并运行代码吗?

能。每节 Load Testing & Performance Benchmarking (JMeter & k6) 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 安装 k6 与使用 CLI
  2. 编写基础 k6 脚本
  3. 检查、阈值与指标
  4. 使用组和标签组织测试
← 返回 Load Testing & Performance Benchmarking (JMeter & k6)