I. Tổng quan về Kiểm thử hiệu năng
1. Kiểm thử hiệu năng là gì?
- Kiểm thử hiệu năng (Performance Testing) là một loại kiểm thử nhằm xác định mức độ đáp ứng, băng thông, độ tin cậy và/hoặc khả năng mở rộng của hệ thống dưới một khối lượng làm việc/truy cập nhất định.
2. Mục đích của việc thực hiện Kiểm thử hiệu năng?
-
Đánh giá mức độ sẵn sàng của sản phẩm
-
Đánh giá dựa vào các tiêu chí hiệu suất
-
So sánh giữa các đặc tính hiệu suất của đa hệ thống hoặc cấu hình hệ thống
-
Tìm ra nguồn gốc của các vấn đề về hiệu suất
-
Hỗ trợ điều chỉnh hệ thống
-
Tìm các mức độ băng thông
3. Các loại kiểm thử hiệu năng thông dụng
Load testing :
Mô phỏng mức độ chịu tải của hệ thống Thường là khi hệ thống hoạt động bình thường và khi có tải cao. Nhắm đánh giá sự ổn định khi sản phẩm chạy trong môi trường thực tế. Mục tiêu đánh giá khả năng đáp ứng hệ thống khi hoạt động bình thường và khi hoạt động tại giờ cao điểm.
Ví dụ: Lập trình viên thiết kế ứng dụng có khả năng chịu tải 1000 người sử dụng đồng thời. Để kiểm chứng năng lực, họ sẽ tạo kịch bản load test với 1000 user giả lập, duy trì bài test trong 1-2 giờ để đánh giá khả năng hoạt động của ứng dụng.
Stress testing:
Mô phỏng hệ thống khi quá tải, xác định khả năng hoạt động, phục hồi, ngưỡng chịu đựng trước khi xảy ra sự cố. Mục tiêu chính của Stress Test là tìm ra ngưỡng đỉnh của hệ thống, tại đó nếu vượt ngưỡng đỉnh hệ thống sẽ xảy ra sự cố và không thể đáp ứng dịch vụ.
Ví dụ: Sau khi ước lượng được khả năng đáp ứng của ứng dụng là 1000 người truy cập đồng thời, lập trình viên quyết định tạo bài test với 1100 người dùng giả lập để kiến ứng dụng xảy ra ***sự cố để đánh giá khả năng phục hồi của ứng dụng.
Volume test:***
Mô phỏng khả năng xử lý hệ thống đối với một lượng dữ liệu lớn. Mục tiêu bài test là đánh giá các vấn đề làm ảnh hưởng tới hiệu năng hệ thống khi phải xử lý lượng dữ liệu rất lớn
Ví dụ: Các trang thương mại điện tử cần lưu trữ rất nhiều thông tin. Để đánh giá được hiệu năng của sản phẩm, lập trình viên quyết định tạo ra db với hàng triệu bản ghi, sau đó thực hiện query, cập nhật dữ liệu trên hệ thống để mô phỏng các hoạt động thực tế của trang thương mại điện tử. Từ đó đánh giá được hiệu năng thực của sản phẩm.
Endurance test
- Mô phỏng hệ thống hoạt động trong thời gian dài quá đó tìm ra các vấn đề về bộ nhớ, phân mảnh dữ liệu v.v.
+ Ví dụ: Các trang thương mại điện tử thường phải hoạt động trong thời gian rất dài với lượng truy cập cao, lập trình viên tạo bài test có thời gian tới 2-3 ngày với lượng người dùng truy cập không đổi để đánh giá sự ổn định sản phẩm.
Spike Test
Kiểm tra phản ứng của hệ thống khi tải thay đổi đột ngột. Đồng thời cũng kiếm tra khả năng phục hồi của hệ thống khi lượng truy cập giảm
Ví dụ: Các trang đăng ký học thường có lượng truy cập tăng vọt tại thời điểm đăng ký môn học và chỉ duy trì trong thời gian 1-2 tiếng. Lập trình viên tạo bài test với tải tăng đột ngột trong 1-2 giờ sau đó đánh giá khả năng đáp ứng và khả năng phục hồi sau khi tải giảm.
KẾT LUẬN
II. Stress Testing và Load Testing với Jmeter trong Performance Testing
Setup môi trường, cài đặt tool, tìm hiểu HDSD tool Jmeter
1.1. Setup môi trường, cài đặt tool => DONE trên máy
1.2. Các thành phần chính của Jmeter và HDSD
1.2.1. Test Plan: nơi lưu test plan muốn test
1.2.2 Test Plan Element
a, Thread Group:
Mọi Test Plan phải có ít nhất 1 Thread group, Thread group sẽ tạo ra các yêu cầu để request tới server
Click chuột phải vào Test Plan => Add => Thread (users) => Thread group
Một số thuộc tính trên màn hình:
Name : đặt tên cho ThreadGroup
Number of Threads(users) : số lượng người dùng mà ta muốn mô phỏng.
Ramp-up Period (in seconds): Cho biết thời gian để JMeter tạo ra tất cả những thread cần thiết.
Loop Count Forever : 1 các thread được tạo sẽ thực hiện 1 lần (thay 1 bằng n thì số các thread sẽ lặp n lần).
b, Sampler
Samplers cho phép JMeter gửi các loại yêu cầu cụ thể tới server
Các dạng Samplers như sau:
HTTP Request
FTP Request
JDBC Request
Java Request
SOAP/XML Request
RPC Requests
HTTP Request
Các thuộc tính HTTP Request
Name: Đặt tên hành động chúng ta muốn làm
Protocol: Không chọn gì có nghĩa default là HTTP
Server Name or IP: Tên của server muốn test, ví dụ “lazada.vn”
Path: Trang chủ thì chỉ cần /, trang con trong đó thì “/tên trang”
c, Listener
Các dạng hiển thị kết quả sau khi execute test, cung cấp cho người dùng các công cụ hiển thị một cách trực quan, dễ hiểu như: tables, graphs, trees hoặc một vài log files đơn giản.
Ví dụ về dạng Aggregate Report (table):
- Label: Hiển thị tên của từng requests có trong test plan
Samples : số request
Average : thời gian trung bình xử lý các request
min : thời gian nhỏ nhất xử lý request
max : thời gian lớn nhất xử lý request
Error : phần trăm bị lỗi của các request(lỗi kết nối hoặc lỗi cho đầu ra không mong muốn)
throughput : số request/s của server