Kiểm thử hiệu năng là gì?
Như ta đã biết, thường thì một website được viết ra do lập trình viên sẽ được chạy trên một môi trường không có tải, thường thì chỉ có một nhóm người hoạt động trên đó để đảm bảo các công việc testing, coding … Vì vậy, khi website được đưa ra go live, khách hàng sử dụng thật, thường phát sinh ra nhiều vấn đề. Đó là do website chưa được kiểm thử hiệu năng trước khi đưa ra ngoài sử dụng thực tế. Vì vậy, kiểm thử hiệu năng là điều vô cùng cần thiết trong quá trình go live, nhất là đối với những website có đông người sử dụng, có lượng truy cập cao.
Theo wikipedia:
Kiểm thử hiệu năng thường được chạy để xác định một hệ thống hay hệ thống con thực hiện như thế nào về độ nhạy và tính ổn định theo một khối lượng công việc cụ thể. Nó cũng có thể dùng để điều tra, đánh giá, xác nhận hoặc xác minh các thuộc tính chất lượng khác của hệ thống, chẳng hạn như khả năng mở rộng, độ tin cậy và sử dụng tài nguyên.
Các đặc tính và flow của kiểm thử hiệu năng
- Tốc độ : Nó xác định ứng dụng phản hồi có nhanh không
- Khả năng scale: Xác định số người dùng tối đa mà phần mềm có thể đáp ứng
- Tính ổn định: xác định ứng dụng có hoạt động ổn định trong những tải khác nhau không.
Flow kiểm thử hiệu năng:

- Phân tích các yêu cầu Non-functional
- Lên các chiến thuật test hiệu năng
- Thiết kế kiểm thử hiệu năng
- Thực thi kiểm thử
- Phân tích kết quả
- Chấm điểm và đánh giá
Non-Functional Requirements Elicitation and Analysis
Đây là một trong những bước quan trọng và then chốt nhất để hiểu các yêu cầu phi chức năng trong PTLC. Nó giúp đánh giá mức độ tuân thủ các nhu cầu phi chức năng.
Performance Test Strategy
Bước thứ hai xác định cách tiếp cận cho các tình huống quan trọng. Bạn cần quyết định loại Performance testing nào và các công cụ cần thiết. Ví dụ như Jmeter.
Performance Test Design
Giai đoạn này liên quan đến việc tạo các kịch bản test sử dụng các công cụ đã được định nghĩa sẵn ở bước trên.
Giai đoạn tiếp theo dành riêng ho các kỹ sư thử nghiệm, những người thiết kế các kịch bản dựa trên khối lượng công việc đã xác định và tải hệ thống với những người dùng ảo đồng thời.
Performance Test Result Analysis
Trong giai đoạn này, các kết quả đã thu thập được phân tích và xem xét bởi các kỹ sư kiểm thử có kinh nghiệm. Vệc điều chỉnh sẽ được đưa ra nếu xác định được bất kỳ xung đột nào.
Benchmark & Recommendations
Đây là giai đoạn cuối cùng trong flow liên quan đến việc chấm điểm hiệu năng và cung cấp khuyến nghị cho khách hàng.
Các công cụ thường được sử dụng
Jmeter
Jmeter là một phần mềm cái mà có thể sử dụng để chạy thử nghiệm hiệu suất, thử nghiệm tại và thử nghiệm chức năng của ứng dụng web. JMeter cũng có thể mô phỏng tải nặng trên máy chủ bằng cách tạo các người dùng ảo đồng thời lên máy chủ web.

Ưu điểm:
- Mã nguồn mở
- Dễ sử dụng: Người dùng có thể cài đặt và sử dụng JMeter một cách dễ dàng. Chỉ cần tải về từ internet, cài đặt và chạy như một ứng dụng java. JMeter có thể chạy trong mọi hệ điều hành có thể là Window, Linux hoặc Mac. Giao diện thân thiện (Friendly GUI): JMeter cực kỳ dễ sử dụng và không mất thời gian để làm quen.
- Đa luồng (Full multithreading framework): JMeter cho mô phỏng đồng thời và cùng thời điểm nhiều sampler với các chức năng khác nhau trên các thread group khác nhau.
- Record & Playback: Ghi lại hoạt động của người dùng trên trình duyệt và mô phỏng chúng trong một ứng dụng web sử dụng JMeter.
- Đa dạng các loại báo cáo: Graph, Chart, and Tree View. trợ các định dạng khác nhau của báo cáo như text, XML, HTML và JSON.
- Thực hiện được nhiều loại test: Load Test, Stress Test, Functional Test, Distributed Test, tất cả trong một công cụ
- Tính linh hoạt: Ta có thể tạo các kịch bản test tùy biến cho từng website
- Hỗ trợ đa giao thức: HTTP, FTP, SOAP, JDBC, JMS và LDAP

Apache JMeter được dùng dể mô phỏng tải nặng trên một server, nhóm server, mạng hoặc các đối tượng để phân tích tổng thể dưới nhiều loại tải khác nhau.
Ví dụ: mô phỏng hành động 1000 người đăng nhập vào website cùng 1 lúc thì thời gian phản hồi trung bình mỗi request, bộ nhớ chiếm bao nhiêu, CPU chiếm bao nhiêu…
Trong một số hệ thống thương mại điện tử, kịch bảnJmeter có thể đã nằm sẵn trong mã nguồn. Ví dụ, trong Magento đã được xây dựng sẵn một kịch bản test với mã nguồn sẵn có. Đó là công cụ Performance Toolkit.
File kịch bản test: setup/performance-toolkit/benchmark.jmx
FIle này khá là nhiều thông số. Và nếu ta đọc README.md trong thư mục đó, ta sẽ thấy đó là một hướng dẫn khá chi tiết cách setup tạo kịch bản để giả lập Chịu tải của server.
https://github.com/magento/magento2/blob/2.4/setup/performance-toolkit/README.md
Trong file README.md kia ta có thể thấy, magento đã xây dựng được 1 kịch bản ta có thể setup ví dụ như sau:

90 người dùng frontend, trong đó 80% browse website và 20% checkout
10 người admin trong đó 10% vào grid và 90% tạo product
Performance toolkit có thể generate sẵn ra các tập dữ liệu phù hợp với website của bạn. Nó sẽ tự tạo các dữ liệu mẫu lớn. Ví dụ số lượng product, số lượng order, ... khác nhau. Ta hoàn toàn có thể thử để giả lập mô trường thực tế với một độ chính xác tương đối.
Hi vọng sau khi đọc xong blog này, mọi người sẽ có những khái niệm cơ bản về kiểm thử hiệu năng để áp dụng lên website của mình.
Cảm ơn các bạn đã theo dõi !