[QA-QC] Performance Testing
Định nghĩa
Performance Testing là kiểm thử phi chức năng, nhằm kiểm tra tải của hệ thống khi có nhiều người dùng đồng thời
Các thông số cần kiểm tra:
Responsiveness (Khả năng đáp ứng): Hệ thống đáp ứng được bao nhiêu user? Bao nhiêu giao dịch/s? Duy trì trong bao lâu
Stability (Sự ổn định): Hệ thống có bị chậm, treo, giật, mất kết nối trong thời gian bao lâu? Nếu xảy ra sự cố thì có bị mất dữ liệu và có thể khôi phục được trạng thái ban đầu không?
Scalability (Khả năng mở rộng): Kiểm tra khả năng của đường mạng, hạ tầng, CSDL
Speed (Tốc độ): Thời gian phản hòi của hệ thống ntn
Resource usage (Sử dụng tài nguyên): Mức độ tiêu thụ tài nguyên
Reliability (Độ tin cậy): Hệ thống có thực hiện đúng thao tác nghiệp vụ không
Một số công cụ dùng để kiểm thử hiệu năng:
Apache JMeter
HP Loadrunner
Rational performance tester
Apache benchmark
SoapUI
Các loại kiểm thử hiệu năng:
Load testing: Kiểm tra cách hệ thống xử lý khối lượng tải ở mức dự kiến thông thường, tập trung vào Speed
Stress testing: Kiểm tra cách hệ thống hoạt động khi tải cực lớn, tập trung vào sự ổn định - Stability
Spike testing: Kiểm tra cách hệ thống hoạt động khi tải cực lớn với lượng người dùng tăng đột ngột, tập trung vào Speed
Soak testing/Endurance testing: Kiểm tra load testing trong 1 thời gian dài, tập trung vào Stability
Scalabity testing/Capacity testing: Kiểm tra khả năng xử lý tải của ứng dụng khi tải người dùng tăng, tập trung vào Scalability
Volume test: Kiểm tra hiệu năng với dữ liệu cực lớn của CSDL (Ví dụ: báo cáo, đồng bộ thông tin), tập trung vào Speed
Các thuật ngữ sử dụng trong test hiệu năng
Người dùng đồng thời (Concurrent user - CCU): người dùng đăng nhập vào hệ thống và có thao tác với hệ thống.
Response time: Thời gian phản hồi của request, tính từ khi request được gửi đi đến khi nhận về phản hồi.
Elapsed time: Thời gian từ khi bắt đầu gửi request đầu tiên cho đến khi nhận được phản hồi cuối cùng. Jmeter không bao gồm thời gian xử lý hoặc hiển thị bất kỳ mã code nào của client như javascript.
Latency time: Thời gian trễ, tính từ ngay khi gửi request cho đến khi nhận về phản hồi đầu tiên. Như vậy bao gồm cả thời gian xử lý request của server.
Connect time: Thời gian để thiết lập kết nối bao gồm cả thời gian bắt tay SSL. Trong jmeter thì thời gian này không tự động trừ trong latency.
Transaction per second (TPS): Số transaction server xử lý được trong 1 giây.
Throughput: Số request server xử lý được trong một đơn vị thời gian
Median: 50% mẫu có response time <= Median
90% line: 90% mẫu có response time <= giá trị này
%CPU: Lượng CPU mà hệ thống chiếm dụng trong quá trình xử lý tải
%RAM: Lượng RAM mà hệ thống chiếm dụng trong quá trình xử lý
Ngưỡng: Số CCU hoặc TPS mà tại đó hệ thống vẫn xử lý được
Bottlenecks: nút thắt cổ chai, tại đây, hệ thống bị tắc nghẽn
Các bước kiểm thử hiệu năng
Bước | Nội dung thực hiện |
---|---|
Xác định môi trường kiểm thử | Tại bước này, cần xác định:
|
Xác định các tiêu chí hiệu năng có thể chấp nhận | Tại bước này, cần xác định:
Các tiêu chí này được đưa ra dựa trên hợp đồng hoặc QL dự án hoặc dựa vào việc đo các hệ thống tương tự để đưa ra expect |
Lập kế hoạch | Tại bước này, cần thực hiện:
|
Cấu hình môi trường | Tại bước này, cần:
|
Thiết kế test script | Tạo các test script và chọn template báo cáo |
Thực thi các test script | Run test script |
Phân tích kết quả và viết báo cáo | Xem báo cáo và phân tích KQ => Đưa ra báo cáo KQ test hiệu năng |
Jmeter
Các thành phần chính trong 1 Test Plan
Các thành phần | Định nghĩa |
---|---|
Thread Group | Kiểm soát số lượng Threads mà JMeter sử dụng trong quá trình test |
Thread Group> Samplers | Một số samplers hay dùng:
|
Thread Group > Logic Controller | Logic Controller cho phép xác định thứ tự mà các Samplers trong nó thực hiện Các Controller hay dùng:
|
Thread Group > Config Elements | Cho phép tạo các giá trị mặc định và các biến được sử dụng trong các Samplers Dùng để add hoặc modify các request tạo ra từ các Samplers Các element hay dùng:
|
Thread Group > Listeners | Báo cáo thực hiện các testscript |
Thread Group > Timer | Element cho phép giả lập thời gian chờ giữa các request |
Thread Group > Assertions | Sử dụng để thực hiện kiểm tra bổ sung trên bộ lấy mẫu Assertions hay dùng:
|
Thread Group > Pre processor | Hành động trước khi chạy Request |
Thread Group > Post processor | Hành động sau khi chạy Request |