1. Trang chủ
  2. » Luận Văn - Báo Cáo

Kiểm thử hiệu năng dịch vụ phần mềm quản lý trường học

68 1,4K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 2,26 MB

Nội dung

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 n

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

Trang 2

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

Trang 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

Trang 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

Trang 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

Trang 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

Trang 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

Trang 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

Trang 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

Trang 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

Trang 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 để

Trang 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ủ

Trang 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

Trang 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

Trang 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

Trang 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ử

Trang 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]

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

làm tăng hiệu năng của hệ

thống

Xây dựng kiểm thử hiệu năng sẽ không làm tăng hiệu năng của hệ thống Nó giúp xác 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

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

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

4 Thời gian phản hồi (response

time) của một hệ thống theo

một chuẩn

Không có một chuẩn nào cho thời gian phản hồi Thời gian phải hồi được đưa ra dựa trên khả năng của phân cứng, phần mềm

Trang 18

5 Kiểm thử hiệu năng cho một

ứng dụng thực hiện một lần

trong thời gian phát triển

không quan tâm khi có nhiều

mô-đun của ứng dụng đã được

thiết kế lại

Kiểm thử hiệu năng cần thực hiện lại bất cứ khi nào có sự thay đổi phần mềm hoặc phần cứng

6 Kiểm thử hiệu năng có thể

thực hiện song song trong khi

kiểm thử chức năng

Kiểm thử hiệu năng cần thực hiện trong một

hệ thống đáng tin cậy chỉ sau khi hoàn thành 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)

Trang 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

Trang 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

Trang 21

Khi 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 (trình bầy chi tiết trong Chương 3), tôi cũng đã thực hiện các loại kiểm thử sau: kiểm thử cơ sở, kiểm thử tiêu chuẩn và kiểm thử tải Trải nghiệm trong thực tế cho tôi thấy thực hiện kiểm thử cơ sở là rất cần thiết Không phải cứ sử dụng phần mềm kiểm thử hiệu năng để ghi lại kịch bản kiểm thử thì kịch bản luôn chạy đúng Do giới hạn của phần mềm kiểm thử mà nhiều khi kiểm thử viên phải tốn thời gian để chỉnh sửa cài đặt các tham số, biến dữ liệu động như Cookie, Section Id, v.v… cho kịch bản để đảm bảo chạy đúng như trong thực tế Trong khi kiểm thử tải cho hệ thống này tôi nhận thấy thời gian phản hồi, thông lượng trong kết quả kiểm thử nhận được chịu ảnh hưởng từ cấu h́nh máy ch ạy kịch bản kiểm thử và băng thông mạng trong khi thực hiện

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 Phần mềm

có bản quyền thường hỗ trợ nhiều chức năng, kết quả kiểm thử hiệu năng được thể hiện trực quan trong các biểu đồ giúp ta dễ dàng phân tích đánh giá hiệu năng, và kết quả này có độ tin cậy cao Còn các phần mềm mã nguồn mở thì thường hạn chế về chức năng, ít dạng biểu đồ biểu diễn kết quả kiểm thử và đôi khi khó sử dụng Những

tổ chức có tiêu chuẩn về hiệu năng cho các ứng dụng và họ mong muốn kết quả kiểm thử có độ chính xác, tin cậy cao thì thích sử dụng những phần mềm có bản quyền như

HP Load Runner, HP performance Center, Segue’s SilkPerformer, Empirix E-Test, Radview Webload, Compuware QA-Load, v.v…Còn với những tổ chức nhỏ do lợi nhuận thì phần mềm mã nguồn mở là lựa chọn duy nhất Một vài phần mềm mã người

mở hay được các công ty này lựa chọn sử dụng là Jmeter, OpenSTA

Một số công cụ kiểm thử hiệu năng thông dụng:

 HP’s Load Runner/Performance Center (có bản quyền)

 Radview’s Webload (có bản quyền)

 Compuware’s QAload (có bản quyền)

 Borland’s SilkPerformer (có bản quyền)

 Empirix’s e-Load (có bản quyền)

 Open STA (mã nguồn mở)

 Jmeter (mã nguồn mở)

 Grinder (mã nguồn mở)

Trang 22

1.7.2 Tiêu chuẩn để chọn một công cụ kiểm thử hiệu năng

Để chọn được một công cụ kiểm thử hiệu năng phù hợp với ứng dụng thì chúng

ta nên làm những bước sau [5]:

1 Xem xét những giao thức mà công cụ hỗ trợ Công cụ có hỗ trợ cho ứng dụng Web và ứng dụng khách máy -chủ máy

