Kiểm tra hiệu năng phần mềm với LoadRunner 8.1
Mục tiêu của bài viết là giới thiệu những tính năng cơ bản của một công cụ kiểm tra tự động (KTTĐ) áp dụng trong kiểm tra hiệu năng của phần mềm hay còn gọi là Performance Test ...
Mục tiêu của bài viết là giới thiệu những tính năng cơ bản của một công cụ kiểm tra tự động (KTTĐ) áp dụng trong kiểm tra hiệu năng của phần mềm hay còn gọi là Performance Test (PT). Thực tế, có rất nhiều công cụ hỗ trợ việc kiểm tra hiệu năng phần mềm, tuy nhiên qua thực tiễn sử dụng và kinh nghiệm, chúng tôi cho rằng công cụ LoadRunner 8.1 của hãng Mercury là một trong những công cụ khá tốt (và được nhiều chuyên gia kiểm tra phần mềm sử dụng).1. KHÁI QUÁT VỀ PERFORMANCE TESTPT là một dạng KTTĐ, để tìm ra điểm “thắt cổ chai” của phần mềm cần kiểm tra, qua đó giúp cho người làm phần mềm có thay đổi thích hợp để tăng khả năng thực thi của phần mềm (PM). Bên cạnh đó cũng giúp người kiểm tra biết được những thông số ngưỡng của phần mềm, đề ra tiêu chuẩn cho những lần kiểm tra sau. Khi thực hiện PT, người kiểm tra phải đề ra kết quả mong đợi một cách rõ ràng. Ví dụ: đối với ứng dụng web, chúng ta cần biết thông số quan trọng là: số kết nối (session) đồng thời mà server có thể phục vụ, thời gian (bao nhiêu phút/giây) mà trình duyệt nhận được kết quả từ server...Khi thực hiện PT người ta thường chọn thời điểm mà chương trình tương đối ổn định. Thông thường chức năng nằm trong tình huống cần kiểm tra hiệu năng đã được kiểm tra là chạy đúng. Điều này sẽ giúp cho việc phân tích đánh giá kết quả của PT dễ dàng và đúng đắn.Đồng nhất với quy trình kiểm tra phần mềm (xem chi tiết trên TGVT A tháng 12/2005), mô hình sau mô tả các bước phát triển PT một cách tổng quát.Công việc trong từng bước trên như bảng sau.
Trong lĩnh vực kiểm tra hiệu năng có một vài thuật ngữ rất dễ gây nhầm lẫn. Bảng 2 so sánh giữa 3 thuật ngữ thường hay được đề cập nhất với một số cách nhìn khác nhau.
2. TẠI SAO PHẢI ỨNG DỤNG PTĐể đảm bảo PM có chất lượng thì người kiểm tra viên (KTV) phải có những cách kiểm tra giả lập gần giống môi trường thực tế nhất. Trong thực tế có rất nhiều PM theo mô hình client-server đáp ứng nhiều người dùng cùng một lúc. Một số yêu cầu thực tế rất hay đặt ra là:• Xác định thời gian đáp ứng khi có nhiều người dùng như: số yêu cầu trên giây, số giao dịch thành công trên giây, số thông điệp chuyển giao trên giây, số gói tin trên giây, ...• Xác định biểu đồ tài nguyên chiếm giữ của PM khi có nhiều người dùng trong thời gian dài như: CPU, bộ nhớ, I/O của đĩa cứng, I/O của mạng.• Xác định khả năng phân tải, khả năng phục hồi dữ liệu khi có sự cố vì quá nhiều người dùng, ...• Đề ra cấu hình phần cứng tối thiểu để PM có thể hoạt động.• Kiểm tra việc thực hiện giao dịch có bị sai lệch khi có nhiều người cùng làm giống thao tác.Với những bài toán trên việc dùng công cụ PT là không thể tránh khỏi. Đây đồng thời cũng là đặc điểm để KTV xác định xem những trường hợp nào thì phải áp dụng KTTĐ, và tiêu biểu là dùng công cụ để thực hiện PT.PT giúp chúng ta đoán trước được những lỗi có thể xảy ra khi triển khai PM vào thực tế trong môi trường có nhiều người dùng. Bên cạnh đó còn giúp tìm ra hiệu năng thực thi tối đa của PM và tìm ra nơi cần cải tiến cho PM. PT mang các đặc tính ưu việt của KTTĐ như giảm thời gian kiểm tra hồi qui, thực hiện đo lường các thông số chính xác, giúp giảm thiểu chi phí cho dự án...
3. GIỚI THIỆU CÔNG CỤ LOADRUNNERMercury LoadRunner là công cụ KTTĐ thực hiện việc kiểm tra hiệu năng của PM. Nó cho phép chúng ta tìm ra những lỗi về khả năng thực thi bằng việc phát hiện nguyên nhân, chỗ làm cho PM chạy chậm hoặc không đúng yêu cầu. Đây là công cụ mạnh với giải pháp kiểm tra tải, phát hiện và đưa ra giải pháp cải tiến.Ứng dụng LoadRunner sẽ giúp giảm thời gian viết test script đến 80%, đó là nhờ nó cung cấp chức năng tự động phát sinh script mô tả lại các tình huống muốn kiểm tra.3.1 Đặc điểmTheo một số quan niệm thì một công cụ PT phải có khả năng thực hiện kiểm tra chức năng. Điều này mang nghĩa tương đối vì thực tế công cụ PT không thể thay thế công cụ kiểm tra chức năng và ngược lại. Ví dụ: trong môi trường web, công cụ kiểm tra chức năng kiểm tra hoạt động của phần mềm ở cả phía client và server. Còn công cụ PT chỉ kiểm tra ở phía server mà thôi.LoadRunner có khả năng tạo ra hàng ngàn người dùng ảo thực hiện các giao dịch cùng một lúc. Sau đó LoadRunner giám sát các thông số xử lý của PM được kiểm tra. Kết quả thống kê sẽ được lưu lại và cho phép KTV thực hiện phân tích.• Các thành phần của LoadRunner (bảng 3)
• Ngôn ngữ viết scriptScript của LoadRunner được tự động phát sinh dưới dạng ngôn ngữ C chuẩn. Tuy nhiên LoadRunner có khả năng hỗ trợ thêm việc viết script theo dạng cú pháp của ngôn ngữ Java và Visual Basic. Ngoài các hàm cơ bản của từng ngôn ngữ, LoadRunner còn tự cung cấp thêm những mã lệnh (API) riêng dành cho từng môi trường hỗ trợ khác nhau như web, Oracle, SAP, Java,...Sau đây chúng ta xem qua script tự động phát sinh sau khi thao tác với ứng dụng Mercury Web Tours tại http://127.0.0.1:1080/mercuryWebTours. Lưu ý mở web server chạy trước khi thực hiện tại menu Start>Programs>Mercury LoadRunner >Samples>Web>Start Web Server. Trên đây là hành động của một người dùng ảo sẽ thực hiện:- Hàm web_url(...): cho phép tải (mở) trang web http://127.0.0.1:1080/mercuryWebTours.- Hàm web_submit_form(...): người dùng ảo đăng nhập website bằng tài khoản jojo/bean.- Hàm web_image(...): người dùng ảo chọn nút SignOff để thoát.3.2 Các bước thực hiệnNhằm minh họa cho qui trình phát triển PT, sau đây chúng ta đi sơ lược qua các bước triển khai PT trong LoadRunner. Sau khi cài đặt, LoadRunner sẽ cung cấp sẵn một số ứng dụng cho chúng ta thử nghiệm. Trong bài viết này chúng ta thực hiện kiểm tra ứng dụng Mercury Web Tours.• Mở web server tại $Mercury LoadRunner >Samples>Web>Start Web Server.• Mở LoadRunner $menu Start>Programs>Mercury LoadRunner>LoadRunner. Chọn Create/Edit Scripts để mở Virtual User Generator tạo script cho người dùng ảo.• Chọn giao thức để kiểm tra ứng dụng web: chọn New Vuser script, sau đó chọn Web (HTTP/HTML)• LoadRunner tổ chức các bước thực hiện một cách rõ ràng bên trái màn hình, rất dễ sử dụng. Sau đây là công việc phải làm trong các bước đó.1. Recording (Ghi nhận): Cho phép tự động phát sinh script ghi lại thao tác người dùng lên ứng dụng cần kiểm tra. Cách tổ chức script của LoadRunner được chia ra thành 3 thành phần chính.- vuser_init: mỗi người dùng ảo sẽ thực hiện một lần trước khi chạy PT.- Run: bao gồm một hoặc nhiều hàm (action), và cho phép người dùng ảo chạy lặp lại nhiều lần. Dựa trên action chúng ta có thể tổ chức các nhóm chứa các action khác nhau và theo thứ tự tùy ý.- vuser_end: mỗi người dùng ảo thực hiện một lần cuối cùng khi chạy PT.2. Replay (Phát lại):Đây là bước cho phép chạy thử để kiểm tra script đã chạy đúng yêu cầu của một người dùng ảo hay chưa, qua đó có sự chỉnh sửa nếu cần. Bên cạnh đó LoadRunner còn cho phép tổ chức thứ tự, số lần lặp lại các action hiện đang có bằng cách chọn Open Run-Time Settings, và thiết lập thời gian tương tác giữa người dùng ảo và web server...3. Enhancements (Nâng cao):- Tạo transaction: transaction là một số hành động do chúng ta chọn từ quá trình tự động phát sinh script. Mục tiêu là giám sát thông số hoạt động của một số hành động trong transaction đó. Thông số giám sát sẽ được thể hiện sau khi chúng ta thực hiện kiểm tra PT.- Tham biến hóa: thay thế các giá trị cố định trong script bằng các biến.- Kiểm tra nội dung: cho phép thêm các điểm kiểm tra nội dung, trong LoadRunner gọi là content check, có thể hiểu giống như một thuật ngữ khác đã được đề cập trong bài viết trước là checkpoint.4. Prepare For Load (Chuẩn bị thực thi):- Thiết lập sự lặp lại của các action, ở giai đoạn Replay chúng ta cũng có thể làm điều này.- Thiết kế tình huống: thiết lập số người dùng ảo tối đa thực hiện cùng một lúc, thời gian chạy bao lâu, số lượng người dùng ảo tăng như thế nào (Ramp Up) hoặc giảm như thế nào (Ramp Down). Ví dụ: Giả lập tổng số người dùng tối đa là 100, bắt đầu là 10 người và cứ 10 phút thì tăng 1 người. Chạy trong thời gian 5 tiếng, sau đó cứ 10 phút thì giảm 1 người dùng.- Thực hiện tình huống: thực thi các tình huống kiểm tra, phân tích kết quả dựa trên các thông số của môi trường kiểm tra, ví dụ: số yêu cầu gửi tới web server xử lý trong 1 giây, số hồi đáp từ server trong 1 giây, số trang mà người dùng có thể mở trong 1 giây, ...5. Finish (Kết thúc):- Upload script lên Performance Center server, đây là một phần trong việc thực hiện giải pháp chia sẻ tài nguyên PT qua Internet.- Quản lý script thông qua việc kết hợp với giải pháp mà Mercury cung cấp là Quality Center.
3.3 Môi trường hỗ trợLoadRunner có khả năng thực hiện PT trên nhiều môi trường khác nhau, cụ thể những giao thức và công nghệ phổ biến như ERP/CRM, Web, J2EE/.NET, XML, .NET, Wireless, Streaming Media. LoadRunner hỗ trợ hơn 60 giao thức và được xem là công cụ có khả năng hỗ trợ tối đa những công nghệ mới hiện nay.Bảng 4 sau đây là một số môi trường hỗ trợ tiêu biểu.
Bên cạnh đó còn có những môi trường yêu cầu phải mua và cài đặt thêm thành phần hỗ trợ như: VMWare, Web Forms, Java (SWT, AWT), ActiveX, Delphi 8 .NET WinForms, WPF from .NET 3.0, JBDC, SIP...4. SỬ DỤNG4.1 Hướng dẫn cài đặtMercury cung cấp bản LoadRunner chạy thử trong vòng 10 ngày tại http://downloads.mercury.com. Sau khi tải về chúng ta thực hiện theo các bước hướng dẫn để cài đặt. Toàn bộ các thành phần của LoadRunner đều có thể cài trên Windows, còn trên hệ thống Unix thì chúng ta chỉ có thể cài đặt Load Generator.4.2 Yêu cầu hệ thống (bảng 5)
4.3 Giá cảSau đây là bảng giá tham khảo, giá này được bán trên thị trường vào năm 2006 (chúng tôi chưa có điều kiện xác nhận mức giá tại thời điểm hiện tại, bạn đọc có thể kiểm tra giá chính xác tại một số đại lý tại Việt Nam như công ty TD&T Tân Đức, 103 Pasteur, Q.1, HCM). Bản quyền LoadRunner gồm hai thành phần sau:• Virtual User Generator: 22.000 USD• Load Generator: giá được bán theo số lượng người dùng được giả lập* 25 người dùng ảo: 16.000 USD* 50 người dùng ảo: 22.000 USD* 100 người dùng ảo: 33.000 USD* 200 người dùng ảo: 44.000 USD* 500 người dùng ảo: 55.000 USD4.4 Giới thiệu nguồn tài liệu hayDo khuôn khổ bài báo, chúng tôi chỉ giới thiệu những phần cốt lõi và chung nhất về kiểm tra hiệu năng và tính năng sử dụng của LoadRunner, chi tiết sâu hơn, bạn đọc có thể tham khảo các nguồn tài liệu sau:• http://www.wilsonmar.com: Giới thiệu PT, mô hình KTTĐ. Trình bày chi tiết kiến trúc, chức năng của LoadRunner, kỹ thuật phát triển VuGen script và nhiều chủ đề liên quan.• http://www.aptest.com/resources.html: Giới thiệu rất nhiều công cụ PT• http://www.sqaforums.com: Diễn đàn trao đổi về chất lượng PM, có rất nhiều chủ đề về công cụ PT.
5. LỜI KẾTThực tế cho thấy một phần mềm gọi là “chạy tốt” phải đồng thời đáp ứng 2 tiêu chí vận hành quan trọng là chức năng và hiệu năng. Việc tránh né không áp dụng PT để kiểm tra hiệu năng hoạt động có thể dẫn đến tình trạng PM bị lỗi khi hoạt động thực tế, trong nhiều trường hợp phần mềm trở nên “vô dụng” vì không đáp ứng yêu cầu về hiệu năng, mặc dù chức năng vẫn “chạy tốt”. Ngược lại nếu áp dụng PT một cách hợp lý sẽ giúp tìm ra nơi mà PM cần được cải tiến ngay trong quá trình phát triển phần mềm.LoadRunner là công cụ PT mạnh mẽ với nhiều tính năng phong phú, đặc tính dễ sử dụng của nó giúp các KTV tiết kiệm rất nhiều thời gian trong việc thực hiện PT, đặc biệt trong kiểm tra hồi qui. Đây cũng là công cụ KTTĐ tiêu biểu giúp KTV hiểu được nguyên tắc hoạt động của một công cụ hỗ trợ và thực thi PT, từ đó giúp KTV có khả năng đề ra các mục tiêu cho việc thực hiện PT và phân tích kết quả báo cáo để tìm ra sự cải tiến cần thiết cho PM.