Kiểm thử hiệu năng dịch vụ phần mềm quản lý
trường học Phạm Thị Thương Trường Đại học Quốc gia Hà Nội; Trường Đại học Công nghệ
Chuyên ngành: Công nghệ phần mềm; Mã số: 60 48 10
Cán bộ hướng dẫn khoa học: TS. Trương Anh Hoàng
Năm bảo vệ: 2012 Abstract. 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.
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ả. 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ả, đư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. 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.
Keywords: Công nghệ thông tin; Kiểm thử phần mềm; Phần mềm; Quản lý trường học
Content.
MỞ ĐẦU
Kiểm thử hiệu năng cho hệ thống rất quan trọng chính vì vậy mà luận văn tập trung nghiên
hoặc khả năng mở rộng (scalability) của hệ thống theo khối lượng công việc (workload).
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ế.
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…
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.
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.
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.
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ủ.
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.
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
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.
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ử 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].
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.
1.7 Công cụ kiểm thử hiệu năng
1.7.1 Công cụ kiểm thử hiệu năng
Có rất nhiều phần mềm kiểm thử hiệu năng trên thị trường. Nó có thể được chia thành hai loại
chính: phần mềm mã nguồn mở và phần mềm có bản quyền.
1.7.2 Tiêu chuẩn để chọn một công cụ kiểm thử hiệu năng
Chọn một phần mềm kiểm thủ hiệu năng tốt phù hợp với đặc thù của ứng dụng cần kiểm thử
không phải là việc quá khó với kiểm thử viên. Kết luận của kiểm thử viên về hiệu năng của hệ thống
mới là công cụ tốt nhất phân tích, đánh giá hiệu năng của hệ thống [5].
CHƢƠNG 2 CÁC KỸ THUẬT TRONG KIỂM THỬ HIỆU NĂNG
2.1 Xác định tải công việc của hệ thống (workload of system)
2.1.1 Định nghĩa
Tải công việc (workload) là số lượng yêu cầu, giao dịch người dùng gửi về máy chủ xử lý
trong thời gian người sử dụng truy cập hệ thống hoặc trong khi thực hiện kiểm thử hiệu năng. Như
G.Kotis từng nói, “tải công việc có thể được xác định như một tập các đầu vào từ những người sử
dụng gửi tới hệ thống “ [5].
2.1.2 Kiểu tải công việc
28
260
Nặng (Heavy)
20%
350
900
2.2 Cài đặt môi trƣờng kiểm thử hiệu năng
2.2.1 Môi trường kiểm thử
Nếu môi trường sản phẩm và môi trường kiểm thử có sự khác nhau về phần cứng triển khai
ứng dụng thì sẽ mang lại rủi ro cao là hiệu năng sau khi kiểm thử không phải là hiệu năng thực tế của
hệ thống trong thực tế. Vì vậy môi trường kiểm thử nên được cài đặt giống với môi trường sản phẩm.
2.2.2 Cô lập môi trường kiểm thử
Kiểm thử hiệu năng nên được xây dựng trong môi trường riêng biệt tránh tải không cần thiết để
đánh giá chính xác và những vấn đề ảnh hưởng đến hiệu năng.
2.2.3 Tạo tải (Load Generators )
Để tạo tải nhiều người sử dụng hệ thống như trong thực tế chúng ta sử dụng phần mềm kiểm
thử hiệu năng.
2.2.4 Tạo dữ liệu kiểm thử (Test data generator)
Số lượng bản ghi của hệ thống trong thực tế phải được nghiên cứu đưa ra một con số cụ thể và
chính xác. Khi đó chúng ta có thể tạo được số bản ghi dữ liệu giống như trong thực tế để thực hiện
kiểm thử.
2.3 Xây dựng kịch bản kiểm thử hiệu năng
2.3.1 Chọn kịch bản kiểm thử hiệu năng
Lựa chọn kịch bản trong kiểm thử hiệu năng cần được phân tích và nó chỉ chiếm 20% trong
tổng số kịch bản. Đó là những kịch bản mà người dùng sử dụng thường xuyên khi sử dụng hệ thống.
Thực hiện kiểm thử hiệu năng cho 80% kịch bản còn lại sẽ làm tốn thời gian, công sức mà không
mang lại kết quả mong đợi [5,7].
2.3.2 Viết kịch bản kiểm thử hiệu năng
Kịch bản kiểm thử được tạo ra bằng cách sử dụng phần mềm kiểm thử hiệu năng để ghi lại
hành động của người dùng như trong thực tế. Tuy nhiên do hạn chế của phần mềm mà thời gian nghĩ
kịch bản kiểm thử, mô hình phân bố người sử dụng và kết quả kiểm thử [5].
Thông tin quan trọng nhất trong báo cáo là chi tiết thời gian phản hồi, thông lượng trong các
giao dịch, các chỉ số về mức độ sử dụng tài nguyên phần cứng, lỗi ứng dụng hoặc những lỗi phát sinh
trong khi kiểm thử, v.v… [5].
2.5.2 Các thành phần của báo cáo
Một cách khái quát báo cáo kiểm thử hiệu năng nên có thông tin sau:
1. Mục đích của kiểm thử hiệu năng (cam kết mức độ dịch vụ cung cấp).
2. Môi trường kiểm thử và cấu hình máy chủ.
3. Kịch bản kiểm thử (theo bản kế hoạch).
4. Tóm tắt kết quả kiểm thử.
5. Trực quan hóa thông tin chi tiết hiệu năng hệ thống.
6. Trực quan hóa vấn đề, nguyên nhân ảnh hưởng đến hiệu năng (nếu có).
7. Kết luận về hiệu năng và giải pháp để cải thiện hiệu năng.
2.5.3 Lời khuyên và ví dụ khi tạo báo cáo
Kết quả trình bầy trong báo cáo nên đưa ra các thông tin:
Đưa ra 90% giá trị của thời gian phản hồi không nên dùng giá trị trung bình [5,7].
Sử dụng bảng so sánh thời gian phản hồi (90% giá trị của thời gian phản hồi) để chúng ta
thấy rõ hiệu năng cửa hệ thống ở các mức tải khác nhau [5].
Vẽ biểu đồ để thể hiện sự thay đổi thời gian phản hồi với mức tải khác nhau.
Ví dụ 1: Bảng só sanh thời gian phản hồi.
Bảng 2.2: So sánh thời gian phản hồi [5]
Bảng so sánh thời gian phản hồi (90% giá trị của thời gian phản hồi (sec))
Giao dịch
50 Người
100 người
200 người
300 người
Giao dịch 1
1.2
1.9
- Xây dựng kịch bản thực hiện kiểm thử: xây 2 kịch bản kiểm thử chính để thực hiện kiển thử
tải.
- Chiến lược thực hiện kiểm thử.
- Thực hiện kiểm thử: kiểm thử cơ sở, kiểm thử tải cho trang web với 2 mức tải 50 và 100
người sử dụng đồng thời. Thu thập các số liệu về hiệu năng của trang web trên máy chủ hiện tại: thời
gian phản hồi, thông lượng, mức độ sử dụng CPU, I/O và bộ nhớ trên máy chủ.
- Phân tích kết quả và báo cáo: đưa ra kết luận về hiệu năng máy chủ với các mức tải thực
hiện kiểm thử. Từ kết quả phân tích tôi đưa ra kết luận về vấn đề ảnh hưởng đến việc nâng cao hiệu
năng của hệ thống.
3.2 Giới thiệu trang web quản lý trƣờng học
Trang web quản lý trường học (truongnha.com) là hệ thống thông tin cho các trường học phổ
thông và là cầu nối giữa nhà trường và gia đình. Dịch vụ của trang web phục vụ cho 4 đối tượng:
Nhà trường (Hiệu trưởng/Hiệu phó), Giáo viên, Học sinh/Phụ huynh, Sở giáo dục và đào tạo
3.3 Phân tích mô hình ngƣời sử dụng và mô hình tải
Trong hệ thống này để phân tích mô hình người sử dụng và mô hình tải tôi sẽ sử dụng các số
liệu và biểu đồ mà Google Analytis cung cấp.
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ờ
- Số người truy cập lớn nhất trong 1 tháng là : 726 người/1 tháng
- Số người truy cập lớn nhất trong 1tuần là: 395 người/1 tuần
- Số người truy cập lớn nhất trong 1 ngày là 260/1 ngày
- Số người truy cập lớn nhất trong 1 giờ là : 46 người/ 1 giờ
Phân bố thống kê cơ sở mô hình yêu cầu của người dùng là Self-similar.
3.3.2 Luồng chức năng được sử dụng nhiều nhất
Từ biểu đồ luồng sự kiện của người dùng mà Google Analytics thống kê chúng ta có thể phân
tích được những luồng chức năng chính được sử dụng nhiều nhất trong hệ thống.
Nhập điểm:
Home -> /login/ -> /school/ -> /school/markTable/ -> /logout/
Xuất ra báo cáo:
Home -> /login/ -> /school/ -> /school/report/ -> /logout/
3.3.3 Thời gian trung bình duyệt mỗi trang
Giáo viên nhập
điểm cho học
sinh cho một
môn học (NHẬP
ĐIỂM)
Đăng nhập vào hệ thống
Đăng nhập thành công
Chọn lớp học cần nhập điểm
Chọn thành công được một lớp
cần nhập điểm
Chọn môn cần nhập điểm
Chọn thành công môn cần nhập
điểm
Nhập thông tin điểm cho từng
học sinh
Lần lượt nhập các điểm cho từng
học sinh
Lưu thông tin điểm đã nhập
Lưu thông tin điểm thành công
Thoát khỏi hệ thống
Thoát khỏi hệ thống thành công
2
Giáo viên/ Hiệu
trưởng/Sở giáo
dục và đào tạo
xuất báo cáo
(BÁO CÁO)
Đăng nhập vào hệ thống
Đăng nhập thành công
Vào chức năng báo cáo
Sử dụng phần mềm mã nguồn mở Jmeter để ghi lại các luồng chức năng cho 2 kịch bản: NHẬP
ĐIỂM, BÁO CÁO trên trình duyệt IE.
3.8 Phân tích kết quả kiểm thử
3.8.1 Thời gian phản hồi
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ử
Bảng 90% thời gian phản hồi trong từng kịch bản kiểm thử (ms)
Tên kịch
bản
Trang
1 Người
50 Người
100
Người
NHẬP
ĐIỂM
Trang chủ (/home)
335
240
274
Trang đăng nhập (/login_get)
147
168
138
Đăng nhập hoàn thành (/login/post)
529
649
733
Trang thông tin về trường (/school/)
468
293
322
Trang đăng nhập (/login_get)
352
132
223
Đăng nhập hoàn thành (/login/post)
539
632
832
Trang thông tin về trường (/school/)
258
266
347
Trang chọn loại báo cáo
(/school/report/)
414
128
231
Chọn thông tin học kỳ và môn học
(school/count2/2/1)
195
147
207
Xem thông tin báo cáo
(/school/count2/2/1/14/2/2)
865
704
859
Xuất ra báo cáo ra tập tin excel
541
Trung bình
30% - 60% CPU
40% - 80% CPU 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.
Dựa vào Hình 3.24 so sánh mức sử dụng CPU trên máy chủ với 2 mức tải khác nhau 50 và 100
người dùng đồng thời với cùng kịch bản kiểm thử BÁO CÁO, chúng ta nhận thấy khi số người sử
dụng đồng thời trong kịch bản BÁO CÁO tăng lên thì mức sử dụng CPU của hệ thống cũng tăng lên.
Bảng 3.9: So sánh mức sử dụng CPU với 2 mức tải 50 & 100 người
So sánh mức sử dụng CPU trên máy chủ
Mức sử dụng CPU
Mức tải 50 người
Mức tải 100 người
Lớn nhất
95% CPU
100% CPU
Trung bình
28% - 60% CPU
40% - 80% CPU
Như vậy nếu mức tải tăng 150 – 200 người dùng thì hệ thống gặp rủi ro cao là không phản hồi
được người sử dụng hoặc phản hồi rất chậm do mức sử dụng CPU máy chủ liên tục lên đến 100%.
3.8.3 Sử dụng Disk I/O trên máy chủ
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.
Dựa vào Hình 3.25 trong 2 kịch bản kiểm thử thì trong kịch bản BÁO CÁO hệ thống sử dụng
nhiều đĩa để đọc/ghi hơn khi hệ thống được đặt mức tải 100 người sử dụng đồng thời.
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
So sánh mức sử dụng bộ nhớ trên máy chủ
- Các luồng chức năng trong kịch bản BÁO CÁO sử dụng nhiều CPU trên máy chủ hơn
trong kịch bản NHẬP ĐIỂM.
- Với 100 người dùng đồng thời mức sử dụng CPU trên máy chủ với kịch bản BÁO CÁO là
cao có những lúc lên 100% CPU, mức sử dụng CPU trung bình khá cao từ 40% CPU đến
80% CPU.
Với kết quả phân tích tôi nhận thấy một vấn đề ảnh hƣởng lớn đến hiệu năng hệ thống trên
máy chủ thử nghiệm là việc sử dụng CPU trên máy chủ với kịch bản BÁO CÁO. So sánh mức sử
dụng CPU với 2 mức tải 50 và 100 người dùng trong kịch bản BÁO CÁO thì chúng ta có thể dự
đoán khi tăng mức tải lớn hơn 150- 200 người dùng đồng thời thì hệ thống gặp rủi ro cao là không
phản hồi hoặc phản hồi rất chậm lại yêu cầu người dùng do mức sử dụng CPU trên máy chủ
thường xuyên cao và có những lúc lên đến 100% CPU.
CHƢƠNG 4 TRIỂN KHAI DỊCH VỤ QUẢN LÝ TRƢỜNG HỌC TRÊN DIỆN RỘNG
4.1 Vấn đề ảnh hƣởng hiệu năng của hệ thống
Mức sử dụng CPU trên máy chủ với kịch bản kiểm thử BÁO CÁO là một trong các vấn đề sẽ
ảnh hưởng lớn đến hiệu năng của hệ thống khi triển khai mở rộng.
4.2 Triển khai hệ thống trên diện rộng
Muốn triển khai thành công trên diện rộng chúng ta phải tính toán số người sử dụng đồng thời
hệ thống, số bản ghi dữ liệu, v.v… Những số liệu tính toán và ước lượng này giúp chúng biết được
khi triển khai trên diện rộng hệ thống sẽ phải phục vụ bao nhiêu người sử dụng đồng thời, số bản ghi
dữ liệu lưu trữ trên máy chủ dữ liệu, v.v Dựa vào số liệu này chúng ta đưa ra được yêu cầu hiệu
năng mà hệ thống cần đạt được khi triển khai trên diện rộng.
4.3 Chú ý triển khai hệ thống trên diện rộng
Khi triển khai hệ thống quản lý trường học trên diện rộng, nhà cung cấp phải tính toán đưa ra
yêu cầu hiệu năng của hệ thống phải đáp ứng để phục vụ được nhiều người dùng trong thực tế. Khi
đó đội phát triển phải đưa ra giải pháp và kiểm thử thực hiện kiểm thử để đảm bảo hệ thống đã đạt
hiệu năng mong đợi.
Với kết quả kiểm thử tải ở Chương 3, chúng ta thấy vấn đề ảnh hƣởng đến hiệu năng của hệ
thống là mức sử dụng CPU trên máy chủ trong kịch bản kiểm thử BÁO CÁO. Để cải thiện hiệu
năng của hệ thống lên thì đội phát triển nên xem xét lại thuật toán hoặc giải pháp công nghệ khác để
giảm việc sử dụng CPU trên máy chủ khi thực hiện chức năng xuất báo cáo ra tập tin Excel.
của luận văn là tìm hiểu sử dụng dịch vụ kiểm thử hiệu năng dựa trên điện toán đám mây (cloud
computing) để kiểm thử hiệu năng và so sánh tính hiệu quả với việc sử dụng phần mềm kiểm thử
hiệu năng. Từ đó tìm ra cách để thực hiện kiểm thử hiệu năng hiệu quả hơn cho các hệ thống.
References.
Tiếng Anh
[1]
Emily H. Halili (2008), Apache JMeter, Ltd, Packt Publishing.
[2]
J.D. Meier, Srinath Vasireddy, Ashish Babbar, and Alex Mackman, Improving.NET Application
Performance and Scalability, Microsoft Corporation.
[3]
Stacy Joines, Ruth Willenborg, Ken Hygh(2002), Performance Analysis for Java™ Web Sites,
Addison Wesley.
[4]
J.D. Meier, Carlos Farre, Prashant Bansode, Scott Barber, Dennis Rea (2007), Performance
Testing Guidance for Web Applications, Microsoft Corporation.
[5]
Ramya Ramalinga Moorthy (2000), Software Performance Testing Handbook - A Comprehensive
guide for beginners.
[6]
Ian Molyneaux (2009), The Art of Application Performance Testing, O'Reilly Media, Inc.
[7]
IBM (2008), Using Rational Performance Tester Version 7, IBM corporation.
[8]
https://code.google.com/p/jmeter-plugins/.