2 Kiểm tra xem công cụ có cung cấp chức năng tạo kịch bản kiểm thử

3 Kiểm tra công cụ có cung cấp những thuộc tính để xác định những phiên giao dịch, cung cấp thời gian người sử dụng chờ (user think time), kiểm thử dữ liệu, thao tác với máy chủ để xem sự thay đổi của các biến và nhìn thấy những kịch bản được thực hiện trên trang ứng dụng

4 Kiểm tra công cụ có lựa chọn thiết lập trạng thái tăng, giảm và ổn định trong khi thực hiện kiểm thử

5 Kiểm tra công cụ có chức năng để quản lý tài nguyên hệ thống trong khi kiểm thử

6 Kiểm tra có thể giám sát thông qua hệ thống tích hợp khác

7 Kiểm tra công cụ có cung cấp kết quả kiểm thử theo một định dạng dễ đọc (định dạng html or đoc)

8 Kiểm tra công cụ có cung cấp đầy đủ thông tin về Hits/giây, dung lượng (phiên giao dịch/giây và bytes/giây), mô phỏng nhiều người dùng/giây, giám sát tài nguyên hệ thống và thông tin chi tiết về lỗi /giây

9 Công cụ không nên chiếm nhiều tài nguyên trên máy khách nó làm cho kết quả kiểm thử tải không thực tế

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 Phần mềm kiểm thử sẽ mô phỏng người sử dụng cuối đúng như kịch bản kiểm thử và tính toán đưa ra các thông tin chi tiết về hiệu năng của hệ thống Từ kết quả đó kiểm thử viên phải phân tích đưa

ra kết luận về hiệu năng hiệu tại của hệ tống Kết luận đó bao gồm hiệu năng hiện tại, các yếu tố ảnh hưởng đến hiệu năng của hệ thống và nguyên nhân các vấn đề Như vậy 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]

Trong phần áp dụng thực nghiệm, để 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 tôi cũng đã tìm hiểu một số công cụ và cuối cùng chọn phần mềm mã nguồn mở Jmeter Công cụ có đầu đủ chức năng giúp tôi có thể thực hiện được kiểm thử cở sở, kiểm thử tiêu chuẩn và kiểm thử tải Trong thực tế

có nhiều công ty đã sử dụng công cụ này để kiểm thử hiệu năng do phần mềm này có nhiều tài liệu hướng dẫn sử dụng và không mất phí khi sử dụng Ngoài ra cộng đồng

Trang 23

mã nguồn mở cũng đã xây dựng thêm một số thư viện mà có thể tích hợp với Jmeter

để kiểm thử viên có thể thu thập thêm nhiều số liệu khác nhau cho hiệu năng hệ thống Trong phần thực hiện kiểm thử tải tôi cũng sử dụng một thư viện mở rộng của Jmeter

để thu thập các số liệu về mức độ sử dụng CPU, đọc/ghi và bộ nhớ trên máy chủ

Trang 24

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]

Tải công việc có thể là tự nhiên hoặc nhân tạo Tải công việc tự nhiên hay là tải công việc thực tế mà máy chủ nhận được khi ứng dụng được triển khai sử dụng trong thực tế Tải công việc nhân tạo được tạo ra bằng cách sử dụng phần mềm kiểm thử hiệu năng mô phỏng hành vi của người sử dụng trong thế giới thực khi họ tương tác với hệ thống và nó giống với mô hình tải công việc tự nhiên Đặc điểm của tải nhân tạo là có thể điều khiển được

Tải công việc được tạo ra khi kiểm thử giống phải giống tải công việc trong thực

tế của hệ thống Nếu có nhiều sự chêch lệch giữa tải kiểm thử và tải công việc trong thực tế thì kết quả kiểm thử sẽ không thực sự là hiệu năng của hệ thống khi được đưa vào sử dụng trong thực tế

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] Nếu tải công việc của máy chủ không được phân tích một cách đúng đắn và cặn kẽ thì kiểm thử hiệu năng có thể tạo một tải công việc khác với tải trên máy chủ trong thực tế 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)

Tải công việc ổn định

Tải ổn định là một tải không đổi theo số người sử dụng hệ thống cùng lúc hoặc cùng một hành động Số người sử dụng ứng dụng ở bất kỳ thời điểm nào là một hằng

số Nó không mô tả tải sử dụng trong thời gian thực, tải ổn định được sử dụng kiểm thử tính ổn định của hệ thống

Hình 2.1: Tải công việc ổn định [5]

Trang 25

Tải công việc sườn dốc (inclined workload)

