• Thứ Ba, 26/06/2007 14:40 (GMT+7)

    Giải pháp kiểm tra tự động phần mềm với QuickTest Professional

    Lợi ích của việc tự động hóa quá trình kiểm tra phần mềm là rõ rệt. Đặc biệt, những ưu điểm tuyệt vời của công cụ kiểm tra (CCKT) QuickTest Professional (QTP) đã được tác giả Hoàng Phi và Ngô Văn Toàn trình bày khá chi tiết ở bài viết "Tự động hóa kiểm tra phần mềm với QuickTest Professional 8.2" – ID: A0610_107. Thật vậy, QTP là một CCKT mạnh mẽ, vượt trội các CCKT khác, vì thế nó được biết đến và sử dụng rộng rãi. Tuy vậy, để ứng dụng một cách có hiệu quả, cũng như khắc phục những khuyết điểm vốn có của CCKT này, chúng ta cần phải có một giải pháp nhất định.

    Bài viết này giới thiệu giải pháp và quy trình ứng dụng QTP đã được áp dụng thành công ở một số dự án.

    VẤN ĐỀ

    1. Test Script

    Khi tự động hóa quá trình kiểm tra phần mềm, hầu hết kiểm tra viên (KTV - tester) đều thực hiện các bước sau:

    • Ghi lại các thao tác kiểm tra

    • Chỉnh sửa các đoạn script phát sinh

    • Chạy lại đoạn script đã được chỉnh sửa

    • Phân tích kết quả

    Nhìn chung các bước trên dễ thực hiện với mọi KTV. Tuy nhiên, những đoạn script phát sinh thường khó đọc và khó bảo trì sau này. Trong khi đó, QTP đã hỗ trợ tối đa về việc viết Test script, cho phép tạo thư viện hàm cần thiết để dùng lại sau này cho những dự án khác.

    2. Test Report

    Sau khi chạy hoàn tất một đoạn test, QTP sinh ra một report "rất đẹp" với những loại kết quả như: passed, failed, done và warning. Kết quả này rất có ích cho KTV trong việc xác định những lỗi (bug) của test script hay của ứng dụng. Nhưng liệu trưởng dự án (Project Manager) hay khách hàng có thể hiểu được bản báo cáo này?

    3. Cấu trúc action

    Đối với những ai có kinh nghiệm viết script, cấu trúc action trong QTP quả là phiền phức. Vấn đề được giải quyết bằng các hàm hay thủ tục. Tuy nhiên, nếu kiểm tra tự động cho một dự án lớn mà có quá nhiều hàm và thủ tục, không phân nhóm thì rất dễ xảy ra những vấn đề về quản lý vùng (scope management) sau này.

    4. Lưu trữ và lưu vết

    Đây là vấn đề mà hầu hết người dùng QTP đều gặp phải. QTP lưu các thành phần test của mình với rất nhiều định dạng tập tin và thư mục khác nhau. Việc lưu trữ và lưu vết (tracking) những sửa đổi trên cho cả tập hợp này không phải đơn giản.

    GIẢI PHÁP

    1. Lưu trữ độc lập

    Lưu trữ các thành phần test thành từng tập tin độc lập. Với số lượng tập tin không nhiều, chúng ta có thể hoàn toàn lưu vết và lưu trữ một cách dễ dàng. Nhìn chung, ta có 4 loại tập tin cần phải lưu:

    • Test script: lưu trữ những đoạn test script dưới dạng *.vbs

    • Repository: lưu trữ những đối tượng test của ứng dụng dưới dạng *.tsr

    • Parameter: Lưu trữ những thông số test dưới dạng *.xls

    • Settings: Lưu trữ cấu hình cho QTP hoặc những cấu hình đặc thù dưới dạng *.vbs

    Tùy vào những dự án cụ thể, ta có thể tạo những cấu trúc thư mục test khác nhau. Cơ bản, thư mục test nên có những thành phần như sau:

    2. Chia sẻ Repository

    Sẽ có nhiều KTV cùng làm việc cho một dự án. Vì vậy, để đảm bảo các đối tượng test không bị thừa/thiếu, chúng ta nên chia sẻ repository file cho nhau. Các tên của đối tượng cũng nên đặt theo một quy chuẩn nhất định.

    3. Viết script theo cấu trúc class

    Từ phiên bản QTP 8.2 đã hỗ trợ VBScript 5.0, cho phép sử dụng cấu trúc class.

    • Mỗi class là một test suite, bao hàm nhiều test case.

    • Dùng hàm Class_Initialize và Class_Terminate của cấu trúc class tương ứng như là hàm setup và teardown của một lớp test suite.

    • Nên có một hàm Run (thuộc tính truy cập là public) để gọi các test case trong lớp test suite.

    • Tạo ra các hàm cho các test case tương ứng.

    Class CTest
    ==================================
    Test case: footest
    Description: footest
    Public Sub TC01_footest()
    Do something here
    End Sub
    ===================================
    Description: Run test cases
    ==================================
    Public Sub Run()
    TC01_foo
    End Sub
    ================================== CONSTRUCTOR
    Private Sub Class_Initialize
    End Sub
    ================================== DESTRUCTOR
    Private Sub Class_Terminate
    End Sub
    End Class

    4. Thay đổi hàm thao tác của đối tượng test

    Để tạo ra một report dễ hiểu, chúng ta phải ghi lại các thao tác của người dùng trong quá trình test. Do đó, chúng ta cần thay đổi lại các hàm thao tác cho các lớp đối tượng test. Sau đó đăng ký với QTP bằng hàm RegisterUserFunc. Ví dụ:

    Function Click_Webbutton(obj)

    If not obj.exist Then

    Report: "Button does not exist"

    Exit function

    End If

    bVisible=obj.GetROProperty ("visible")

    If bVisible=False Then

    Report: "Button is not visible"

    Exit function

    End If

    Report: " Click on WebButton "

    Click_Webbutton = obj.Click

    End Function

    Register this function

    RegisterUserFunc "WebButton", "Click", "Click_Webbutton"

    5. Thay đổi hàm check

    Ý nghĩa của check point là để xét xem những kết quả hiện hành ở ứng dụng có đúng như mong đợi hay không và xuất kết quả ra report. Để tránh phụ thuộc về cấu trúc tập tin và thư mục của QTP, chúng ta cũng nên chỉnh sửa lại hàm check.

    Function Check_Object (obj, arr)

    bLastCheck=true

    iSize=ubound(arr)

    for i=0 to iSize

    sProp=arr(i)

    sExpected=obj.GetTOProperty(sProp)

    sReal=obj.GetROProperty(sProp)

    if sExpected <> sReal then

    Report : "Error:..."

    bLastCheck=false

    exit for

    end if

    next

    End Function

    Register this function

    RegisterUserFunc "WebList", "Check", "Check_Object"

    6. Viết thư viện hàm cho report

    Sau cùng, chúng ta nên viết bộ thư viện hàm để xuất report ở dạng file text. Để thêm phần sinh động, ta có thể xuất report dưới dạng RTF (Rich Text Format). Dưới đây là một report mẫu:

    QUY TRÌNH ỨNG DỤNG

    1. Xây dựng thư viện hàm


    Xây dựng thư viện hàm chung cho tất cả các dự án. Bao gồm:

        1. Các hàm ứng dụng.

        2. Các hàm đăng ký (đăng ký sự thay đổi cho các hàm check, hàm thao tác)

        3. Các hàm cho report

    2. Khởi đầu một dự án

    Để bắt đầu kiểm tra tự động cho một dự án, ta nên thực hiện các bước sau:

        1. Tạo một cấu trúc thư mục

        2. Chèn các tập tin thư viện vào QTP.

        3. Cấu hình cho QTP, cho dự án.

    3. Viết Test script

    Sau khi bước 1 và 2 đã sẵn sàng, ta bắt đầu viết test script với các bước sau:

        1. Thêm các đối tượng test từ ứng dụng và object repository

        2. Thêm parameter vào tập tin parameter.xls.

        3. Viết một test suite class và lưu dạng *.vbs trong thư mục test scripts

        4. Viết các hàm tương ứng cho các test case

    4. Thực thi test script

    Sau khi hoàn tất các test script, ta có thể chạy hàng loạt file test script hoặc chạy từng test script đơn lẻ.

    5. Phân tích report

    Phân tích các lỗi có trong report nếu có.

    Để hiểu thêm các kỹ thuật đã trình bày, các bạn có thể tìm hiểu ở phần help của QTP hoặc tham khảo ở http://www.sqaforums.com. Nếu các bạn có nhu cầu về những thư viện hàm, những công cụ hỗ trợ và dự án mẫu xin liên hệ nhientms@ttnkvn.com.

    Trương Minh Sử Nhiên
    Công ty Tân Thiên Niên Kỷ
    Email:
    nhientms@ttnkvn.com

    ID: A0706_132