ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
PHẠM THỊ THƢƠNG
KIỂM THỬ HIỆU NĂNG DỊCH VỤ
PHẦN MỀM QUẢN LÝ TRƢỜNG HỌC
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội – 2012
`
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
PHẠM THỊ THƢƠNG
KIỂM THỬ HIỆU NĂNG DỊCH VỤ
PHẦN MỀM QUẢN LÝ TRƢỜNG HỌC
Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số: 60 48 10
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. Trƣơng Anh Hoàng
Hà Nội – 2012
`
3
MỤC LỤC
LỜI CẢM ƠN ............................................................................................................ 1
LỜI CAM ĐOAN....................................................................................................... 2
MỤC LỤC….. ............................................................................................................ 3
DANH MỤC BẢNG................................................................................................... 4
DANH MỤC HÌNH VẼ ............................................................................................. 5
MỞ ĐẦU……............................................................................................................. 6
CHƢƠNG 1 TỔNG QUAN VỀ KIỂM THỬ HIỆU NĂNG..................................... 7
1.1 Giới thiệu .......................................................................................................... 7
1.2 Khái niệm kiểm thử hiệu năng........................................................................... 7
1.3 Tầm quan trọng của kiểm thử hiệu năng ............................................................ 7
1.2 Các thuật ngữ trong kiểm thử hiệu năng ............................................................ 8
1.3 Các hoạt động trong kiểm thử hiệu năng ........................................................... 9
1.4 Tính linh động trong kiểm thử hiệu năng ......................................................... 11
1.5 Hiểu lầm về kiểm thử hiệu năng ...................................................................... 11
1.6 Kiểu kiểm thử hiệu năng ................................................................................. 12
1.7 Công cụ kiểm thử hiệu năng ............................................................................ 14
1.7.1 Công cụ kiểm thử hiệu năng ...................................................................... 14
1.7.2 Tiêu chuẩn để chọn một công cụ kiểm thử hiệu năng................................. 14
CHƢƠNG 2 CÁC KỸ THUẬT TRONG KIỂM THỬ HIỆU NĂNG.................... 16
2.1 Xác định tải công việc của hệ thống (workload of system) .............................. 16
2.1.1 Định nghĩa ................................................................................................. 16
2.1.2 Kiểu tải công việc ...................................................................................... 16
2.1.3 Phân tích tải công việc của hệ thống .......................................................... 17
2.1.4 Mô hình hóa tải công việc (workload) ....................................................... 18
2.2 Cài đặt môi trường kiểm thử hiệu năng ........................................................... 19
2.2.1 Môi trường kiểm thử ................................................................................. 19
2.2.2 Cô lập môi trường kiểm thử ....................................................................... 19
2.2.3 Tạo tải (Load Generators ) ........................................................................ 19
2.2.4 Tạo dữ liệu kiểm thử (Test data generator) ................................................ 20
`
4
2.3 Xây dựng kịch bản kiểm thử hiệu năng ........................................................... 20
2.3.1 Chọn kịch bản kiểm thử hiệu năng ............................................................ 20
2.3.2 Viết kịch bản kiểm thử hiệu năng .............................................................. 20
2.4 Thực hiện kiểm thử hiệu năng (Performance test execution) ........................... 21
2.4.1 Những chuẩn bị trước khi kiểm thử hiệu năng ........................................... 21
2.4.2 Phương pháp thực hiện kiểm thử hiệu năng ............................................... 21
2.4.3 Lời khuyên khi thực hiện kiểm thử tải và kiểm thử áp lực ......................... 22
2.5 Báo cáo kiểm thử hiệu năng (Performance test reporting) ............................... 23
2.5.1 Báo cáo kiểm thử hiệu năng ...................................................................... 23
2.5.2 Các thành phần của báo cáo....................................................................... 23
2.5.3 Lời khuyên và ví dụ khi tạo báo cáo .......................................................... 24
CHƢƠNG 3 KIỂM THỬ HIỆU NĂNG DỊCH VỤ PHẦN MỀM QUẢN LÝ
TRƢỜNG HỌC ....................................................................................................... 26
3.1 Mục tiêu .......................................................................................................... 26
3.2 Giới thiệu trang web quản lý trường học ......................................................... 26
3.3 Phân tích mô hình người sử dụng và mô hình tải ............................................. 27
3.3.1 Số người truy cập lớn nhất trong 1 tháng/1 tuần /1 ngày/1 giờ ................... 27
3.3.2 Luồng chức năng được sử dụng nhiều nhất ................................................ 28
3.3.3 Thời gian trung bình duyệt mỗi trang ........................................................ 30
3.4 Môi trường kiểm thử ....................................................................................... 30
3.5 Kịch bản kiểm thử ........................................................................................... 31
3.6 Chiến lược kiểm thử ........................................................................................ 32
3.7 Tạo và cài đặt kịch bản kiểm thử sử dụng phần mềm Jmeter ........................... 32
3.8 Kết quả kiểm thủ ............................................................................................. 33
3.8.1 Kịch bản kiểm thử NHẬP ĐIỂM ............................................................... 33
3.8.2 Kịch bản kiểm thử Báo cáo........................................................................ 37
3.9 Phân tích kết quả kiểm thử .............................................................................. 40
3.9.1 Thời gian phản hồi .................................................................................... 40
3.9.2 Sử dụng CPU trên máy chủ ....................................................................... 42
3.9.3 Sử dụng Disk I/O trên máy chủ ................................................................. 45
`
5
3.9.4 Sử dụng bộ nhớ trên máy chủ .................................................................... 46
3.10
Kết luận hiệu năng hệ thống trên máy chủ thử nghiệm .............................. 47
CHƢƠNG 4 TRIỂN KHAI DỊCH VỤ QUẢN LÝ TRƢỜNG HỌC TRÊN DIỆN
RỘNG……… ........................................................................................................... 48
4.1 Vấn đề ảnh hưởng hiệu năng của hệ thống ...................................................... 48
4.2 Triển khai hệ thống trên diện rộng................................................................... 48
4.3 Chú ý triển khai hệ thống trên diện rộng.......................................................... 48
KẾT LUẬN…. ......................................................................................................... 50
TÀI LIỆU THAM KHẢO ....................................................................................... 50
`
6
DANH MỤC BẢNG
Bảng 1.1: So sánh hiểu lầm và thực tế về kiểm thử hiệu năng [5] .............................. 11
Bảng 2.1: Ví dụ về mô hình tải sau khi xây dựng [5] ................................................ 19
Bảng 2.2: So sánh thời gian phản hồi [5] ................................................................... 24
Bảng 2.3: Thời gian phản hồi theo số người dùng [5] ................................................ 24
Bảng 3.1: Thời gian nghĩ (think time) trên các trang .................................................. 30
Bảng 3.2: Cấu hình máy chủ triển khai trang web và máy chủ dữ liệu ....................... 30
Bảng 3.3: Miêu tả kịch bản kiểm thử ......................................................................... 32
Bảng 3.4: Số lượng người kiểm thử trong kịch bản.................................................... 32
Bảng 3.5: Kết quả kiểm thử cho 100 người dùng với kịch bản NHẬP ĐIỂM ............ 35
Bảng 3.6: Kết quả kiểm thử cho 100 người dùng với kịch bản BÁO CÁO ................ 38
Bảng 3.7: So sánh 90% thời gian phản hồi trong các kịch bản kiểm thử .................... 40
Bảng 3.8: So sánh mức sử dụng CPU với kịch bản NHẬP ĐIỂM & BÁO CÁO ....... 43
Bảng 3.9: So sánh mức sử dụng CPU với 2 mức tải 50 & 100 người ......................... 44
Bảng 3.10: So sánh số đĩa đọc/ghi với kịch bản NHẬP ĐIỂM & BÁO CÁO ........... 46
Bảng 3.11: So sánh sử dụng bộ nhớ với kịch bản NHẬP ĐIỂM & BÁO CÁO ......... 47
`
7
DANH MỤC HÌNH VẼ
Hình 1.1:
Các giai đoạn trong kiểm thử hiệu năng [5]. ............................................. 9
Hình 1.2:
Nỗ lực kiểm thử [5]. ............................................................................... 11
Hình 2.1:
Tải công việc ổn định [5]. ...................................................................... 16
Hình 2.2:
Tải công việc sườn dốc [5]. .................................................................... 17
Hình 2.3:
Tải công việc bùng nổ [5]. ..................................................................... 17
Hình 2.4:
Tải công việc theo thời gian [5]. ............................................................. 17
Hình 2.5:
Ví dụ chiến lược kiểm thử tải [5]............................................................ 22
Hình 2.6:
Biểu đồ sự thay đổi thời gian phản hồi [5]. ............................................. 25
Hình 3.1:
Biểu đồ về số người sử dụng theo tháng. ................................................ 27
Hình 3.2:
Biểu đồ về số người sử dụng theo tuần. .................................................. 28
Hình 3.3:
Biểu đồ về số người sử dụng theo ngày. ................................................. 28
Hình 3.4:
Biểu đồ về số người sử dụng theo giờ. ................................................... 28
Hình 3.5:
Biểu đồ luồng chức năng. ....................................................................... 29
Hình 3.6:
Thông tin các trang trong luồng chức năng............................................. 29
Hình 3.7:
Thông tin thời gian trung bình duyệt trên từng trang. ............................. 30
Hình 3.8:
Cài đặt kịch bản kiểm thử....................................................................... 33
Hình 3.9:
Kết quả kiểm thử cơ sở với kịch bản NHẬP ĐIỂM. ............................... 34
Hình 3.10: Thời gian phản hồi với kịch bản kiểm thử NHẬP ĐIỂM. ....................... 34
Hình 3.11: Thời gian phản hồi và thông lượng với kịch bản NHẬP ĐIỂM. ............. 35
Hình 3.12: Sử dụng CPU trên máy chủ với kịch bản NHẬP ĐIỂM. ........................ 36
Hình 3.13: Số đĩa đọc/ghi trên máy chủ với kịch bản NHẬP ĐIỂM. ....................... 36
Hình 3.14: Sử dụng bộ nhớ trên máy chủ với kịch bản NHẬP ĐIỂM. ..................... 37
Hình 3.15: Kết quả kiểm thử cơ sở với kịch bản BÁO CÁO. ................................... 37
Hình 3.16: Thời gian phản hồi với kịch bản BÁO CÁO. .......................................... 38
Hình 3.17: Thông lượng và thời gian phản hồi với kịch bản BÁO CÁO. ................. 38
Hình 3.18: Sử dụng CPU trên máy chủ với kịch bản BÁO CÁO. ............................ 39
Hình 3.19: Sử dụng bộ nhớ trên máy chủ với kịch bản BÁO CÁO. ......................... 40
Hình 3.20: Số đĩa đọc/ghi với kịch bản BÁO CÁO. ................................................. 40
Hình 3.21: So sánh 90% thời gian phản hồi kịch bản kiểm thử NHẬP ĐIỂM. ......... 42
`
8
Hình 3.22: So sánh 90% thời gian phản hồi kịch bản kiểm thử BÁO CÁO. ............. 42
Hình 3.23: So sánh sử dụng CPU trong kịch bản BÁO CÁO & NHẬP ĐIỂM. ........ 43
Hình 3.24: Sử dụng CPU với tải 50 và 100 người dùng với kịch bản BÁO CÁO. .... 44
Hình 3.25: So sánh số đĩa đọc/ghi với kịch bản NHẬP ĐIỂM & BÁO CÁO. .......... 45
Hình 3.26: So sánh sử dụng bộ nhớ với kịch bản NHẬP ĐIỂM & BÁO CÁO. ........ 46
`
9
MỞ ĐẦU
Quy mô của các phần mềm và trang web ngày càng lớn để có thể phục vụ được
nhiều người dùng hoặc xử lý nhiều nghiệp vụ cùng một lúc. Điều này mở ra một thách
thức cho người phát triển là làm thế nào xây dựng được một hệ thống đáp ứng được
yêu cầu này mà vẫn đảm bảo chất lượng dịch vụ. Để có thể xây dựng được một hệ
thống như vậy thì người phát triển phải phân tích yêu cầu về hiệu năng và thiết kế hệ
thống để đặt được hiệu năng mong đợi. Sau đó kiểm thử viên sẽ thực hiện kiểm thử
hiệu năng để đảm bảo hệ thống đã đạt hiệu năng yêu cầu.
Kiểm thử hiệu năng cho một ứng dụng để đưa ra kết luận là ứng dụng có thể
phục vụ được tối đa bao nhiêu người sử dụng đồng thời, thời gian phản hồi một yêu
cầu của người sử dụng, thông lượng, máy chủ sử dụng bao nhiêu CPU, bộ nhớ, lỗi
hoặc những vấn đề ảnh hưởng đến hiệu năng (nếu có). Từ những thông tin này giúp
người phát triển đưa ra giải pháp cải tiến ứng dụng để đặt được hiệu năng yêu cầu.
Nếu không thực hiện kiểm thử hiệu năng cho hệ thống thì dự án gặp một rủi ro cao là
không đáp ứng yêu cầu người sử dụng trong thực tế. Khi đó hệ thống có thể xảy ra lỗi
hoặc không phản hồi khi có nhiều yêu cầu của người dùng gửi đến đồng thời.
Như vậy kiểm thử hiệu năng cho hệ thống rất quan trọng và là hoạt động góp
phần để đem lại thành công cho dự án. Chính vì vậy mà luận văn tập trung nghiên cứu
lý thuyết, kỹ thuật và công cụ trong kiểm thử hiệu năng. Đồng thời áp dụng kiểm thử
hiệu năng vào hệ thống đang được triển khai thử nghiệm trong thực tế. Từ kết quả
kiểm thử và vận dụng lý thuyết luận văn phân tích đưa ra các chú ý khi triển khai hệ
thống trên diện rộng.
Cấu trúc của luận văn như sau:
Chương 1 trình bầy khái niệm cơ bản kiểm thử hiệu năng, các hoạt động trong
kiểm thử hiện năng, các kiểu kiểm thử hiệu năng, một vài công cụ kiểm thử hiệu năng
trên thị trường. Từ chương này chúng ta có cái nhìn tổng quát về kiểm thử hiệu năng.
Chương 2 mô tả chi tiết các kỹ thuật trong kiểm thử hiệu năng: phân tích và xác
định tải công việc cho ứng dụng, cài đặt môi trường kiểm thử, chọn và xây dựng kịch
bản kiểm thử, thực hiện kiểm thử hiệu năng và phân tích đưa ra báo cáo kết quả.
Chương 3 là sự nỗ lực của bản thân áp dụng lý thuyết, học hỏi từ các đồng
nghiệp, bạn bè và tham khảo từ việc thực hiện kiểm thử hiệu năng cho các dự án trong
thực tế tôi thực hiện kiểm thử tải cho phần mềm quản lý trường học được xây dựng
trên nền web. Luận văn miêu tả cách thực hiện và kết quả thu được khi: phân tích mô
hình người sử dụng và mô hình tải, luồng chức năng hay được sử dụng, thời gian nghĩ
(think time), chọn kịch bản kiểm thử, ghi và cài đặt kịch bản kiểm thử tải sử dụng
phần mềm Jmeter, thực hiện kiểm thử, phân tích và báo cáo kết quả. Từ kết quả tôi
phân tích đưa ra kết luận về hiệu năng và vấn đề ảnh hướng chính đến hiệu năng hệ
thống khi triển khai mở rộng.
`
10
Chương 4 từ kết quả kiểm thử tải ở Chương 3, vận dụng lý thuyết kiểm thử hiệu
năng và kinh nghiệm bản thân trong thực tế tôi đã phân tích đưa ra chú ý giúp đội phát
triển và kiểm thử viên tham khảo để cải thiện và đảm bảo hệ thống đạt được hiệu năng
yêu cầu khi triển khai trên diện rộng.
Tóm tắt kết quả đã đạt được, trình bày những hạn chế và hướng nghiên cứu phát
triển trong tương lai sẽ được trình bày trong phần kết luận.
`
11
CHƢƠNG 1 TỔNG QUAN VỀ KIỂM THỬ HIỆU NĂNG
1.1 Giới thiệu
Không giống như kiểm thử chức năng, người sử dụng cuối cũng có thể tìm ra lỗi
chức năng của hệ thống. Kiểm thử hiệu năng là một hoạt động rất phức tạp không phải
ai cũng dễ dàng thực hiện kiểm thử và đưa ra kết luận về hiệu năng cho một hệ thống.
Để thực hiện kiểm thử đòi hỏi kiểm thử viên phải có hiểu biết về lý thuyết, kỹ thuật và
phần mềm hỗ trợ kiểm thử hiệu năng. Trong kiểm thử hiệu năng có nhiều khái niệm,
thật ngữ riêng đòi mà kiểm thử viên phải hiểu rõ ý nghĩa của nó. Đồng thời các kỹ
thuật cài đặt môi trường, lựa chọn và xây dựng kịch bản, thực hiện kiểm thử rất đặc
thù không giống như các loại kiểm thử khác. Phải hiểu rõ bản chất và kỹ thuật trong
kiểm thử hiệu năng thì kiểm thử viên mới có thể đưa ra cách tiến hành và chiến lược
kiểm thử hiệu quả. Đó là lý do Chương 1 và Chương 2 của luận văn sẽ giúp người đọc
có cái nhìn từ tổng quan và đến chi tiết kỹ thuật trong các hoạt động kiểm thử hiệu
năng. Chương 1 và Chương 2 là lý thuyết về kiểm thử hiệu năng, toàn bộ nội dung 2
chương này tôi tham khảo trong các quyển sách được đề cập trong mục tài liệu tham
khảo.
1.2 Khái niệm kiểm thử hiệu năng
Có nhiều định nghĩa về kiểm thử hiệu năng. Theo [5], kiểm thử hiệu năng là hành
động kiểm định, đánh giá phần mềm, một thành phần hoặc phần cứng có đúng với yêu
cầu về hiệu năng và tối ưu hóa hiệu năng của nó.
Một cách định nghĩa khác của kiểm thử hiệu năng theo [4], kiểm thử hiệu năng là
kiểm thử xác định thời gian phản hồi (repsonsiveness), thông lượng (throughput), mức
độ tin cậy (reliability) hoặc khả năng mở rộng (scalability) của hệ thống theo khối
lượng công việc (workload).
Mục tiêu của kiểm thử chức năng là kiểm thử và xác nhận các yêu cầu chức năng
trong khi mục tiêu của thử nghiệm hiệu năng là kiểm thử và xác nhận các yêu cầu phi
chức năng của hệ thống như hệ thống có thể phục vụ tối đa bao nhiêu người sử dụng
đồng thời trong khoảng thời gian bao lâu, khi đó thời gian phản hồi và thông lượng là
bao nhiêu, sử dụng bao nhiêu phần trăm CPU, bao nhiêu bộ nhớ của máy chủ, v.v…
Trước kia để tăng hiệu năng của ứng dụng các tổ chức thường mua phần cứng
dung lượng cao mặc dù nó không phải là cách để giải quyết triệt để vấn đề hiệu năng.
Ngày nay các tổ chức đã nhận ra phải phân tích thiết kế hệ thống để đạt được yêu cầu
về hiệu năng và thực hiện kiểm thử hiệu năng để xác nhận hệ thống đã đạt được hiệu
năng yêu cầu chưa. Và nhiều người nghĩ rằng kiểm thử hiệu năng là việc sử dụng một
công cụ mô phỏng nhiều người sử dụng và xác định thời gian phản hồi, thông lượng
của hệ thống khi thực hiện các chức năng khác nhau. Nhưng thực sự làm thế nào để
`
12
mô phỏng được nhiều người sử dụng giống như trong thực tế để có thể đánh giá đúng
hiệu năng thực của hệ thống không thực sự đơn giản.
1.3 Tầm quan trọng của kiểm thử hiệu năng
Kiểm thử hiệu năng là hoạt động cần thiết cho việc phát triển những giải pháp tối
ưu hóa hiệu năng cho phần mềm. Kiểm thử hiệu năng giúp chúng ta tránh được các
tình huống không lường trước khi triển khai ứng dụng trong môi trường thực tế. Ví dụ
khi ứng dụng chạy đúng nhưng quá chậm thì sản phẩm sẽ không được người dùng hài
lòng. Ngoài ra chúng ta có thể thấy một số lý do của việc cần kiểm thử hiệu năng như
sau:
So sánh hiệu năng hiện tại của hệ thống với hiệu năng của hệ thống khác mà
đã làm hài lòng người sử dụng.
Kiểm định hiệu năng của hệ thống đã đúng yêu cầu của khách hàng chưa.
Phân tích hành vi của hệ thống ở những mức tải khác nhau. Việc phân tích
này giúp ta đánh giá về hiệu năng của hệ thống một cách toàn diện hơn.
Tìm nguyên nhân ảnh hưởng đến hiệu năng của hệ thống và nguyên nhân của
nút nghẽn cổ chai. Ví dụ một vài nguyên nhân như rò rỉ (thất thoát) bộ nhớ
(memory leaks), thời gian phản hồi chậm.
Xác định khả năng của các thiết bị và đưa ra yêu cầu về tài nguyên trong
tương lai để ứng dụng đạt được hiệu năng sử dụng.
So sánh với hệ thống đã thành công khác tìm được một giải pháp tốt cho ứng
dụng để đáp ứng được vấn đề thương mại.
1.2 Các thuật ngữ trong kiểm thử hiệu năng
Theo [5] tôi đã chọn lọc và đưa ra một thuật ngữ hay được sử dụng trong kiểm
thử hiệu năng:
Thời gian nghĩ (think time): là khoảng thời gian người sử dụng nắm bắt nội
dung của trang web hoặc là thời gian người dùng thực hiện một hành động tương tác
với hệ thống như nhấp vào một đường dẫn, nút, v.v…
Ngƣời dùng ảo (virtual user): công cụ kiểm thử hiệu năng mô phỏng nhiều
người dùng hệ thống như trong thực tế bằng cách tạo ra người sử dụng ảo trong quá
trình kiểm thử.
Tải ngƣời sử dụng đồng thời (simultaneous user load): là tải nhiều người đồng
thời cùng sử dụng ứng dụng, tại cùng một thời điểm bất kỳ mỗi người thực hiện một
tương tác khác nhau. Ví dụ có 100 người đang sử dụng hệ thống, sẽ có 100 phiên làm
việc khác nhau ở máy chủ.
`
13
Tải ngƣời sử dụng đồng thời thực hiện một hành động (concurrent user
load): là tải nhiều người đồng thời cùng sử dụng ứng dụng và thực hiện cùng một
hoạt động tại bất kỳ thời điểm nào. Ví dụ, tất cả 100 người dùng sẽ đăng nhập trang
web vào cùng thời điểm. Một trang web ngân hàng trực tuyến có thể có 10.000 20.000 người đồng thời sử dụng hệ thống, nhưng 1000 đến 1500 người cùng thực hiện
một giao dịch với ứng dụng.
Yêu cầu/mục đích hiệu năng (performance requirements/goals): là định
lượng đưa ra tiêu chí cho rằng hiệu năng của hệ thống là tốt. Yêu cầu hiệu năng của
một ứng dụng được thể hiện trong thời gian phản hồi, số lượt truy cập trong 1 giây
(hits), số giao địch trong 1 giây, v.v…
Tải công việc (workload): là tải người sử dụng hệ thống trong thời gian thực khi
người sử dụng đang truy cập hoặc trong khi kiểm thử hiệu năng.
Hit: là yêu cầu gửi về máy chủ để truy cập vào một trang web hoặc một tập tin
hoặc một ảnh từ máy chủ web. Ví dụ, nếu một trang web có 5 ảnh, người sử dụng vào
trang đó thì sẽ có 6 hit trên máy chử web (5 hit cho mỗi ảnh và 1 hit cho tải trang
web). Với một trang web, yêu cầu về hiệu năng là số hit trong một đơn vi thời gian
như 'hệ thống hỗ chợ 10 hit / giây với thời gian phản hồi là dưới 5 giây.
Thời gian phản hồi (response time): là thời gian phục vụ hoặc xử lý để phản
hồi lại yêu cầu. Thời gian phản hồi được tính từ khi trình duyệt web gửi yêu cầu tới
máy chủ web cho tới khi trình duyện web nhận được những byte phản hồi đầu tiên từ
máy chủ. Ví dụ thời gian phản hồi của một giao dịch: đăng nhập vào hệ thống là thời
gian máy chủ xử lý việc đăng nhập thành công và hiển thị trang chủ của web (nó bao
gồm thời gian máy chủ xử lý, thời gian ứng dụng xử lý, thời gian máy chủ dữ liệu xử
lý và độ trễ của mạng).
Thông lƣợng (throughput): là tổng dữ liệu (bytes) được chuyền từ máy chủ tới
máy khách để phục vụ yêu cầu người dùng. Nó là chỉ số đánh giá hiệu năng của máy
chủ, nó nói lên số lượng công việc được thực hiện trên máy chủ. Thông lượng cũng
được hiểu như là tổng số yêu cầu hoặc số phiên giao địch được xử lý bởi máy chủ tại
một thời điểm bất kỳ. Ví dụ, thông lượng của máy chủ là 2.5Mbps hoặc 35hits/giây or
8 giao dịch (transaction)/giây.
Nút nghẽn cổ chai (performance bottleneck): là nút mà các giao dịch của hệ
thống được thực hiện rất chậm. Nó là tình trạng/khu vực không cho phép ứng dụng
thực hiện như mong đợi. Ví dụ, thời gian phản hồi tăng lên khi 100 người sử dụng
đồng thời do tham số kết nối HTTP không thích hợp trong máy chủ IIS, máy chủ sử
dụng CPU lên đến 95% trong 100%. Máy chủ bị quá tải sử dụng, đó là một kiểu nút
nghẽn cổ chai tiêu biểu. Một nút cổ chai sẽ làm cho hệ thống thất bại nếu không có
giải pháp.
`
14
1.3 Các hoạt động trong kiểm thử hiệu năng
Hình 1.1: Các giai đoạn trong kiểm thử hiệu năng [5].
Dựa vào Hình 1.1 ta thấy có 4 giai đoạn chính trong thực hiện kiểm thử hiệu
năng và lần lượt thứ tự thực hiện là: lên kế hoạch kiểm thử, tạo kịch bản, thực hiện và
phân tích, báo cáo kết quả. Trong mỗi giai đoạn này có các hoạt động khác nhau.
Lập kế hoạch kiểm thử
Trước khi đưa ra bản hoạch kiểm thử kiểm thử viên nên thực hiện những việc
sau:
Hiểu hệ thống: hiểu nghiệp vụ hay các luồng chức năng của hệ thống.
Xác định mục tiêu/yêu cầu hiệu năng: xác định mục tiêu/yêu cầu hiệu năng
dựa vào yêu cầu khách hàng và đặc thù của ứng dụng.
Mô hình người sử dụng: từ việc hiểu hệ thống và phân tích đối tượng sử
dụng hệ thống kiểm thử viên phải đưa ra mô hình về người sử dụng hệ thống.
Mô hình tải công việc: kiểm thử viên phải phân tích đưa ra được mô hình về
các yêu cầu người sử dụng gửi đến máy chủ như: đặc điểm các yêu cầu, thời
gian, số lượng yêu cầu, v.v…
Từ việc hiểu hệ thống, yêu cầu hiệu năng cần kiểm thử, mô hình người sử dụng
và tải công việc kiểm thử viên sẽ lập ra kế hoạch cho việc kiểm thử hiệu năng. Trong
bản kế hoạch kiểm thử kiểm thử viên phải chỉ ra: công cụ sử dụng để kiểm thử (tools),
loại kiểm thử cần thực hiện, các kịch bản cần kiểm thử, thời gian thực hiện, chuẩn đầu
`
15
vào, đầu ra để xây dựng ca kiểm thử. Kế hoạch kiểm thử được tài liệu hóa và gửi cho
các bên liên quan: các kiểm thử viên, khách hàng, đội phát triển hệ thống.
Kịch bản
Những công việc kiểm thử viên phải thực hiện trong giai đoạn này: phát triển
kịch bản kiểm thử (test scripts) và tạo dữ liệu kiểm thử (generate data). Kiểm thử viên
sẽ sử dụng công cụ kiểm thử hiệu năng, các kịch bản đã đưa ra trong bản kế hoạch để
mô phỏng người sử dụng truy cập vào hệ thống như trong thực tế. Để thực hiện kiểm
thử hiệu năng thì kiểm thử viên phải tạo dữ liệu như trong thực tế để đảm bảo hiệu
năng của hệ thống được đánh giá đúng.
Thực hiện kiểm thử & phân tích kếtquả
Những công việc cần thực hiện trong giai đoạn này là:
Cài đặt môi trường kiểm thử.
Thực hiện kiểm thử: sử dụng công cụ kiểm thử và kịch bản đã được tạo ra để
chạy kịch bản kiểm thử.
Phân tích và đưa ra kết luận về hiệu năng của hệ thống tại thời điểm kiểm thử
và nguyên nhân ảnh hưởng đến hiệu năng của hệ thống (nếu có).
Trước khi thực hiện kiểm thử hiệu năng của hệ thống, nên thực hiện kiểm thử cơ
sở (baseline test) và kiểm thử chuẩn. Kiểm thử cơ sở là kiểm thử cho một người dùng
ảo để kiểm tra tính hợp lệ của kịch bản kiểm thử. Nếu kết quả kiểm thử cơ sở có lỗi thì
cần được phân tích là do hệ thống hay do kịch bản kiểm thử. Lỗi này cần phải được
sửa trước khi thực hiện kiểm thử chuẩn. Kết quả của kiểm thử chuẩn (benchamark
test) là hiệu năng tốt nhất của hệ thống tại thời điểm kiểm thử. Các kết quả của kiểm
thử cơ sở và chuẩn sẽ được lưu lại trong tài liệu để so sánh với các kết quả kiểm thử
khác. Sau đó hệ thống sẽ được thực hiện các kiểm thử khác như kiểm thử tải, kiểm thử
áp lực, v.v…phụ thuộc vào chiến lược được đưa ra trong kế hoạch kiểm thử.
Phân tích kết quả kiểm thử hiệu năng là phân tích hiệu năng của hệ thống hiện tại
đã đạt được yêu cầu đưa ra như thế nào. Phân tích các vấn đề và nguyên nhân làm ảnh
hưởng đến hiệu năng. Với các vấn đề khó như tìm nguyên nhân nút nghẽn cổ chai của
hệ thống cần sự tham gia phân tích của một nhóm người gồm kiểm thử viên, người
quản trị hệ thống, chuyên gia kỹ thuật và người quản lý dữ liệu.
Thực hiện và phân tích kết quả kiểm thử là sự tuần hoàn. Nếu kết quả kiểm thử
hiệu năng chỉ ra rằng hệ thống chưa đạt được yêu cầu hiệu năng thì đội phát triển sẽ
điều chỉnh hệ thống. Khi đó kiểm thử viên sẽ thực hiện kiểm thử hiệu năng để đánh giá
lại hiệu năng hệ thống sau khi được điều chỉnh [2, 4, 5].
Báo cáo kết quả kiểm thử: sau khi phân tích kết quả kiểm thử hiệu năng, kiểm
thử viên đưa ra kết luận về hiệu năng hiện tại của hệ thống, các yếu tố và nguyên nhân
`
16
ảnh hưởng đến hiệu năng của hệ thống và những lời giải thích. Kết quả này được báo
cáo trong tài liệu theo một định dạng dễ hiểu và gửi cho các bên liên quan.
Khi thực kiểm thử hiệu năng thực nghiệm cho phần mềm quản lý trường học
được xây dựng trên nền web như trình bầy chi tiết trong Chương 3, tôi cũng trải qua 4
giai đoạn này và thực hiện các hoạt động trong từng giai đoạn như trong Hình 1.1.
Hiện tại trang hệ thống này đang được triển khai thử nghiệm và có cài đặt Google
Analytics nên khi phân tích mô hình người sử dụng và mô hình tải hệ thống tôi đã dựa
vào số liệu, biểu đồ Google Analytics cung cấp. Cũng dựa vào thống kê của Google
Analytics về luồng chức năng mà người sử dụng thực hiện tôi lựa chọn các kịch bản
được sử dụng nhiều nhất để thực hiện kiểm thử. Trong kiểm thử thực nghiệm này tôi
chỉ thực hiện kiểm thử tải cho hệ thống với 2 mức tải là 50 người và 100 người sử
dụng đồng thời. Để tạo kịch bản và thực hiện kiểm thử tôi sử dụng phần mềm mã
nguồn mở Jmeter. Từ kết quả kiểm thử tôi cũng phân tích và dưa ra báo cáo chi tiết về
tình trạng và những vấn đề ảnh hưởng đến hiệu năng của hệ thống khi muốn triển khai
mở rộng.
1.4 Tính linh động trong kiểm thử hiệu năng
Tính linh động trong kiểm thử hiệu năng rất cao. Scott Barber đã từng so sánh:
“kiểm thử hiệu năng như điều tra tội phạm” . Vì nó là hoạt động có thể điều tra theo
bất kỳ hướng nào. Rất khó để ước tính được nỗ lực bỏ ra để kiểm thử hiệu năng [5].
Hầu hết các tổ chức sử dụng ROM (Rough Order of Magnitude) để ước tính nỗ
lực bỏ ra kiểm thử hiệu năng dựa vào dữ liệu trong quá khứ và yếu tổ rủi ro kỹ thuật.
Với họ nỗ lực kiểm thử được chia ra như sau:
Hình 1.2: Nỗ lực kiểm thử [5].
Dựa vào Hình 1.2 ta thấy ở mức cao nhất, lập kế hoạch kiểm thử chiếm 20% tổng
thời gian kiểm thử. Phát triển kịch bản kiểm thử chiếm 30% tổng thời gian kiểm thử.
Thực hiện việc kiểm thử chiếm 45% tổng thời gian. Viết báo cáo kết quả kiểm thử
`
17
chiếm 5% trong tổng thời gian. Điều quan trọng các hoạt động trong mỗi giai đoạn
phụ thuộc vào dự án. Trong hầu hết các dự án, phải lập lại kế hoạch kiểm thử trong
giai đoạn thực hiện kiểm thử [5].
1.5 Hiểu lầm về kiểm thử hiệu năng
Sau khi thất bại trong một số dự án do hệ thống khi triển khai trong thực tế không
phục vụ được nhiều người sử dụng đồng thời thì các tổ chức dần nhận ra tầm quan của
kiểm thử hiệu năng và những ảnh hưởng của nó đến sự thành công của dự án. Nhưng
hầu hết trong số họ lại đều lên kế hoạch kiểm thử hiệu năng cho ứng dụng vào giai
đoạn cuối cùng của dự án. Điều này mang lại rủi ro rất lớn cho dự án vì có thể những
vấn đề về hiệu năng của hệ thống sẽ không được giải quyết trước ngày ứng dụng được
đưa ra sử dụng. Tại sao biết tầm quan trọng của hiệu năng mà các dự án vẫn gặp rủi ro
cao về điều này? Phải chăng là chúng ta chưa thực sự hiểu đúng về hiệu năng của ứng
dụng. So sánh bản chất thực tế và những quan điểm sai lầm mà mọi người hay nhầm
tưởng về kiểm thử hiệu năng sẽ giúp chúng ta có cái nhìn đúng đắn hơn và làm thế nào
để một dự án đạt được yêu cầu hiệu năng trước khi đưa ra triển khai trong thực tế.
Bảng 1.1: So sánh hiểu lầm và thực tế về kiểm thử hiệu năng [5]
`
Số
Hiểu lầm
Thực tế
1
Kiểm thử hiệu năng là hoạt
động thực hiện sau cùng nếu
thời gian phát triển dự án
đang còn.
Kiểm thử hiệu năng rất quan trọng và nên
được xem xét ngay từ giai đoạn tìm hiểu yêu
cầu và áp dụng công nghệ vào thiết kế hiệu
năng cho ứng dụng cần được thực hiện trong
các giai đoạn phát triển dự án
2
Thực hiện kiểm thử hiệu năng Xây dựng kiểm thử hiệu năng sẽ không làm
làm tăng hiệu năng của hệ tăng hiệu năng của hệ thống. Nó giúp xác
thống.
nhận hệ thống đã đạt được yêu cầu hiệu năng
chưa và tìm ra các vấn đề về hiệu năng nếu
có.
3
Kiểm thử hiệu năng cần phải
thực hiện tất cả chức năng của
ứng dụng để xác định các vấn
đề về hiệu năng.
4
Thời gian phản hồi (response Không có một chuẩn nào cho thời gian phản
time) của một hệ thống theo hồi. Thời gian phải hồi được đưa ra dựa trên
một chuẩn.
khả năng của phân cứng, phần mềm.
Những chức năng được sử dụng thường xuyên
trong hê thống, chức năng quan trọng, chức
năng dễ bị lỗi th́ kiểm thử viên phải tiến hành
kiểm thử hiệu năng.
18
5
Kiểm thử hiệu năng cho một Kiểm thử hiệu năng cần thực hiện lại bất cứ
ứng dụng thực hiện một lần khi nào có sự thay đổi phần mềm hoặc phần
trong thời gian phát triển cứng.
không quan tâm khi có nhiều
mô-đun của ứng dụng đã được
thiết kế lại.
6
Kiểm thử hiệu năng có thể Kiểm thử hiệu năng cần thực hiện trong một
thực hiện song song trong khi hệ thống đáng tin cậy chỉ sau khi hoàn thành
kiểm thử chức năng.
giai đoạn kiểm thử hệ thống.
1.6 Kiểu kiểm thử hiệu năng
Khi thực hiện kiểm thử hiệu năng cho một ứng dụng chúng ta có thể thực hiện
một hoặc một vài loại kiểu kiểm thử hiệu năng phụ thuộc vào đặc thù và yêu cầu của
ứng dụng đó. Một vài kiểu kiểm thử hay được sử dụng trong kiểm thử hiệu năng là:
Kiểm thử cơ sở (baseline test)
Kiểm thử cơ sở là kiểm thử được xây dựng đánh giá hiệu năng ứng dụng với tải
một người sử dụng [5, 6]. Kiểm thử cơ sở được thực hiện để kiểm tra tính đúng của
kịch bản kiểm thử được phát triển cho kiểm thử hiệu năng. Kịch bản kiểm thử có thể
được tạo ra với thời gian nghĩ (think time) trong thực tế và những cài đặt khác giống
sử dụng trong thời gian thực. Thông tin về thời gian phản hồi, các số liệu sử dụng tài
nguyên máy chủ được thu thập và lưu lại trong tài liệu. Những thông tin này là cơ sở
được dùng so sánh với hiệu năng của hệ thống ở điều kiện tải khác nhau [5].
Kiểm thử chuẩn (benchmark test)
Kiểm thử chuẩn là kiểm thử được tiến hành để đo lường hiệu năng của ứng dụng
trong một điều kiện tải thấp. Thông thường kiểm thử chuẩn chiếm 15-20% mức tải
mục tiêu. Kiểm thử chuẩn còn có mục đích kiểm tra tính đúng đắn của kịch bản kiểm
thử và tính sẵn sàng của hệ thống trước khi đặt trong điều kiện tải cao. Nó giúp chúng
ta nhận ra các thành phần khác nhau của hệ thống kết hợp với nhau theo thiết kế có
đáp ứng mức dịch vụ cung cấp [5].
Thời gian phản hồi của hệ thống và số liệu về mức sử dụng tài nguyên máy chủ
sẽ giúp chúng ta phân tích hệ thống có thể đứng vững với kiểm thử tải người sử dụng
cao. Các số liệu thu thập trong kiểm thử chuẩn sẽ được xem như là kết quả hiệu năng
tốt nhất của hệ thống. Chúng ta có thể đánh giá sự giảm sút hiệu năng của hệ thống
bằng cách so sánh với hiệu năng hệ thống trong kiểm thử chuẩn.
Kiểm thử tải (load test)
`
19
Kiểm thử tải được thực hiện xác định hiệu năng hệ thống với điều kiện tải nhiều
người sử dụng đồng hệ thống như trong thực tế. Nó được xây dựng với mục đích tìm
ra hiệu năng hệ thống trong điều kiện tải mục tiêu. Ngoài ra kiểm thử tải giúp đánh giá
hiệu năng hệ thống trong những điều kiện tải khác nhau như trong điều kiện tải bình
thường và tải cao điểm [2, 5, 6].
Kịch bản kiểm thử tải được tạo ra với thời gian nghĩ (think time) tương tự như
thời gian chờ của người sử dụng cuối trong thực tế. Kiểm thử nên tạo được sự kết hợp
các giao dịch như trong thế giới thực. Kiểm thử tải giúp chúng ta xác định thời gian
phản hồi, thông lượng (throughput) của hệ thống, những vấn đề về phần cứng của máy
chủ triển khai ứng dụng và máy chủ đặt dữ liệu trong điều kiện tải bình thường và tải
cao điểm. Đồng thời kiểm thử tải còn giúp chúng ta xác định lỗi của ứng dụng xảy ra
trong các điều kiện tải khác nhau.
Ví dụ: Tải mục tiêu (tải tối đa) của một ứng dụng web là 1000 người dùng đồng
thời. Yêu cầu kiểm tra khả năng chịu tải của trang web khi hoạt động trong mức tải
cao nhất trong 2 ngày.
- Dùng một công cụ kiểm thử hiệu năng tạo mô phỏng ban đầu là 800 người
dùng, cứ 1 phút tăng 2 người, cho đến khi đặt mức tải 1000 người dùng, để ứng
dụng chạy liên tục trong 2 ngày với mức tải tối đa.
- Quan sát: ứng dụng sử dụng tài nguyên trên máy chủ RAM, CPU, thời gian
phản hồi của hệ thống, thông lượng (throughput).
Kiểm thử áp lực (stress test)
Kiểm thử áp lực là kiểm thử được tiến hành bằng cách kiểm thử hệ thống trong
điều kiện tải bất hợp lý để xác định điểm dừng (breakpoint) của hệ thống [2, 5]. Kiểm
thử này được coi là kiểm thử tiêu cực vì hệ thống phải chịu một tải không thực tế. Nó
thường được tiến hành để biết tác hại tiền năng tạo ra trong quá trình hệ thống phải
chịu tải không thực tế. Kết quả của kiểm thử áp lực đôi khi giúp chủ sở hữu web site
thông báo người sử dụng về khả năng mở rộng của ứng dụng.
Về cơ bản kiểm thử áp lực tập trung vào đánh giá hệ thống có thể tồn tại bao lâu
với mức tải lớn hơn mức tải mục tiêu. Đồng thời nó cũng giúp xác định những vấn đề
về phần cứng của máy chủ triển khai ứng dụng và lên kế hoạch nâng cấp máy chủ.
Kịch bản được tạo ra cho kiểm thử áp lực là không thực tế. Kịch bản được tạo ra
không có thời gian nghĩ (think time) và lưu trữ (cache) được ẩn đi để nhanh chóng tạo
được mức tải cao cho máy chủ. Khi đó hành vi của máy chủ nhanh chóng được xác
định, đánh giá.
Ví dụ một ứng dụng web có thể đáp ứng tối đa là 1000 người sử dụng đồng thời.
Yêu cầu kiểm tra hành vi của ứng dụng khi yêu cầu gửi về máy chủ lớn hơn 1000
người sử dụng đồng thời.
`
20
- Dùng một công cụ kiểm thử hiệu năng mô phỏng có 1100 người đang đồng
thời sử dụng ứng dụng. Không tiếp tục tăng tải cho máy chủ.
- Quan sát: Kết quả xử lý của máy chủ với 1000 yêu cầu đầu, 100 yêu cầu sau
đó bị từ chối như thế nào, máy chủ có hành vi như thế nào (khởi động lại hoặc bị
treo).
- Từ đó đưa ra kết luận tình trạng của ứng dụng khi được đạt ở mức tải mục tiêu
(tải đối đa) và trong điều kiện quá tải.
Kiểm thử Spike (spike test)
Kiểm thử này rất giống kiểm thử áp lực (stress test) nhưng hệ thống được đặt
trong tải cực cao trong một thời gian gian ngắn [2, 5]. Kiểm thử giúp xác nhận hiệu
năng hệ thống trong điều kiện tải cao đột ngột trong giờ giao dịch cao điểm của ứng
dụng. Kịch bản kiểm thử được tạo ra cho kiểm thử này không thực tế. Thời gian đợi
(Think time) được lờ đi và lưu trữ (cache) được ẩn đi trong kịch bản.
Kiểm thử chịu đựng (endurance test)
Kiểm thử chịu đựng tập trung vào đánh giá hiệu năng của hệ thống với mức tải
sử dụng được định trước trong khoảng thời gian kéo dài. Kiểm thử này còn giúp tìm
vấn đề liên quan đến bộ nhớ và tràn bộ đệm xảy ra nếu tiếp tục sử dụng hệ thống.
Ngoài ra nó còn giúp đánh giá tính sẵn sàng của hệ thống dựa vào khoảng thời gian
thực hiện kiểm thử. Kiểm thử chịu đựng chạy với 70%- 80% của tải mục tiêu, trong
kịch bản có cài đặt thời gian nghĩ giống như trong thực tế.
Kiểm thử cô lập nghẽn cổ chai (bottleneck isolation test)
Kiểm thử cô lập nghẽn cổ chai là kiểm thử được thực hiện trên hệ thống hoặc
một thành phần cụ thể để tìm ra các vấn đề và nguyên nhân ảnh hưởng đến hiệu năng
của hệ thống [5]. Nó thường được xây dựng sau kiểm thử tải (load test) để dễ dàng hơn
trong việc tìm ra các vấn đề cụ thể của hiệu năng. Kiểm thử này được thực hiện linh
động để gỡ rối (debug) những vấn đề của hiệu năng.
Kiểm thử khối lƣợng (volume test)
Kiểm thử khối lượng là kiểm thử hiệu năng cho hệ thống khi nó phải thao tác
với một lượng dữ liệu nhất định. Số lượng này có thể là kích thước bản ghi dữ liệu
hoặc nó cũng có thể là kích thước của 1 tập tin.
Ví dụ nếu bạn muốn kiểm thử hiệu năng cho một ứng dụng mà dữ liệu của ứng
dụng có khối lượng bản ghi cụ thể thì bạn phải tạo một dữ liệu có số lượng bản ghi
như vậy rồi thực hiện kiểm thử hiệu năng. Hoặc nếu ứng dụng của bản phải đọc/ghi
trên một tập tin, bạn sẽ phải tạo một tập tin mẫu có kích thước như yêu cầu trong hệ
thống rồi thực hiện kiểm thử hiệu năng.
`
- Xem thêm -