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

  • Số trang: 68 |
  • Loại file: PDF |
  • Lượt xem: 14 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

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