3.Các thuật 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 độ
Trang 1SEMINAR Môn Kiểm Chứng Phần Mềm
PERFORMANCE TESTING
GV hướng dẫn: ThS.Nguyễn Công Hoan
Sinh viên thực hiện: Nhóm 2
Nguyễn Đức Bình Nguyên MSSV:08520567
Trang 2Nội dung
1 Mục đích thực hiện kiểm thử hiệu năng
2 Khái niệm kiểm thử hiệu năng
3 Các thuật ngữ trong kiểm thử hiệu năng
4 Các hoạt động trong kiểm thử hiệu năng
5 Các kiểu kiểm thử hiệu năng
6 Các kỹ thuật trong kiểm thử hiệu năng
7 Một vài công cụ kiểm thử hiệu năng
8 Ví dụ về kiểm thử hiệu năng trên website Quản lý
trường học
Trang 31.Tại sao phải thực hiện Performance test
Đây là một trong những cách tốt nhất để đảm bảo
hệ thống chịu đựng được sự tải thực tế và đồng
thời phục vụ đa người dùng một cách đáng tin cậy
và kịp thời
Nâng cao khả năng dự đoán khi mà các mức tải trong tương lai sẽ làm kiệt quệ hệ thống web để từ
đó ta có các chiến lược nâng cao hệ thống hợp lý
để duy trì kinh nghiệm người dùng chấp nhận
được
Trang 4• Test hiệu năng giải quyết các vấn đề sau:
– Trả lời câu hỏi hệ thống có thể xử lý các mức chịu tải trong khi vẫn giữ được thời gian hồi đáp
(response time) ở mức chấp nhận được
– Nếu không thì chỉ ra được vào thời điểm nào thì hệ thống bắt đầu hư hỏng và những thành phần nào là nguyên nhân của sự suy thoái đó?
– Hệ thống hiện tại có thể nâng cấp được không, để phù hợp với sự phát triển trong tương lai?
– Khi mà hệ thống gặp lỗi thì nó sẽ gây ra những ảnh hưởng gì lên mục đích kinh doanh của doanh
nghiệp? (company sales or technical support costs)
Trang 52.Khái niệm kiểm thử hiệu năng
• Kiểm thử hiệu năng là hành động kiểm định,
Trang 63.Các thuật 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
Trang 7• 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
Trang 8• 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 / 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
Trang 9• 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
Trang 104.Các hoạt động trong kiểm thử hiệu năng
Trang 11• Kiểm thử hiệu năng có tính linh động rất cao.
• Scott Barker đã 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
Trang 12• Công sức kiểm thử
Báo cáo kiểm thử
5%
Kế hoạch kiểm thử & mô hình tải
Trang 135.Các kiểu kiểm thử hiệu năng
Kiểm thử cơ sở (baseline test): là kiểm thử được
xây dựng đánh giá hiệu năng ứng dụng với tải một
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) :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
Trang 14• Kiểm thử tải (load test) : đượ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
– 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.
• Kiểm thử áp lực (stress test) :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
Trang 15• Kiểm thử Spike (spike test): 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
– 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) :tập trung vào
đánh giá hiệu năng của hệ thống với mức tải đị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ế.
Trang 16• Kiểm thử cô lập nghẽn cổ chai (bottleneck isolation
test) :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
• Kiểm thử khối lượng (volume test) :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
Trang 176.Các kỹ thuật kiểm thử hiệu năng
Xác định tải công việc của hệ thống (workload
of system)
Cài đặt môi trường kiểm thử hiệu năng
Xây dựng kịch bản kiểm thử hiệu năng
Thực hiện kiểm thử hiệu năng (Performance test execution)
Báo cáo kiểm thử hiệu năng (Performance test reporting)
Trang 18Xác định tải công việc của hệ thống
• Đị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
– G.Kotis :“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 “
Trang 19• Kiểu tải:
– tải ổn định (Steady-State Workload)
– tải bậc thang (Inclined Workload)
– tải bùng nổ (Bursty Workload)
– tải tại thời gian cụ thể (Time Specific Workload)
Trang 20• Phân tích tải công việc hệ thống:là việc xác định các yếu tố sau đây
– 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
Trang 21• Mô hình hóa tải công việc:
– 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
Trang 22• Ví dụ về mô hình tải sau khi áp dụng
Giao dịch Tần suất Thời gian
CPU(giây) Thời gian I/O(giây)
Trung
Trang 23 Cài đặt môi trường kiểm thử hiệu năng
• Môi trường kiểm thử:
– 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
• 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
Trang 24• 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
• 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ử
Trang 25 Xây dựng kịch bản kiểm thử hiệu
năng
• 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à thường xuyên được sử dụng
• 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ế
Trang 26 Thực hiện kiểm thử hiệu năng
(Performance test execution)
• 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
– 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
Trang 27• 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ủ
Trang 28• 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
– 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.
Trang 29 Báo cáo kiểm thử hiệu năng
(Performance test reporting)
• Báo cáo kiểm thử hiệu năng
– yêu cầu hiệu năng cần kiểm thử
những lỗi phát sinh trong khi kiểm thử
– v.v…
Trang 30• Các thành phần của báo cáo
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.
Trang 31• Lời khuyên và ví dụ khi tạo báo cáo
– Đư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 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
– 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
Trang 32So sánh thời gian phản hồi
Trang 33Sự thay đổi thời gian phản hồi với các mức tải
khác nhau
Trang 347.Các công cụ trong kiểm thử hiệu năng
Trang 35Apache JMeter
• Đây là một công cụ hỗ trợ Load testing
• Mã nguồn mở Java
• Nó được xem là một công cụ kiểm thử hiệu năng và có thể
được tích hợp với test plan.
• Công cụ này có khả năng được nạp vào máy chủ hoặc mạng để kiểm tra hiệu năng và phân tích hoạt động của nó dưới các
điều kiện khác nhau
• Còn được sử dụng để kiểm thử chức năng của Servlets,Perl Scripts và các đối tượng JAVA.
• Cần JVM 1.4 hoặc cao hơn
• Chạy dưới hệ điều hành UNIX hoặc Windows
Trang 36• Là phần mềm kiểm thử hiệu năng, dùng để đo
lường và phân tích hiệu năng của website.
• Phân tích hiệu năng bằng cách tăng cường giao
thông cho website và tăng chịu tải nhờ đó biết
được tổng số người dùng có thể được phục vụ
trong một thời điểm
• Được phát triển bởi công ty Pháp Netosys và được viết bằng JAVA
• Chạy dưới hệ điều hành Windows, Linux và Solaris
Trang 388.Ví dụ về kiểm thử hiệu năng
Trang 39Phân tích mô hình người sử dụng và mô hình
tải
• Các dữ liệu được Google Analytic cung cấp:
– Số người truy cập lớn nhất trong 1 tháng/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ờ
Trang 40– Luồng chức năng được sử dụng nhiều nhất
• Nhập điểm:
– Home -> /login/ -> /school/ -> /school/markTable/ -> /logout/
• Xuất ra báo cáo:
– Home -> /login/ -> /school/ -> /school/report/ -> /logout/
Trang 41– Thời gian trung bình duyệt mỗi trang
Đường dẫn đến trang Thời gian nghĩ(think
Trang 42Kịch bản kiểm thử
Trang 43Tạ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
Trang 44Phân tích kết quả kiểm thử
• Thời gian phản hồi
Trang 45Thời gian phản hồi của kịch bản Nhập điểm
Trang 46Thời gian phản hồi của kịch bản Báo cáo
Trang 47• Sử dụng CPU trên máy chủ
Trang 48So sánh mức sử dụng CPU với kịch bản NHẬP
ĐIỂM & BÁO CÁO
Trang 49Sử dụng CPU với tải 50 và 100 người dùng với kịch bản
BÁO CÁO
Trang 50So sánh mức sử dụng CPU với 2 mức tải 50 &
100 người
Trang 51• Sử dụng Disk I/O trên máy chủ
Trang 52So sánh số đĩa đọc/ghi với kịch bản NHẬP ĐIỂM
& BÁO CÁO
Trang 53So sánh số đĩa đọc/ghi với kịch bản NHẬP ĐIỂM
& BÁO CÁO
Trang 54• Sử dụng bộ nhớ trên máy chủ
Trang 55So sánh sử dụng bộ nhớ với kịch bản NHẬP ĐIỂM &
BÁO CÁO
Trang 56So sánh sử dụng bộ nhớ với kịch bản NHẬP
ĐIỂM & BÁO CÁO
Trang 57Kết luận hiệu năng hệ thống trên máy chủ
thử nghiệm
• 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ể.
• 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.
Trang 58• 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.
Trang 59Muốn triển khai ứng dụng trên diện rộng
• 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… từ đó đưa ra
được yêu cầu hiệu năng mà hệ thống cần đạt.
• 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 cải thiện thuật toán hoặc giải pháp công nghệ khác để giảm thiểu việc sử dụng CPU.
Trang 60• THANK YOU!