Tải công việc sườn dốc tăng theo số lượng người đang sử dụng hoặc số người cùng thực hiện một hành động trên hệ thống Kiểm thử bắt đầu với số người sử dụng nhỏ nhất và số người dụng ảo tăng định kỳ từng bước một Kiểm thử tải sử dụng mô hình tải sườn dốc để xác định số người dùng lớn nhất mà hệ thống hỗ trợ

Hình 2.2: Tải công việc sườn dốc [5]

Tải công việc bùng nổ (bursty workload)

Tải bùng nổ miêu tả truy cập cao điểm đột ngột của hệ thống trong một khoảng thời gian ngắn Tải này được tạo ra khi kiểm tra hiệu năng của hệ thống trong điều kiện tải tăng đột ngột Thỉnh thoảng trong khi kiểm thử ức chế, tải bùng nổ được sử dụng để xác định hiệu năng hệ thống khi truy cập lên đến đỉnh điểm

Hình 2.3: Tải công việc bùng nổ [5]

Tải công việc theo thời gian

Với một ứng dụng được truy cập bởi nhiều người dùng ở những vùng địa lý khác nhau, ở những múi giờ khác nhau thì tải công việc thực tế sẽ rất khác nhau theo thời gian Mô hình người sử dụng sẽ có mức cao và thấp lặp lại trong ngày và tải lớn nhất của ứng dụng trong khoảng thời gian chồng chéo múi giờ Khi đó tải công việc của ứng dụng nên được mô tả theo thời gian

Trang 26

Hình 2.4: Tải công việc theo thời gian [5]

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 trước khi tiến hành kiểm thử hiệu năng là việc cần thiết phải làm để đảm bảo tải công việc tạo ra trong kiểm thử giống tải công việc của hệ thống khi triển khai trong thực tế [5, 7] 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] Để phân tích tải công việc của hệ thống chúng ta có thể dựa vào mô hình hành vi khách hàng hoặc phân tích tập tin web log (nếu trang web đã được đưa vào sử dụng), v.v… Dựa vào mô hình hành vi khách hàng chúng ta có thể xác định được khoảng thời gian giữa các phiên giao dịch, số lượng người dùng, luồng sự kiện được sử dụng thường xuyên và chu kỳ sử dụng cửa người sử dụng

Phân tích tập tin log trên máy chủ của trang web có thể xác định: số người sử dụng trang web, tổng số yêu cầu gửi về máy chủ (ví dụ: hình ảnh, trang html), số trang được hiển thị (number of page views), ngày nhiều người sử dụng nhất, giờ nhiều người đồng thời sử dụng, số byte được truyền từ máy chủ tới máy khách ở bất kỳ thời điểm nào (throughput/Bytes transferred)

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

Chúng ta dựa vào yêu cầu hiệu năng để mô hình hóa tải công việc cho hệ thống cần kiểm thử Với các yêu cầu hiệu năng khác nhau thì mô hình tải công việc để xác định trước khi kiểm thử cũng khác nhau Ví dụ, nếu chúng ta xác định tải công việc

của máy chủ để xác nhận hệ thống có thể xử lý giao dịch tăng 10% vào cuối năm, khi

đó tải công việc cần được tiến hành đánh giá số lượng khách hàng, số giao dịch xử lý trong 1 giây, tình trạng sử dụng CPU và IO, tỷ lệ yêu cầu gửi đến và thời gian nghĩ (think time) của người sử dụng Nếu mục tiêu của kiểm thử hiệu năng là ước tính thời

Trang 27

gian phản hồi (response time) cho dự báo kinh doanh tăng 20% người sử dụng, khi đo tải công việc được thiết lập dựa vào các thông số của kiểm thử trước đây Một số chỉnh sửa trong các thông số trước đây được thực hiện trước khi thực hiện kiểm thử

Bước 2: Phân tích tải công việc và xác định mô hình yêu cầu

Nếu chúng ta không hiểu khối lượng công việc của ứng dụng thì mô hình tải công việc không thể được xây dựng Các luồng chức năng, kiểu khách hàng truy cập, mục đích của người sử dụng cuối, tổng số người sử dụng ứng dụng phải được kiểm thử viên tìm hiểu rõ Ngoài ra kiểm thử viên phải tìm các tình huống ảnh hưởng lớn đến tải công việc của hệ thống Đặt mình vào ví trí người sử dụng cuối của ứng dụng để đưa

