Kiểm thử tự động với phần mềm
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 ...
VẤN ĐỀ1. Test ScriptKhi 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 ReportSau 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ÁP1. Lưu trữ độc lậpLư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 *.vbsTù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ẻ RepositorySẽ 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 classTừ 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: footestDescription: footestPublic Sub TC01_footest()Do something hereEnd Sub ===================================Description: Run test cases==================================Public Sub Run()TC01_fooEnd Sub ================================== CONSTRUCTORPrivate Sub Class_InitializeEnd Sub ================================== DESTRUCTORPrivate Sub Class_Terminate End SubEnd Class4. 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 ThenReport: "Button does not exist"Exit functionEnd If bVisible=obj.GetROProperty ("visible")If bVisible=False ThenReport: "Button is not visible"Exit functionEnd IfReport: " Click on WebButton "Click_Webbutton = obj.ClickEnd FunctionRegister this functionRegisterUserFunc "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=trueiSize=ubound(arr)for i=0 to iSizesProp=arr(i) sExpected=obj.GetTOProperty(sProp)sReal=obj.GetROProperty(sProp)if sExpected <> sReal then Report : "Error:..."bLastCheck=falseexit forend if nextEnd FunctionRegister this functionRegisterUserFunc "WebList", "Check", "Check_Object"6. Viết thư viện hàm cho reportSau 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ỤNG1. Xây dựng thư viện hàmXâ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 report2. 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 scriptSau 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 case4. Thực thi test scriptSau 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 reportPhân tích các lỗi có trong report nếu có.