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.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 để ` TIEU LUAN MOI download : skknchat@gmail.com 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.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.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ủ. ` TIEU LUAN MOI download : skknchat@gmail.com 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 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. ` TIEU LUAN MOI download : skknchat@gmail.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 ` TIEU LUAN MOI download : skknchat@gmail.com 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ử.