ra các thông tin như các chức năng hay được sử dụng, thời gian phản hồi mong muốn của người dùng, số giao dịch trong giờ cao điểm và giờ nghỉ, v.v…Phân tích hệ thống trong nhiều tình huống và theo mục đích sử dụng khác nhau sẽ giúp chúng ta hiểu rõ hơn về tải công việc hệ thống Nếu ứng dụng đã được triển khai sử dụng trong thực tế thì tập tin log trên máy chủ chứa nhiều thông hữu ích để phân tích tải, mô hình yêu cầu nhận được trên máy chủ [5]

Bước 3: Xác định phân bố thống kê cơ sở cho mô hình yêu cầu

Kiểm thử viên cần xác định phân bố thống kê cho mô hình yêu cầu của người sử dụng ứng dụng Từ phân bố này giúp chúng ta tính toán được tải công việc lớn nhất trên máy chủ Ví dụ, hai ứng dụng A1, A2 có cùng tải mục tiêu là 1000 người sử dụng nhưng chúng có phân bố thống kê khác nhau: A1- Possion, A2- Self similar Khi đó tải lớn nhất cần kiểm thử cho hai ứng dụng A1 và A2 là khác nhau Như vậy phân tích mô hình phân bố thống kê cho tải của hệ thống sẽ cho ta biết tải lớn nhất của hệ thống cần thực hiện kiểm thử

Bước 4: Thu thập số liệu về sự tiêu thụ tài nguyên phần cứng

Theo tập tin log trên máy chủ chúng ta biết được các giao dịch diễn ra giữa máy khách và máy chủ của hệ thống Đặt hệ thống trong điều kiện tải thấp và thực hiện các giao dịch từ đó xác định được số liệu về việc sử dụng CPU và I/O của hệ thống

Bước 5: Xây dựng mô hình tải

Chúng ta đã xác định được các giao dịch trên máy chủ và yêu cầu về sử dụng tài nguyên phần cứng Phụ thuộc và mức độ trừu tượng và độ chính xác chúng ta sẽ xây dựng mô hình tải mong muốn Nếu cần độ chính xác cao, chúng ta sẽ phân vùng dữ liệu thành nhiều lớp dựa vào tài nguyên sử dụng, sự phân bố địa lý hoặc hiệu năng sử dụng

Trang 28

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)

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ử

Kiểm thử viên phải tìm hiểu môi trường sản phẩm hay là môi trường triển khai

hệ thống trong thực tế Ngoài ra kiểm thử viên nên biết kiến trúc triển khai ứng dụng trọng môi trường sản phẩm và yêu cầu đội phát triển cài đặt môi trường kiểm thử giống với sản phẩm để thực hiện kiểm thử hiệu năng [5]

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

Ví dụ nếu một ứng dụng ba tầng triển khai trong môi trường kiểm thử lại được triển khai hai tầng trong môi trường sản phẩm thì hiệu năng của hệ thống trong thực tế

sẽ khác rất nhiều hiệu năng đã được kiểm thử

Hầu hết kiểm thử hiệu năng được xậy dựng trong môi trường có cấu hình thấp hơn cấu hình máy chủ trong thực tế do vấn đề về tài chính Mặc dù vậy chúng ta nên xây dựng kiểm thử hiệu năng trong môi trường giống như cấu hình máy chủ của sản phẩm 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 ứ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ế Kỹ sư kiểm thử hiệu năng cần phải tìm hiểu môi trường, kiến trúc triển khai ứng dụng và đảm bảo đúng phiên bản phần mềm (phiên bản ứng dụng, phiên bản máy chủ, hệ điều hành, thư viện nếu có…) được sử dụng triển khai trong môi trường kiểm thử giống như môi trường sản phẩm Phần mềm (máy chủ web, máy chủ ứng dụng hoặc phiên bản phần mềm máy chủ cơ

sở dữ liệu, điều kiện bản quyền, mức độ log, những quy trình khác…), phần cứng (CPU, bộ nhớ và cấu hình đĩa), mạng (lưu lượng và chi tiết băng thông mạng) khác nhau trong hai môi trường kiểm thử và sản phẩm cần được xác định và lưu lại để tra cứu trong tương lai

Trang 29

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 Ngoài ra nếu kiểm thử trong cùng môi trường nó sẽ làm ảnh hưởng đến những hoạt động khác trong quá trình phát triển dự án nếu trong quá trình kiểm thử tải máy chủ bị lỗi

