Giới thiệu về K6 – Performance Testing

Tram Ho

Performance Testing là gì?

Đã có khi nào bạn muốn xem chất lượng, độ chịu tải của sản phẩm của bạn mà bạn không biết cách làm thế nào không? Hay là bạn có 1 API hay 1 tính năng nào đó khi bạn request bằng Postman thì vẫn tốt còn khi đưa vào hoạt động thì lại lỗi liên tục hay là load rất lâu khiến trải nghiệm người dùng không tốt không?

Vậy nên hãy cùng mình tìm hiểu về Performance Testing và công cụ để thực hiện nó nhé.

Performance Testing là kỹ thuật kiểm thử nhằm xác định băng thông, khả năng xử lý, khả năng mở rộng hay nói chung là hiệu năng của hệ thống dưới khối lượng truy cập, khối được công việc xác định. Kết quả của kiểm thử hiệu năng phục vụ việc điều tra, đo lường, đánh giá hiệu năng thực của hệ thống. Có các loại thông dụng như là:

Cùng với đó thì cũng có nhiều công cụ hỗ trợ như là Jmeter, Grinder, Artillery, LoadComplete,… Nhưng tại đây thì chúng mình cùng tìm hiểu về K6 nhé.

Cài đặt K6?

K6 có hỗ trợ các gói dành cho các hệ điều hành Linux, Mac và Windows. Ngoài ra, bạn có thể sử dụng Docker nhé.

Linux

Debian/Ubuntu

Fedora/CentOS

Sử dụng dnf hoặc yum trên các phiên bản cũ hơn

Mac

Sử dụng Homebrew

Windows

Ở đây mình sử dụng Chocolatey package manager nhé, bạn có thể cài đặt theo cách sau:

Docker

Để kiểm tra thành công hay chưa hãy chạy command:

Performance Testing với K6

Với k6 thì bạn cần phải biết 2 khái niệm là Virtual Users – VUs ( bạn có thể cài đặt số lượng người dùng ảo truy cập đồng thời trên sản phẩm của bạn) và Duration – 1 chuỗi quy định khoảng thời gian quá trình kiểm thử diễn ra.

Để tạo và Run 1 bài Test trên K6 khá là đơn giản do K6 sử dụng Javascript để chạy test nên khá là quen thuộc đối với chúng ta.
1 file js đơn giản dùng trong kiểm thử với k6 sẽ trông như thế này:

Hoặc bạn có thể thêm nhiều VUs và Duration như sau:

Hoặc bạn có thể tăng giảm số lượng VUs trong quá trình Test:

Bây giờ chúng ta hãy tạo file test.js bằng Config trên và chạy bằng command này để xem kết quả nhé (Ở đây mình dùng docker nhé):

Và đây là kết quả End of test:

Kết quả đã có và chúng ta hãy cùng phân tích xem các metrics trong End of test có gì nhé:

Mỗi thông số về http_req đều có các chỉ số là avg, min, max, med, p(90), p(95).

  • Check (check) là tỷ lệ check thành công.
  • Response time (http_req_duration) là tổng thời gian cho request. Nó bằng với http_req_sending + http_req_waiting + http_req_receiving.
  • Request rate (http_reqs) là tổng số yêu cầu HTTP k6 được tạo.
  • Failed request (http_req_failed) là tỷ lệ yêu cầu không thành công theo setResponseCallback.
  • Connecting (http_req_connecting) là thời gian thiết lập kết nối TCP với máy chủ.
  • TLS handshaking (http_req_tls_handshaking) là thời gian bắt tay phiên TLS với máy chủ.
  • Data sent (data_sent) là số lượng dữ liệu được gửi. Theo dõi dữ liệu cho một URL riêng lẻ để theo dõi dữ liệu cho một URL riêng lẻ.
  • Data received (data_received) là số lượng dữ liệu đã nhận.
  • Receiving (http_req_receiving) là thời gian nhận dữ liệu phản hồi từ máy chủ.
  • Sending (http_req_sending) là thời gian gửi dữ liệu phản hồi từ máy chủ.
  • Block (http_req_blocked) thời gian bị chặn (chờ kết nối TCP miễn phí) trước khi bắt đầu request.
  • Waiting (http_req_waiting) là thời gian chờ phản hồi từ máy chủ.
  • Iteration duration (iteration_duration) là thời gian cần thiết để hoàn thành một lần lặp lại đầy đủ, bao gồm cả thời gian dành cho khởi tạo và hủy.
  • Iteration (iterations) là tổng số lần VUs thực thi default function.
  • VUs (vus) là số lượng active users.
  • VUs max (vus_max) là số lượng VU tối đa.

Nếu các bạn không muốn tự tay code file Config bằng Javascript như trên thì các bạn cũng có thể sử dụng cloud K6 để Test nhé, rất là tiện đó. Các bạn click vào đây để trải nhiệm nhé. (Lưu ý là bản Free nên sẽ bị giới hạn khác nhiều nhưng có còn hơn không đúng không các bạn :v)

Tổng kết:

Vậy là mình đã giới thiệu cơ bản cho các bạn về Performance Testing và cách sử dụng K6. Mong là sẽ giúp đỡ được mọi người 1 phần nào đó trong quá trình tìm hiểu về Performance Testing.
Ở phần sau mình sẽ tiếp tục chia sẻ sâu hơn về K6 nhé.

Tài liệu tham khảo: https://k6.io/

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo