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