Nếu mục tiêu của kiểm thủ là xác định yêu cầu về băng thông hỗ trợ người dụng thì cần kiểm thử hiệu năng trong một mạng riêng biệt Nếu mạng trong quá trình kiểm thử có giao dịch khác thì tổng dữ liệu được gửi qua lại giữa máy chủ và máy khách không đảm bảo độ chính xác cao Trong trường hợp này cách tốt nhất là xây dựng một mạng LAN riêng biệt và chỉ có máy chủ và máy kiểm thử đặt trong mạng LAN đó

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 Hầu hết các phần mềm kiểm thử hiệu năng đều có chức năng tạo tải được gọi là Load Generator Khi chúng ta cài đặt mô phỏng 10 người sử dụng hệ thống thì phần mềm kiểm thử tạo 10 luồng hoặc tiến trình gửi yêu cầu từ máy khách đến máy chủ theo thời gian nghĩ (think time) đã được cài đặt trong kịch bản kiểm thử Chúng ta có thể sử dụng nhiều tiện ích khác của các phần mềm như cài đặt tăng dần số người sử dụng hệ thống theo một khoảng thời gian, thời gian thực hiện kiểm thử, v.v…

Ví dụ cần kiểm thử hiệu năng của một hệ thống với 1000 người sử dụng đồng thời Chúng ta sẽ sử dụng một phần mềm kiểm thử hiệu năng, cài đặt trên 5 máy khác nhau và cấu hình 200 người dùng ảo trên mỗi máy Khi đó chúng ta sẽ cấu hình chạy kịch bản theo lịch đặt trước Việc lên lịch kiểm thử giúp chúng ta có thể điều khiển tải theo thời gian, vùng địa lý khác nhau, v.v… Theo thời gian đã cài đặt thì phần mềm tự động tạo người sử dụng ảo sử dụng hệ thống theo kịch bản kiểm thử Như vậy các phần mềm kiểm thử hiệu năng giúp ta tạo và cài đặt tải cho hệ thống theo đúng kịch bản kiểm thử

2.2.4 Tạo dữ liệu kiểm thử (Test data generator)

Trong kiểm thử hiệu năng, hầu hết thời gian kiểm thử diễn ra trên máy cá nhân

do đó số bản ghi dữ liệu trong kiểm thử sẽ ít hơn dữ liệu của hệ thống trong thực tế 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ử

Thực hiện kiểm thử hiệu năng với dữ liệu như trong thực tế giúp ta đánh giá đúng hiệu năng của hệ thống và tìm được những vấn đề tìm ẩn trong truy vấn dữ liệu (nếu có) Thật vậy chúng ta có thể thấy thời gian truy vấn dữ liệu có thể không đáng kể với

Trang 30

1000 bản ghi nhưng khi dữ liệu có 10 000 bản ghi thì thời gian truy vấn sẽ ảnh hưởng nhiều phụ thuộc vào các sắp xếp bản ghi, các chỉ mục hoặc câu truy vấn dữ liệu

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

Kiểm thử chức năng là kiểm thử tính đúng, sai của tất cả các luồng chức năng trong hệ thống Không giống như kiểm thử chức năng, kiểm thử hiệu năng chỉ kiểm thử hiệu năng của hệ thống trên một vài kịch bản mà được sử dụng nhiều nhất Việc chọn kịch bản kiểm thử hiệu năng ảnh hưởng tích cực đến việc đánh giá hiệu năng hệ thống [2, 5]

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ế Kiểm thử viên nên lưu ý một

số chú ý sau để tạo hoặc chỉnh sửa kịch bản [5]:

 Kịch bản nên có tên để tiện cho việc thu thập và lưu lại thông tin về thời gian phản hồi, thông lượng (throughput) Cần đặt tên theo quy ước để dễ dàng tham chiếu đến giao dịch cụ thể

 Cung cấp quy ước đặt tên phù hợp cho mỗi hành động của người sử dụng để xác định thời gian phản hồi cho tất cả các giao dịch

 Cài đặt thời gian nghĩ (think time) hoặc thời gian đợi (waiting time) giữa các hành động cửa người sử dụng để mô phỏng đúng hành vi của người sử dụng cuối trong thế giới thực

 Cung cấp các biến trong kịch bản để phục vụ cho những liên kết động của dữ liệu và cho những người dùng khác nhau

 Kiểm soát giá trị động được tạo bởi máy chủ như giá trị phiên làm việc (secssion) để tạo kịch bản đủ lớn cho việc mô phỏng nhiều người sử dụng

 Có thể sửa đổi logic kịch bản để kiểm soát hành vi người sử dụng mà vẫn đảm bảo mô phỏng đúng hành vi của người dùng

Trang 31

