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
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.
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 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.
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.
CHƢƠNG 1 TỔNG QUAN VỀ KIỂM THỬ HIỆU NĂNG
1.1 Giới thiệu
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.
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).
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
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.
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].
Nỗ lực kiểm thử được chia ra như sau:
Hình 1.2: Nỗ lực kiểm thử [5].
1.5 Hiểu lầm về kiểm thử hiệu nă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ế.
1.6 Kiểu kiểm thử hiệu năng
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]. 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.
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 [5].
Kiểm thử tải (load test)
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 [2, 5, 6].
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ử 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.
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
Tải công việc của hệ thống cần được phân tích và thiết kế. Điều đó sẽ giúp chúng ta hiểu được
người sử dụng cuối và mô hình sử dụng [5]. Một vài loại tải công việc: tải ổn định (Steady-State
Workload), tải bậc thang (Inclined Workload), tải bùng nổ (Bursty Workload) và tải tại thời gian cụ
thể (Time Specific Workload).
2.1.3 Phân tích tải công việc của hệ thống
Phân tích tải công việc là: xác định tổng tải công việc của hệ thống phải xử lý, loại yêu cầu mà
người dùng gửi đến máy chủ, luồng chức năng được sử dụng thường xuyên, chu kỳ sử dụng của
người dùng, thời gian người dùng cuối sử dụng mỗi lần vào hệ thống, thời gian giữa các giao dịch,
phân loại người sử dụng, số người sử dụng ứng dụng, khi nào máy chủ chịu tải cao nhất [5].
2.1.4 Mô hình hóa tải công việc (workload)
Tuần tự các bước để mô hình hóa tải công việc của ứng dụng:
Bước 1: Dựa vào yêu cầu về hiệu năng để xây dựng mô hình tải công việc
Bước 2: Phân tích tải công việc và xác định mô hình yêu cầu
Bước 3: Xác định phân bố thống kê cơ sở cho mô hình yêu cầu
Bước 4: Thu thập số liệu về sự tiêu thụ tài nguyên phần cứng
Bước 5: Xây dựng mô hình tải
Bảng 2.1: Ví dụ về mô hình tải sau khi xây dựng [5]
Giao dịch
Tần suất
Thời gian CPU (giây)
Thời gian I/O
(giây)
Nhẹ (Light)
10%
6
120
Trung bình (medium)
70%
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ĩ
(think time) và một số tham số khác không được ghi lại trong kịch bản. Vì vậy mà mà kiểm thử viên
phải tự cài đặt lại thời gian nghĩ và tham số khác để đảm bảo kịch bản chạy đúng như trong thực tế.
2.4 Thực hiện kiểm thử hiệu năng (Performance test execution)
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.
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
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ử.
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ủ.
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].
Kiểm thử áp lực (stress test)
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.
2.5 Báo cáo kiểm thử hiệu năng (Performance test reporting)
2.5.1 Báo cáo kiểm thử hiệu năng
Thông tin viết trong báo cáo gồm: yêu cầu hiệu năng cần kiểm thử, tổng quan về hệ thống, các
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
2.1
21
Giao dịch 2
0.7
1.2
1.8
19
Giao dịch 3
0.9
1.6
2
17
Dựa vào Bảng 2.2 người đọc báo cáo dễ dàng thấy được sự thay đổi thời gian phản hồi từng
giao theo số người sử dụng.
Ví dụ 2: Biểu đồ sự thay đổi thời gian phản hồi với mức tải khác nhau
Hình 2.6: Biểu đồ sự thay đổi thời gian phản hồi [5].
Dựa vào Hình 2.6 người đọc báo cáo dễ dàng thấy được trạng thái hiệu năng của hệ thống
tương ướng với số người sử dụng.
CHƢƠNG 3 KIỂM THỬ HIỆU NĂNG DỊCH VỤ PHẦN MỀM QUẢN LÝ TRƢỜNG HỌC
3.1 Mục tiêu
Trong chương này tôi miêu tả các hoạt động và các kết quả tôi đạt được khi áp dụng lý thuyết
để thực hiện kiểm thử hiệu năng cho phần mềm quản lý trường học được xây dựng trên nền web
(truongnha.com) đang được triển khai thử nghiệm. Tất cả kết quả kiểm thử được thực hiện trên máy
chủ ảo ở trang web o:8851.
Nội dụng chính trình bầy trong chƣơng:
- Giới thiệu trang web quản lý trường học.
- Phân tích mô hình người sử dụng và mô hình tải của trang dựa vào các số liệu Google
Analytics cung cấp về người sử dụng hệ thống.
- 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
Theo thống kê của Google Analytics về thời gian trung bình người dùng duyệt một trang:
Bảng 3.1: Thời gian nghĩ (think time) trên các trang
Thời gian nghĩ trên các trang (think time)
Đƣờng dẫn đến trang
Thời gian nghĩ (Think time) (giây)
/login/
34
/school/
39
/school/classes
51
/school/report
37
/school/viewClassDetail/number_id
32
/school/count1/number_id/number_id
90
/school/markTable/number_id1/number_id2
90
3.4 Môi trƣờng kiểm thử
Kiểm thử thử nghiệm được thực hiện với mảy chủ ảo ở trang web o:8851
với cấu hình máy chủ web và cơ sở dữ liệu trên cùng một máy.
3.5 Kịch bản kiểm thử
Bảng 3.3: Miêu tả kịch bản kiểm thử
#
Tên kịch bản
Các bƣớc trong kịch bản
Miêu tả
1
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
Chọn thành công được một lớp
cần nhập điểm
Chọn loại báo cáo: thống kê
điểm cuối kỳ
Chọn thành công thống kê điểm
cuối kỳ
Chọn môn cần xuất ra báo cáo
Chọn thành công môn cần nhập
điểm
Xuất ra báo cáo ra file Excel
Lần lượt nhập các loại điểm cho
từng học sinh
Thoát khỏi hệ thống
Thoát khỏi hệ thống thành công
3.6 Chiến lƣợc kiểm thử
Bảng 3.4: Số lượng người kiểm thử trong kịch bản
Kịch bản kiểm thử
Ngƣời sử dụng
Thời gian tải ổn định
NHẬP ĐIỂM/BÁO CÁO
1
NHẬP ĐIỂM/BÁO CÁO
50
30 phút
NHẬP ĐIỂM/BÁO CÁO
100
30 phút
3.7 Tạo và cài đặt kịch bản kiểm thử sử dụng phần mềm Jmeter
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
269
Trang thông tin về trường
(/school/viewClassDetail/254)
140
281
231
Trang vào điểm
(/school/markTable/41/254)
368
195
200
Trang điểm cho một môn học
(/school/markTable/41/254/3415)
366
415
479
Lưu thông tin điểm
(/school/saveMark)
75
92
76
Thoát khỏi hệ thống (/logout)
92
134
137
BÁO
CÁO
Trang chủ (/home)
215
229
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
582
667
Thoát khỏi hệ thống
96
128
196
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.
Dựa vào Hình 3.21 chúng ta thấy một cách rất trực quan sự khác nhau thời gian phản hồi với
các mức tải khác nhau trong kịch bản NHẬP ĐIỂM.
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.
Dựa vào Hình 3.22 chúng ta thấy một cách rất trực quan sự khác nhau thời gian phản hồi với
các mức tải khác nhau trong kịch bản BÁO CÁO.
3.8.2 Sử dụng CPU trên máy chủ
Hình 3.23: So sánh sử dụng CPU trong kịch bản BÁO CÁO & NHẬP ĐIỂM.
Dựa vào Hình 3.23 ta thấy với cùng mức tải 100 người sử dụng đồng thời như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ớn hơn với kịch bản NHẬP ĐIỂM.
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
So sánh mức sử dụng CPU trên máy chủ
Mức sử dụng CPU
Kịch bản NHẬP ĐIỂM
Kịch bản BÁO CÁO
Lớn nhất
100% CPU
100% CPU
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ủ
Số đĩa đọc/ghi (Disks I/O)
Kịch bản NHẬP ĐIỂM
Kịch bản BÁO CÁO
Lớn nhất
14
36
Trung bình
4 - 6
4- 12
3.8.4 Sử dụng bộ nhớ trên máy chủ
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.
Dựa vào Hình 3.26 ta thấy tần suất sử dụng bộ nhớ trên máy chủ với kịch bản BÁO CÁO
thường xuyên hơn so với kịch bản NHẬP ĐIỂM.
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
So sánh mức sử dụng bộ nhớ trên máy chủ
Mức sử dụng bộ nhớ (memory)
Kịch bản NHẬP ĐIỂM
Kịch bản BÁO CÁO
Lớn nhất
3000 MB
3000 MB
Trung bình
2100 MB - 2500 MB
2200MB – 2500 MB
3.9 Kết luận hiệu năng hệ thống trên máy chủ thử nghiệm
(1) Thời gian phản hồi
Với 2 mức tải 50 và 100 người dùng đồng thời thì thời gian phản hồi các yêu cầu trong 2 kịch
bản NHẬP ĐIỂM và BÁO CÁO tăng không đáng kể.
(2) Sử dụng CPU 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.
Số bản ghi dữ liệu lớn sẽ tiềm ẩn một số vấn đề về hiệu năng của hệ thống. Để tăng độ tin cậy
về hiệu năng hệ thống khi triển khai trên diện rộng thì kiểm thử viên có thể thực hiện kiểm thử khối
lượng (volumn test) với số bản ghi dữ liệu khi triển khai hệ thống trên diện rộng.
KẾT LUẬN
Luận văn đã trình bầy các kiến thức cơ bản về kiểm thử hiệu năng bao gồm khái niệm, các
giai đoạn và hoạt động, công cụ và các kiểu kiểm thử hiệu năng. Luận văn cũng mô tả chi tiết các kỹ
thuật thực hiện kiểm thử hiệu năng. Ngoài ra luận văn còn đưa ra một vài lời khuyên để thực hiện
kiểm thử hiệu năng một cách hiệu quả. Toàn bộ kiến thức về kiểm thử hiệu năng tôi đã tham khảo
chính [5].
Tiếp theo luận văn áp dụng lý thuyết để 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. Trong phần áp dụng này luận văn trình bầy các kết quả phân tích
mô hình tải, mô hình người sử dụng, tìm các luồng chức năng hay được sử dụng, tính toán thời gian
nghĩ (think time), cách sử dụng phần mềm Jmeter để cài đặt kịch bản kiểm thử, thực hiện và thu thập
các kết quả kiểm thử. Từ kết quả thu được tôi đã phân tích đưa ra kết luận về tình trạng hiệu năng hệ
thống và mức sử dụng CPU cao trên máy chủ là nguyên chính ảnh hưởng đến hiệu năng khi muốn
triển khai mở rộng hệ thống. Toàn bộ kết quả đạt được trong phần áp dụng thực nghiệm này là quá
trình bản thân tôi vận dụng lý thuyết, tìm tòi, nghiên cứu, học hỏi từ đồng nghiệp, bạn bè và một vài
dự án trong thực tế.
Dựa vào lý thuyết kiểm thử hiệu năng, kết quả kiểm thử trong phần áp dụng thực nghiêm và
kinh nghiệm bản thân trong thực tế tôi phân tích đưa ra chú ý hay lời khuyên giúp đội phát triển giải
quyết vấn đề ảnh hưởng đến hiệu năng và kiểm thử viên có kế hoạch hoặc chiến lược kiểm thử hiệu
quả để đảm bảo hệ thống thành công khi triển khai trên diện rộng.
Nhóm phát triển và kiểm thử viên luôn phải ý thức việc xây dựng một hệ thống đáp ứng yêu
cầu về hiệu năng sẽ là yếu tố quan trọng quyết định sự thành công dự án trong thực tế.
Hƣớng phát triển
Nhược điểm của phương pháp kiểm thử hiệu năng ở đây là người thực hiện chỉ đo được từ
một máy, không mô phỏng đúng thức tế khi các yêu cầu được gửi đến từ nhiều nơi, có thể trên khắp
thế giới. Hơn nữa các bước cài đặt, vận hành vẫn không đơn giản. Vì vậy hướng nghiên cứu tiếp theo
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]