• Thứ Bảy, 22/09/2007 06:12 (GMT+7)

    Kiểm tra hiệu năng phần mềm với LoadRunner 8.1

    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, chúng tôi cho rằng LoadRunner 8.1 của hãng Mercury là một trong những công cụ khá tốt...
    Trong các bài báo trước, chúng tôi đã có dịp giới thiệu các khái niệm cơ bản về kiểm tra phần mềm (TGVT A tháng 12/2005), cách sử dụng công cụ hỗ trợ để kiểm tra tự động (TGVT A tháng 10/2006) minh họa bằng một công cụ nổi tiếng để kiểm tra chức năng phần mềm là Quick Test Professional. Tuy nhiên, như các bạn đã biết, kiểm tra chức năng và hiệu năng là một cặp không thể thiếu để khẳng định chất lượng của một phần mềm. Trong bài nầy, chúng tôi tiếp tục giới thiệu một công cụ nổi tiếng khác, giúp kiểm tra hiệu năng hoạt động của phần mềm, đó là LoadRunner.

    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 TEST

    PT 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 1.
      Bảng 1  
      STT      Bước thực hiện     Mô tả  
      1     Thiết kế test case     Thiết kế test case với các bước thực hiện rõ ràng, và đề ra các thông số cần đo lường cụ thể.  
      2     Phát triển test script     Dùng công cụ PT chúng ta có thể lưu lại các thao tác người dùng tương tác với hệ thống dưới dạng script. Script này cũng cho phép chỉnh sửa để đạt được mục tiêu của tình huống kiểm tra đề ra.  
      3     Thiết kế tình huống     Hay còn gọi là thiết kế scenario, nhằm giả lập môi trường mà phần mềm hoạt động với hiệu năng giống trong thực tế.  
      4     Thực thi tình huống     Chạy, quản lý và giám sát việc thực hiện PT  
      5     Phân tích kết quả     Phân tích kết quả dựa trên thống kê mà công cụ KTTĐ cung cấp. Nếu kết quả thực tế chưa đáp ứng được yêu cầu thì PM được kiểm tra cần được điều chỉnh.  

    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...

      Bảng 2  
            Performance Test (PT)     Load Test (LT)     Stress Test (ST)  
      Khái niệm     - Được thực hiện nhằm xác định tốc độ, khả năng phân tải và mức độ tin tưởng của PM trong môi trường nhiều người dùng, có nhiều hoạt động khác nhau.
    - Dùng công cụ KTTĐ để kiểm tra hiệu năng PM ở điều kiện có sự điều chỉnh về mức độ tải.
       

    - Là một phần trong qui trình thực hiện PT. Load Test đôi khi còn gọi là Volume Test.
    - Dùng công cụ KTTĐ để kiểm tra PM ở điều kiện liên tục tăng mức độ chịu tải. Tuy nhiên mức độ chịu tải cao nhất vẫn ở mức chức năng PM hoạt động đúng chức năng.

        - Đây là cách thực hiện nhằm làm cho PM không còn chạy được nữa.
    - Phương pháp này rất hay áp dụng để kiểm tra PM và phần cứng.
     
      Mục tiêu     - Tìm ra điểm “thắt cổ chai” của PM và từ đó có những cải tiến để tăng khả năng hoạt động của PM.
    - Đề ra các thông số, tiêu chuẩn về hiệu năng thực thi của PM. Một số thông số đó là: số phiên làm việc, thời gian xử lý của phiên làm việc, và các tài nguyên khác bị chiếm giữ.
        Khi PM không còn khả năng cải tiến. Ở mức chịu tải cao nhất:
    - Giám sát việc PM quản lý tài nguyên khi chạy trong thời gian dài.
    - Giám sát thông số đề ra trong PT như thời gian xử lý,... khi chạy trong thời gian dài.
        - Kiểm tra khả năng phục hồi của PM sau khi có sự cố.
    - Kiểm tra khả năng chịu tải cho một máy khác khi máy đó gặp sự cố do không có khả năng chịu tải được nữa.
     
      Ví dụ     Ví dụ 1: Có ứng dụng web, yêu cầu cần tìm thông số về hiệu năng thực thi của ứng dụng.
    Dùng LoadRunner tạo tình huống khởi đầu có 10 người dùng, cứ 2 phút tăng thêm 10 người, tăng tối đa là 2000 người.
    Quan sát: Biểu đồ thời gian đáp ứng với kết quả xử lý đúng và kết quả sai, có bao nhiêu yêu cầu không được xử lý, tài nguyên sử dụng như RAM, CPU,...
    Thông qua đó giúp xác định ứng dụng hoạt động tốt nhất trong điều kiện nào.
        Ví dụ 2: Ứng dụng web chỉ hoạt động tốt với tối đa là 1000 người dùng. Yêu cầu kiểm tra khả năng của web khi hoạt động ở ngưỡng đáp ứng với thời gian dài 2 ngày.
    Dùng LoadRunner tạo tình huống khởi đầu có 800 người dùng, cứ 1 phút tăng 2 người, tăng tối đa 1000 người, và giữ ở mức đó tiếp tục chạy trong vòng 2 ngày.
    Quan sát: Tài nguyên sử dụng như RAM, CPU, thời gian đáp ứng với kết quả đúng và sai khi ứng dụng chịu tải ở mức cao nhất và hoạt động trong thời gian dài.
        Ví dụ 3: Ứng dụng web chỉ có thể quản lý, đáp ứng tối đa 1000 yêu cầu. Yêu cầu cần kiểm tra ứng xử của web khi gặp sự cố quá ngưỡng số người sử dụng.
    Dùng LoadRunner tạo tình huống có 1100 người truy cập, khi đạt đến ngưỡng đó LoadRunner ngừng tải.
    Quan sát: Kết quả xử lý 1000 yêu cầu đầu, 100 yêu cầu sau đó bị từ chối ra sao, webserver có khả năng bị khởi động lại hay không,...
    Từ đó giúp đưa ra kết luật ứng dụng sẽ ứng xử như thế nào khi đạt ngưỡng chịu tải tối đa.
     

    3. GiIỚI THIỆU CÔNG CỤ LOADRUNNER

    Mercury 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ểm

    Theo 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)

      Bảng 3  
      Thành phần     Chức năng  
      Virtual User Generator     Tự động tạo ra VuGen script để lưu lại các thao tác người dùng tương tác lên PM. VuGen script này còn được xem là hoạt động của một người ảo mà LoadRunner giả lập.  
      Controller     Tổ chức, điều chỉnh, quản lý và giám sát hoạt động kiểm tra tải. Thành phần này có chức năng tạo ra những tình huống (scenario) kiểm tra.  
      Load Generator     Cho phép giả lập hàng ngày người dùng, hoạt động của từng người sẽ được thực hiện theo VuGen script. Kết quả thực hiện sẽ được thông báo cho Controller.  
      Analysis     Cung cấp việc xem, phân tích và so sánh các kết quả PT.  
      Launcher     Nơi tập trung tất cả các thành phần của LoadRunner cho người dùng.  

    • Ngôn ngữ viết script

    Script 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ện

    Nhằ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.

      Bảng 4  
      • Triển khai ứng dụng     Citrix ICA  
      • Client/Server     DB2 CLI, DNS, Informix, MS SQL Server, ODBC, Oracle® (2-tier), Sybase CTLib, Sybase DBLib, Windows Sockets.  
      • Hệ thống phân tán     COM/DCOM, CORBA-JavaTM, Rmi-Java.  
      • E-Business     FTP, LDAP, Microsoft .NET, Palm, Web (HTTP/HTML), Webservices, Web/Winsocket Dual Protocol.  
      • ERP/CRM     Oracle NCA, Oracle Web Applications 11.i, PeopleSoft Enterprise, PeopleSoft Tuxedo, SAP-Web, SAPGUI/SAP-Web Dual Protocol, Siebel-DB2 CLI, Siebel-Oracle, Siebel-MSSQL, Siebel-Web.  
      • Enterprise Java Bean     EJB, Rmi-Java.  
      • Legacy     Terminal Emulation (RTE).  
      • Mailing Services      IMAP, MAPI, POP3, SMTP.  
      • Middle ware     Jacada, Tuxedo 6, Tuxedo 7.  
      • Streaming     Media Player (MMS), Real.  
      • Wireless     i-mode, VoiceXML, WAP.  
      • Khác     C Vuser, Java Vuser, Javascript Vuser, VB/VB Script/VBNet Vuser,…  

    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ỤNG

    4.1 Hướng dẫn cài đặt

    Mercury 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)

      Bảng 5  
      Yêu cầu      Thành phần  
      Controller     

    Vuser Generator

       

    Load Generator

       

    LoadRunner

     
      CPU      Pentium III trở lên (đề nghị Pentium IV)
    1 Ghz trở lên (đề nghị 2.4 Ghz)
     
      Hệ điều hành    

     Windows 2000 SP4
    Windows 2003 PS3 (Standard and Enterprise editions)
    Windows XP SP 2 (đã tắt firewall)

     
                     

    HĐH dựa trên Unix

           
      RAM     1 GB     512 MB trở lên (đề nghị 1 GB)     Phụ thuộc vào giao thức và ứng dụng phải kiểm tra.     512 MB trở lên (đề nghị 1 GB)  
      Đĩa cứng     2 GB     

    1 GB

        1 GB    

    1 GB

     
      Trình duyệt     Internet Explorer 6.0 service pack 1 trở lên  

    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 USD

    4.4 Giới thiệu nguồn tài liệu hay

    Do 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ẾT

    Thự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.

    Hoàng Phi & Ngô Văn Toàn
    Công ty Global CyberSoft Vietnam

    ---------------------------------------------
    Tài liệu tham khảo:

    http://www.mercury.com

    ID: A0709_132