Sunday, January 5, 2014

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

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.

No comments:

Post a Comment