4.2.2. Kịch bản kiểm thử xây dựng theo hướng dữ liệu
Phần này sẽ chuyển đổi các ca kiểm thử trong tập tin LoginTest.txt
dƣới dạng thƣ mục cũng đặt tên là AppTest.
Đầu tiên thiết lập setup/teardown cho bộ kiểm thử thay vì cho từng ca kiểm thử trong bảng Setting:
*** Settings ***
Library Selenium Library Suite Setup Start Selenium Server Suite Teardown Stop Selenium Server
Test Setup OpenBrowser http://truongnha.com/login/ GoogleChrome
Test Teardown Close Browsers
Khi đó số dòng lệnh của ca kiểm thử trong bảng Testcases đƣợc giảm đi tƣơng ứng:
*** Testcases ***
Login Should Succeed When the Correct Username and Password are Entered
Maximize Browser Window
Input Text id_username hientt Input Text id_password hientt Click Button login
Location Should Be hientt
Nhận thấy từ khóa Maximize Browser Window không giúp cho ngƣời đọc hiểu thêm về ý định của ca kiểm thử, từ khóa này có thể tiếp tục đƣợc sử dụng trong khi thực hiện bất kỳ ca kiểm thử nào khác nên sẽ đặt nó vào bảng thiết lập. Nhƣng, từ khóa setup/teardown ta chỉ có thể đƣa vào một từ khóa. Nên ta dùng từ khóa trong bảng Keywords.
*** Keywords *** Login Test Setup
Open Browser http://truongnha.com/login/ GoogleChrome
Maximize Browser Window
Khi đó bảng thiết lập cần đƣợc thay đổi thành: *** Settings ***
Library Selenium Library Suite Setup Start Selenium Server Suite Teardown Stop Selenium Server Test Setup Login Test Setup Test Teardown Close Browser
Tách bảng thiết lập này ra một tập tin riêng có tên __init__.txt.
Thêm nữa, để làm cho các ca kiểm thử đƣợc rõ ràng hơn ta sẽ tạo ra các từ khóa ở mức ngƣời dùng trong bảng Keywords.
*** Keywords *** Enter Username
[Arguments] ${username}
Input Text id_username ${username} Enter Password
[Arguments] ${password}
Input Text id_password ${password} Click the Login Button
Click Button login Login Is Successful
Page Should Contain hientt Login is Unsuccessful
Run Keyword And Expect Error * Login Is Successful
Login Test Teardown Capture Screenshot Close Browser
Nhận thấy từ khóa nhƣ “Enter Username” sẽ đƣợc sử dụng trong hầu hết các ca kiểm thử trong ứng dụng này. Để tránh việc sao chép cùng bộ từ
khóa vào tất cả các tập tin, ta tách bảng “Keywords” ra, tạo một tệp tài nguyên có tên Keywords.txt.
Mặt khác, để dễ dàng khi thay đổi dữ liệu kiểm thử, ta tạo một bảng biến và cũng đặt vào trong tệp tài nguyên LoginKeywords.txt. Trong ứng dụng này ta quan tâm đến hai biến là địa chỉ url và trình duyệt.
*** Variables ***
${login address} http://truongnha.com/login/ ${browser} GoogleChrome
Còn lại bảng “Testcases”, ta tách ca kiểm thử đăng nhập phải thành công vào một tập tin đặt tên LoginTest.txt và thiết lập cho tập tin này nguồn dữ liệu là tập tin Keywords.txt. Ngoài ra, thiết lập thêm thời gian Timeout khi kiểm thử và thƣ viện mở rộng. Ta có tập tin LoginTest.txt dƣới đây.
*** Settings ***
Test Timeout 10 minute
Library Selenium Library Resource Keywords.txt
*** Testcases ***
Login Should Succeed When the Correct Username and Password are Entered
Enter Username hientt Enter Password hientt Click the Login Button Login Is Successful
Nhận thấy, ba ca kiểm thử còn lại có các thao tác kiểm thử giống nhau, kết quả mong đợi giống nhau, chỉ khác đầu vào. Trong trƣờng hợp này, Robot Framework cho phép tạo kịch bản kiểm thử dễ dàng bằng cách thiết lập Test Template.Ta tạo một một tập tin cho ba ca kiểm thử này với tên
“LoginDataDriven.txt” nhƣ sau. *** Settings ***
Library Selenium Library Resource Keywords.txt
*** Testcases *** username password The Password is Wrong
hientt TestFail The Password is Empty
hientt ${empty}
Both Fields are Empty
${empty} ${empty}
*** Keywords ***
Login Should Fail When
[Arguments] ${username} ${password} Enter Username ${username}
Enter Password ${password} Click the Login Button
Login Is Unsuccessful
4.3. Kiểm thử chức năng báo cáo
Phần này sẽ xây dựng kịch bản kiểm thử cho chức năng báo cáo “Sổ gọi tên và ghi điểm” và chức năng báo cáo “Phiếu báo điểm”. Kịch bản kiểm thử đặt trong tập tin ReportTest.txt trong thƣ mục AppTest.
Thứ nhất là chức năng báo cáo “Sổ gọi tên và ghi điểm”. Khi đăng nhập đƣợc vào ứng dụng, ngƣời dùng nhấn vào nút “Báo cáo”, tiếp tục ngƣời dùng nhấp vào liên kết “Sổ gọi tên và ghi điểm” thì ứng dụng phải mở ra trang cho phép tải về sổ điểm của các lớp, và trên trang web phải chứa dòng văn bản “Sổ gọi tên và ghi điểm”.
Ta xây dựng thêm từ khóa Click the Report Buttonđặt vào tập tin
Click the Report Button
Click Element id=report
Ca kiểm thử có tên MarkBook Report, kịch bản kiểm thử đặt trong bảng Test Cases của tập tin ReportTest.txt nhƣ sau:
MarkBook Report
Enter Username hientt Enter Password hientt Click the Login Button Click the Report Button
Click Link /school/report/printMarkBook Page Should Contain Sổ gọi tên và ghi điểm
Thứ hai là chức năng báo cáo “Phiếu báo điểm”. Khi đăng nhập đƣợc vào ứng dụng, ngƣời dùng nhấn vào nút “Báo cáo”, tiếp tục ngƣời dùng nhấp vào liên kết “Phiếu báo điểm” thì ứng dụng phải mở ra trang cho phép tải về phiếu báo điểm học kì một, học kì hai của các lớp, và trên trang web phải chứa dòng văn bản “Phiếu báo điểm”.
Ca kiểm thử có tên MarkForClass Report, kịch bản kiểm thử đặt trong bảng Test Cases của tập tin ReportTest.txt nhƣ sau:
MarkForClassReport
Enter Username hientt Enter Password hientt Click the Login Button Click the Report Button
Click Link /school/report/printMarkForClass Page Should Contain Phiếu báo điểm
4.4. Kiểm thử chức năng đăng xuất
Phần này sẽ xây dựng kịch bản kiểm thử cho chức năng đăng xuất. Kịch bản kiểm thử đặt trong tập tin LogoutTest.txt nằm trong thƣ mục AppTest.
Khi ngƣời dùng đăng nhập vào hệ thống, ngƣời dùng tƣơng tác với các chức năng của ứng dụng, ngƣời dùng không muốn làm việc với hệ thống nữa muốn thoát ra. Hệ thống phải có khả năng đăng xuất.
Ta xây dựng thêm từ khóa Click the Logout Button đặt vào tập tin
nguồn Keywords.txt nhƣ sau: Click the Logout Button
Click Element id=logout
Ca kiểm thử có tên Logout Should Succeed, kịch bản kiểm thử đặt trong bảng Test Cases của tập tin LogoutTest.txt nhƣ sau:
Logout Should Succeed
Enter Username hientt Enter Password hientt Click the Login Button Click the Logout Button Login is Unsuccessful
Nhƣ vậy, ta đã xây dựng xong kịch bản kiểm thử cho chức năng đăng nhập, báo cáo và đăng xuất của hệ thống http://truongnha.com. Toàn bộ kịch bản kiểm thử ở phần phụ lục.
KẾT LUẬN
Qua quá trình tìm hiểu nghiên cứu thực hiện luận văn “Nghiên cứu và ứng dụng kiểm thử chấpnhận tự động vớiRobot Framework”, tôi đã đạt đƣợc những kết quả và có hƣớng nghiên cứu tiếp nhƣ sau.
Kết quả đạt được của luận văn:
Nghiên cứu, hệ thống lại các kiến thức đƣợc dùng trong kiểm thử nói chung và kiểm thử chấp nhận tự động nói riêng.Tìm hiểu đƣợc một số công cụ hỗ trợ kiểm thử tự động.
Nghiên cứu đƣợc Robot Framework, một khung kiểm thử mã nguồn mở dùng kiểm thử chấp nhận tự động dự án phần mềm.Nó cung cấp mọi thứ cần thiết để xây dựng kịch bản kiểm thử dƣới dạng bảng từ những từ khóa đƣợc xây dựng sẵn hoặc dễ dàng tạo ra các từ khóa ở mức ngƣời dùng từ những từ khóa đã có.
Kết hợp đƣợc Robot Framework với các công cụ kiểm thử khác nhƣ Selenium thông qua các thƣ viện của framework. Ứng dụng đƣợc Robot Framework vào kiểm thử trang web thực tế http://truongnha.com/.
Ứng dụng trong thực tiễn: Có tính thực tiễn cao, đƣợc đông đảo cộng đồng kiểm thử phần mềm trong nƣớc và thế giới đón nhận. Robot Framework hoạt động đƣợc trên các trình duyệt web và hệ điều hành khác nhau. Ứng dụng vào kiểm thử chấp nhận tự động các sản phẩm phần mềm.
Hướng nghiên cứu tiếp theo: Ứng dụng Robot Framework trong các dự án phần mềm đặc biệt là các dự án Agile. Nghiên cứu xây dựng thêm các thƣ viện mở rộng khả năng của Robot Framework.
TÀI LIỆU THAM KHẢO
[ [1]. Mai Thị Nhi, "Nghiên cứu và ứng dụng công cụ kiểm thử tự động trong kiểm thử phần mềm," Học viện công nghệ Bƣu chính viễn thông, Hà Nội, 2012.
[ [2]. Phạm Ngọc Hùng, Trƣơng Anh Hoàng, Đặng Văn Hƣng, Giáo trình kiểm thử phần mềm. Hà Nội: Đại học Công nghệ - Đại học Quốc gia
Hà Nội, 2014.
[ [3]. Hà Khánh Toàn, "Phƣơng pháp sinh bộ kiểm thử tự động cho kiểm thử giao diện ứng dụng Web," Hà Nội, 2013.
[ [4]. Kaner,Cem; Falk, jack; Nguyen,Hung Quoc, Testing Computer Software. New York, 1999.
[ [5]. Kolawa, Adam, Huizinga, Dorota, "Automated Defect Prevention: Best Practices in Software Management," pp. 41-43, 2007.
[ [6]. IEEE, "IEEE Standard Glossary of Software Engineering Terminology," IEEE Std 610.12-1990, pp. 1-84, dec 1990.
[ [7]. Crispen, L. and T. House, "Testing Extreme Programming," 2003.
[ [8]. Kaner, C., J. Bach, "Lessons Learned in Software Testing," 2002. [ [9]. Tip House Lisa Crispin, "Testing in the Fast Lane: Automating Acceptance Testing in an Extreme Programming Environment," in XP Universe Conference, 2001.
[ [10]. Jiantao Pan, Software Testing: Carnegie Mellon University,
1999.
[11]. http://robotframework.org/
[12]. http://en.wikipedia.org/wiki/Test_automation [13]. www.fitnesse.org/FitNesse.UserGuide
[14]. http://htmlunit.sourceforge.net/
PHỤ LỤC Tập tinLoginTest.txt
*** Settings ***
Library Selenium Library
*** Testcases ***
Login Should Succeed When the Correct Username and Password are Entered
Start Selenium Server
Open Browser http://truongnha.com/login/ GoogleChrome
Maximize Browser Window
Input Text id_username hientt Input Text id_password hientt Click Button login
Page Should Contain hientt Close Browser
Stop Selenium Server
Login Should not Succeed When the Correct Username and Wrong Password
Start Selenium Server
Open Browser http://truongnha.com/login/ GoogleChrome
Maximize Browser Window
Input Text id_username hientt Input Text id_password demo Click Button login
Run Keyword And Expect Error * Page Should Contain hientt
Stop Selenium Server
Login Should not Succeed When the Wrong Username and Correct Password
Start Selenium Server
Open Browser http://truongnha.com/login/ GoogleChrome
Maximize Browser Window
Input Text id_username tranhien Input Text id_password hientt Click Button login
Run Keyword And Expect Error * Page Should Contain hientt
Close Browser
Stop Selenium Server
Login Should not Succeed When the Username and Password are Emty
Start Selenium Server
Open Browser http://truongnha.com/login/ GoogleChrome
Maximize Browser Window
Input Text id_username ${empty} Input Text id_password ${empty} Click Button login
Run Keyword And Expect Error * Page Should Contain hientt
Close Browser
Thư mục LoginTest có chứa các tập tin: Tập tin __init__.txt
*** Settings ***
Suite Setup Start Selenium Server Suite Teardown Stop Selenium Server Test Setup Login Test Setup Test Teardown Login Test Teardown Library Selenium Library Resource Keywords.txt
Tập tin LoginTest.txt
*** Settings ***
Library Selenium Library Resource Keywords.txt
*** Testcases ***
Login Should Succeed When the Correct Username and Password are Entered
Enter id_Username hientt Enter id_Password hientt Click the Login Button Login Is Successful
Tập tin LoginDataDriven.txt
*** Settings ***
Test Template Login Should Fail When Library Selenium Library
Resource Keywords.txt
*** Testcases *** Username Password The Password is Wrong
hientt TestFail The Password is Empty
hientt ${empty} Both Fields are Empty
${empty} ${empty}
*** Keywords ***
Login Should Fail When
[Arguments] ${username} ${password} Enter id_Username ${username}
Enter id_Password ${password} Click the Login Button
Login Is Unsuccessful
Tập tin Keywords.txt
*** Variables ***
${login address} http://truongnha.com/login/ ${browser} GoogleChrome
*** Keywords *** Enter Username
[Arguments] ${username}
Input Text id_username ${username} Enter Password
[Arguments] ${password}
Input Text id_password ${password} Click the Login Button
Click Button login Click the Logout Button
Click Element id=logout Click the Report Button
Click Element id=report Login Is Successful
Page Should Contain hientt Login is Unsuccessful
Run Keyword And Expect Error * Login Is Successful
Login Test Setup
Open Browser ${login address} ${browser} Maximize Browser Window
Login Test Teardown Capture Screenshot Close Browser
Tập tin RepotTest.Txt
*** Settings ***
Library Selenium Library Resource Keywords.txt *** Test Cases ***
Enter Username hientt Enter Password hientt Click the Login Button Click the Report Button
Click Link /school/report/printMarkBook Page Should Contain Sổ gọi tên và ghi điểm
MarkForClass Report
Enter Username hientt Enter Password hientt Click the Login Button Click the Report Button
Click Link /school/report/printMarkForClass Page Should Contain Phiếu báo điểm
Tập tin LogoutTest.txt
*** Settings ***
Test Timeout 10 minute
Library Selenium Library Resource Keywords.txt
*** Test Cases *** Logout Should Succeed
Enter Username hientt Enter Password hientt Click the Login Button Login Is Successful Click the Logout Button Login is Unsuccessful