2.4.1 Những chuẩn bị trước khi kiểm thử hiệu năng
Bƣớc 1: Hiểu mô hình người sử dụng (workload model) của hệ thống thông qua việc phân tích mô hình người sử dụng hoặc từ tập tin log trên máy chủ.
Bƣớc 2: Thiết kế ca kiểm thử cùng với các tham số như chiến lược tăng (ramp up), thời gian kiểm thử, cài đặt thời gian đợi (think time), kịch bản kiểm thử được thực hiện, các điều kiện tải, các loại kiểm thử được tiến hành cùng với chuẩn qua/lỗi. Dựa vào ca kiểm thử và sử dụng nó để lên kế hoạch cho những phần còn lại của hoạt động kiểm thử.
Bƣớc 3: Xác định phần mềm kiểm thử hiệu năng và chuẩn bị dữ liệu kiểm thử. Tìm kiếm một phần mềm trên thị trường (có bản quyền hoặc mà nguồn mở) dựa vào ngân sách và các chức năng của phần mềm. Sử dụng phần mềm đã lựa chọn và phát triển kịch bản kiểm thử mô phỏng người sử dụng truy cập thực tế. Tạo đủ dữ liệu kiểm thử trong kịch bản để giả lập nhiều người dùng khác nhau sử dụng dữ liệu khác nhau.
Bƣớc 4: Đảm bảo môi trường kiểm thử đã sẵn sàng, không có người sử dụng truy cập ứng dụng trong khi thực hiện kiểm thử và máy chủ được cách ly với bất kỳ sử dụng khác.
2.4.2 Phương pháp thực hiện kiểm thử hiệu năng
Sử dụng phần mềm kiểm thử và kịch bản đã tạo sẵn chúng ta thực hiện kiểm thử hiệu năng cho hệ thống. Trong thời gian thực hiện kiểm thử hiệu năng, đặt máy chủ trong một tải ổn định khoảng 15- 30 phút phụ thuộc vào mô hình sử dụng. Kiểm tra hiệu năng của hệ thống với nhiều tình huống trong các điều kiện tải khác nhau và sau đó đưa ra số liệu hiệu năng về thời gian phản hồi, thông lượng và sử dụng tài nguyên của máy chủ. Kịch bản kiểm thử nên được cài đặt có đủ thời gian cho việc tăng số người sử dụng trước khi đặt hệ thống trong tải mong đợi trong một khoảng thời gian. Tất cả các đánh giá về hiệu năng máy chủ chỉ được thực hiện trong khoảng thời gian tải ổn định [5].
Ví dụ: Đánh giá hiệu năng của ứng dụng với 100 người dùng thực hiện 3 kịch bản: (1) Kịch bản giao dịch A – 60% tải mục tiêu
(2) Kịch bản giao dịch B – 30% tải mục tiêu (3) Kịch bản giao dịch C – 10 % tải mục tiêu
Theo phân tích kịch bản A được thực hiện 6 lần trong 1 giờ, kịch bản B thực hiện 2 lần trong 1 giờ và kịch bản C được thực hiện 1 lần trong 1 giờ. Biết rằng tải cao điểm trên máy chủ là 200 yêu cầu/1 giây trong giờ cao điểm. Chúng ta có một chiến lược kiểm thử như sau:
Hình 2.5: Ví dụ chiến lược kiểm thử tải [5].
Dựa vào Hình 2.5 ta thấy chiến lược kiểm thử tải là: đặt hệ thống trong tải mục tiêu 100 người truy cập hệ thống trong khoảng thời gian tải ổn định là 40 phút. Trong thời gian tải ổn định khi cả 3 kịch bản giao dịch đang thực hiện trong 10 phút (từ 40:00 đến 50:00 mm:ss), tải máy chủ được tăng lên với 200 yêu cầu/giây.
Kịch bản kiểm thử ở trên đã đạt yêu cầu kiểm thử hiệu năng của ứng dụng và nó cung cấp hiệu năng hệ thống khi sử dụng hệ thống thực. Nhưng kịch bản ở trên đã bỏ qua là mực độ tin tưởng của máy chủ khi thao tác 200 yêu cầu/1 giây. Nó mới chỉ đưa ra một trường hợp trong khoảng thời gian 10 phút cả 3 kịch bản đang được thực hiện. Do đó chúng ta có thể thực hiện một kiểm thử khác là chạy cả 3 kịch bản giao dịch cùng nhau ít nhất 20 – 30 phút và tăng tải máy chủ lên 200 yêu cầu/1 giây để thu thập thêm thông tin về số liệu, thời gian phản hồi, sử dụng tài nguyên máy chủ.
Khi thực hiện kiểm thử tải nên tập trung đánh giá hiệu năng máy chủ trong mô hình sử dụng thực. Để tạo độ tin tưởng cao khi phân tích hiệu năng thì nên thực hiện 3 đến 4 mẫu kiểm thử và thu thập các số liệu về thời gian phản hồi, thông lượng, mức độ sử dụng CPU. Từ đó so sánh, đánh giá và đưa ra kết luận chính xác về hiệu năng của hệ thống.
2.4.3 Lời khuyên khi thực hiện kiểm thử tải và kiểm thử áp lực
Kiểm thử tải (load test)
Thực hiện ít nhất 3 vòng kiểm thử tải cần lên kế hoạch trước khi đặt hệ thống trong tải mục tiêu. Kiểm thử tải thấp cho hệ thống chiếm 30 % tải mục tiêu, kiểm thử tải trung bình chiếm 60% trong tải mục tiêu và còn lại là kiểm thử tải cao chiếm 100% tải mục tiêu [5].
Khi thực hiện kiểm thử tải có 3 vùng tải: tải từ từ tăng, tải ổn định, tải từ từ giảm. Trong vùng tải từ từ tăng số người sử dụng hệ thống từ từ tăng trong khoảng thời gian cụ thể (5 người/1 phút) được cài đặt trong kịch bản kiểm thử. Giá trị này có thể quyết định dựa vào mô hình sử dụng của ứng dụng. Ví dụ nếu ứng dụng của bạn là trang web bán ðấu giá thì có thể 50 người sử dụng cùng đăng nhập vào hệ thống trong 1 giây trong giờ giao dịch cao điểm. Trong vùng tải từ từ giảm số người sử dụng hệ thống dần giảm trong một khoảng thời gian và nó cũng được cài đặt trong kịch bản kiểm thử. Trong vùng tải ổn định thì số người sử dụng hệ thống là không đổi khi đó tải trên máy chủ tải trên máy chủ cũng không đổi. Chúng ta thu thập số liệu về hiệu năng máy chủ trong khoảng thời gian tải ổn định [5].
Kiểm thử áp lực (stress test)
Không giống như kiểm thử tải, kiểm thử áp lực (stress test) được xây dựng với mục đích gây áp lực cho hệ thống để tìm ra điểm dừng (breakpoint) và nguyên nhân ảnh hưởng đến hiệu năng của hệ thống (nếu có) [5]. Hành vi của hệ thống được xác định khi nó được đặt ở mức tải cao. Thông thường khoảng 10% - 20 % tải được cộng thêm vào mức tải tối đa của hệ thống được đạt làm mức tải cho kiểm thử áp lực. Khi thực hiện kiểm thử áp lực chúng ta nên tăng chậm tải cho hệ thống cho đến khi xuất hiện điểm dừng (break point). Kiểm thử này có thể thực hiện một vài lần thu thập hành vi của hệ thống và nâng cao độ tin cậy khi phân tích hành vi này.
Sau khi kiểm thử tải và áp lực (stress test), phụ thuộc vào yêu cầu hiệu năng của hệ thống mà các kiểm thử khác như kiểm thử chịu đựng (endurance), Spike test… có thể thực hiện để xác nhận thêm hành vi và hiệu năng của hệ thống.