Cài đặt thời gian đợi (think time) giữa mỗi giao dịch rất quan trọng để tạo ra tải trên máy chủ như trong thực tế Chúng ta có thể xác định thời gian nghĩ bằng các thảo luận hoặc khảo sát với nhà phân tích kinh doanh, người sử dụng cuối hoặc từ việc phân tích tập tin log trên máy chủ (nếu hệ thống đã được dưa vào sử dụng trong thực tế) Thời gian đợi có thể đặt ngẫu nhiên khoảng 20%- 25% để phù hợp với người dùng nhanh và chậm [5]

Ví dụ giả sử rằng bạn có 2 giao dịch trong kịch bản, giao dịch đăng nhập (login) với thời gian đợi 10 giây, sau đó là giao dịch thoát (logout) Nếu thời gian nghĩ (think time) được thay là 5 giây thì yêu cầu đăng nhập và thoát được gửi tới máy chủ tăng, thì tải trên máy chủ sẽ cao Nếu thời gian nghĩ là 20 giây tải trên máy chủ giảm Cung cấp thời gian nghĩ lớn (think time) giảm tải máy chủ, giảm thời gian nghĩ (think time) tăng tải máy chủ Như vậy đặt thời gian đợi khi xây dựng kịch bản là rất quan trọng Nếu thời gian đợi (think time) được đặt không đúng thì là tải trên máy chủ trong khi thực hiện kiểm thử sẽ sai mặc dù kiểm thử được tạo

Từ máy chủ có thể có một vài dữ liệu động được tạo ra cho mỗi người dùng và

có thể là duy nhất cho mỗi người dùng Ví dụ session id của mỗi người dùng là duy nhất Nếu máy chủ cung cấp sesion id của người sử dụng trong khi phản hồi lại yêu cầu từ máy khách Khi đó kịch bản không thể chạy đúng nếu chạy với id của người dùng khác Giá trị động có thể được kiểm soát trong kịch bản bằng các cách khác nhau phụ thuộc vào công cụ kiểm thử

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 qua

việc phân tích mô hình người sử dụng hoặc từ tập tin log trên máy chủ

Bước 2: Thiết kế ca kiểm thử cùng với các tham số như chiến lược tăng (ramp

up), thời gian kiểm thử, cài đặt thời gian đợi (think time), kịch bản kiểm thử được thực hiện, các điều kiện tải, các loại kiểm thử được tiến hành cùng với chuẩn qua/lỗi Dựa vào ca kiểm thử và sử dụng nó để lên kế hoạch cho những phần còn lại của hoạt động kiểm thử

Bước 3: Xác định phần mềm kiểm thử hiệu năng và chuẩn bị dữ liệu kiểm thử

Tìm kiếm một phần mềm trên thị trường (có bản quyền hoặc mà nguồn mở) dựa vào ngân sách và các chức năng của phần mềm Sử dụng phần mềm đã lựa chọn và phát triển kịch bản kiểm thử mô phỏng người sử dụng truy cập thực tế Tạo đủ dữ liệu kiểm thử trong kịch bản để giả lập nhiều người dùng khác nhau sử dụng dữ liệu khác nhau

Bước 4: Đảm bảo môi trường kiểm thử đã sẵn sàng, không có người sử dụng truy

cập ứng dụng trong khi thực hiện kiểm thử và máy chủ được cách ly với bất kỳ sử dụng khác

Trang 32

2.4.2 Phương pháp thực hiện kiểm thử hiệu năng

Sử dụng phần mềm kiểm thử và kịch bản đã tạo sẵn chúng ta thực hiện kiểm thử hiệu năng cho hệ thống Trong thời gian thực hiện kiểm thử hiệu năng, đặt máy chủ trong một tải ổn định khoảng 15- 30 phút phụ thuộc vào mô hình sử dụng Kiểm tra hiệu năng của hệ thống với nhiều tình huống trong các điều kiện tải khác nhau và sau

đó đưa ra số liệu hiệu năng về thời gian phản hồi, thông lượng và sử dụng tài nguyên của máy chủ Kịch bản kiểm thử nên được cài đặt có đủ thời gian cho việc tăng số người sử dụng trước khi đặt hệ thống trong tải mong đợi trong một khoảng thời gian Tất cả các đánh giá về hiệu năng máy chủ chỉ được thực hiện trong khoảng thời gian tải ổn định [5]

Ví dụ: Đánh giá hiệu năng của ứng dụng với 100 người dùng thực hiện 3 kịch bản:

(1) Kịch bản giao dịch A – 60% tải mục tiêu

(2) Kịch bản giao dịch B – 30% tải mục tiêu

(3) Kịch bản giao dịch C – 10 % tải mục tiêu

Theo phân tích kịch bản A được thực hiện 6 lần trong 1 giờ, kịch bản B thực hiện

2 lần trong 1 giờ và kịch bản C được thực hiện 1 lần trong 1 giờ Biết rằng tải cao điểm trên máy chủ là 200 yêu cầu/1 giây trong giờ cao điểm Chúng ta có một chiến lược kiểm thử như sau:

Hình 2.5: Ví dụ chiến lược kiểm thử tải [5]

Dựa vào Hình 2.5 ta thấy chiến lược kiểm thử tải là: đặt hệ thống trong tải mục tiêu 100 người truy cập hệ thống trong khoảng thời gian tải ổn định là 40 phút Trong thời gian tải ổn định khi cả 3 kịch bản giao dịch đang thực hiện trong 10 phút (từ 40:00 đến 50:00 mm:ss), tải máy chủ được tăng lên với 200 yêu cầu/giây

Kịch bản kiểm thử ở trên đã đạt yêu cầu kiểm thử hiệu năng của ứng dụng và nó cung cấp hiệu năng hệ thống khi sử dụng hệ thống thực Nhưng kịch bản ở trên đã bỏ qua là mực độ tin tưởng của máy chủ khi thao tác 200 yêu cầu/1 giây Nó mới chỉ đưa

ra một trường hợp trong khoảng thời gian 10 phút cả 3 kịch bản đang được thực hiện

Do đó chúng ta có thể thực hiện một kiểm thử khác là chạy cả 3 kịch bản giao dịch cùng nhau ít nhất 20 – 30 phút và tăng tải máy chủ lên 200 yêu cầu/1 giây để thu thập thêm thông tin về số liệu, thời gian phản hồi, sử dụng tài nguyên máy chủ

Trang 33

Khi thực hiện kiểm thử tải nên tập trung đánh giá hiệu năng máy chủ trong mô hình sử dụng thực Để tạo độ tin tưởng cao khi phân tích hiệu năng thì nên thực hiện 3 đến 4 mẫu kiểm thử và thu thập các số liệu về thời gian phản hồi, thông lượng, mức độ

sử dụng CPU Từ đó so sánh, đánh giá và đưa ra kết luận chính xác về hiệu năng của

hệ thống

2.4.3 Lời khuyên khi thực hiện kiểm thử tải và kiểm thử áp lực

Kiểm thử tải (load test)

Thực hiện ít nhất 3 vòng kiểm thử tải cần lên kế hoạch trước khi đặt hệ thống trong tải mục tiêu Kiểm thử tải thấp cho hệ thống chiếm 30 % tải mục tiêu, kiểm thử tải trung bình chiếm 60% trong tải mục tiêu và còn lại là kiểm thử tải cao chiếm 100% tải mục tiêu [5]

Khi thực hiện kiểm thử tải có 3 vùng tải: tải từ từ tăng, tải ổn định, tải từ từ giảm Trong vùng tải từ từ tăng số người sử dụng hệ thống từ từ tăng trong khoảng thời gian

cụ thể (5 người/1 phút) được cài đặt trong kịch bản kiểm thử Giá trị này có thể quyết định dựa vào mô hình sử dụng của ứng dụng Ví dụ nếu ứng dụng của bạn là trang web bán ðấu giá thì có thể 50 người sử dụng cùng đăng nhập vào hệ thống trong 1 giây trong giờ giao dịch cao điểm Trong vùng tải từ từ giảm số người sử dụng hệ thống dần giảm trong một khoảng thời gian và nó cũng được cài đặt trong kịch bản kiểm thử Trong vùng tải ổn định thì số người sử dụng hệ thống là không đổi khi đó tải trên máy chủ tải trên máy chủ cũng không đổi Chúng ta thu thập số liệu về hiệu năng máy chủ trong khoảng thời gian tải ổn định [5]

Kiểm thử áp lực (stress test)

Không giống như kiểm thử tải, kiểm thử áp lực (stress test) được xây dựng với mục đích gây áp lực cho hệ thống để tìm ra điểm dừng (breakpoint) và nguyên nhân ảnh hưởng đến hiệu năng của hệ thống (nếu có) [5] Hành vi của hệ thống được xác định khi nó được đặt ở mức tải cao Thông thường khoảng 10% - 20 % tải được cộng thêm vào mức tải tối đa của hệ thống được đạt làm mức tải cho kiểm thử áp lực Khi thực hiện kiểm thử áp lực chúng ta nên tăng chậm tải cho hệ thống cho đến khi xuất hiện điểm dừng (break point) Kiểm thử này có thể thực hiện một vài lần thu thập hành vi của hệ thống và nâng cao độ tin cậy khi phân tích hành vi này

Sau khi kiểm thử tải và áp lực (stress test), phụ thuộc vào yêu cầu hiệu năng của

hệ thống mà các kiểm thử khác như kiểm thử chịu đựng (endurance), Spike test… có thể thực hiện để xác nhận thêm hành vi và hiệu năng của hệ thống

2.5 Báo cáo kiểm thử hiệu năng (Performance test reporting)

Phương pháp viết bản báo cáo kết quả kiểm thử hiệu năng thì hoàn toàn khác báo cáo kết quả kiểm thử chức năng Trong kiểm thử hiệu năng không dễ dàng đưa ra kết luận đúng/lỗi như trong báo cáo kiểm thử chức năng Báo cáo kiểm thử hiệu năng đưa

Trang 34

các kết luận về hiệu năng, các yếu tố và nguyên nhân ảnh hưởng đến hiệu năng của hệ thống (nếu có)

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ử Mặc dù một số thông tin đã được nêu chi tiết trong tài liệu kế hoạch kiểm thử nhưng trong khi viết báo cáo chúng ta nên cung cấp để người đọc báo cáo dễ dàng hiểu được 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ử…Trong báo cáo nên có một vài biểu

đồ kết quả kiểm thử và giải thích cho kết quả kiểm thử cho mỗi biểu đồ Các kết luận

về yếu tố, nguyên nhân ảnh hưởng đến hiệu năng của hệ thống cần được nêu rõ và giải thích Kết quả báo cáo nên có sự tham gia phân tích của một nhóm người gồm: kiểm thử viên, người phân tích hệ thống người quản lý dữ liệu Sau đó kiểm thử viên mới đưa kết luận cuối cùng về hiệu năng hệ thống [5]

2.5.2 Các thành phần của báo cáo

Báo cáo kiểm thử hiệu năng sẽ có nhiều người đọc khác nhau như người làm kinh doanh (business people), người phân tích , người quản lý máy chủ và người quản

lý dữ liệu Vì vậy để tất cả mọi người đều hiểu kết quả thì các kết luận và giải thích trong báo cáo cần có thông tin chi tiết về kỹ thuật nhưng cũng đủ thông tin cho người làm kinh doanh hiểu được 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

Kiểm thử viên nên hiểu trực quan trong báo cáo gồm những phần sau:

 Biểu đồ (Kiểu đồ thị, trục X và Y, tiêu đề và màu phù hợp)

 Biên hiệu năng (rất tốt, tốt và phần nổi bật rất xấu)

 Thuật ngữ (hỗ trợ cho biểu đồ)

Ngày đăng: 25/03/2015, 09:47

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Emily H. Halili (2008), Apache JMeter, Ltd, Packt Publishing Sách, tạp chí
Tiêu đề: Apache JMeter
Tác giả: Emily H. Halili
Năm: 2008
[2] J.D. Meier, Srinath Vasireddy, Ashish Babbar, and Alex Mackman, Improving.NET Application Performance and Scalability, Microsoft Corporation Sách, tạp chí
Tiêu đề: Improving.NET Application Performance and Scalability
[3] Stacy Joines, Ruth Willenborg, Ken Hygh(2002), Performance Analysis for Java™ Web Sites, Addison Wesley Sách, tạp chí
Tiêu đề: Performance Analysis for Java™ "Web Sites
Tác giả: Stacy Joines, Ruth Willenborg, Ken Hygh
Năm: 2002
[4] J.D. Meier, Carlos Farre, Prashant Bansode, Scott Barber, Dennis Rea (2007), Performance Testing Guidance for Web Applications, Microsoft Corporation Sách, tạp chí
Tiêu đề: Performance Testing Guidance for Web Applications
Tác giả: J.D. Meier, Carlos Farre, Prashant Bansode, Scott Barber, Dennis Rea
Năm: 2007
[6] Ian Molyneaux (2009), The Art of Application Performance Testing, O'Reilly Media, Inc Sách, tạp chí
Tiêu đề: The Art of Application Performance Testing
Tác giả: Ian Molyneaux
Năm: 2009
[7] IBM (2008), Using Rational Performance Tester Version 7, IBM corporation Sách, tạp chí
Tiêu đề: Using Rational Performance Tester Version 7
Tác giả: IBM
Năm: 2008
[5] Ramya Ramalinga Moorthy (2000), Software Performance Testing Handbook - A Comprehensive guide for beginners Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w