Hệ thống đƣợc kiểm thử trong luận văn này là ứng dụng http://truongnha.com.Hình 4.1 là hình ảnh trang chủ của ứng dụng.
Trong khuôn khổ luận văn này, tôi sẽ kiểm thử chức năng đăng nhập, báo cáo và đăng xuất với hệ thống http://truongnha.com.
Chức năng đăng nhập của hệ thống cần đảm bảo những điều sau. Ngƣời dùng gõ đúng vào hai trƣờng tên đăng nhập và mật khẩu sau đó nhấn đăng nhập thì đăng nhập vào hệ thống thành công. Nếu ngƣời dùng gõ tên đăng nhập hoặc mật khẩu sai hoặc hai trƣờng để trống thì đăng nhập thất bại.
Chức năng báo cáo, sẽ kiểm tra chức năng báo cáo sổ gọi tên ghi điểm, và báo cáo phiếu báo điểm. Ngƣời dùng có khả năng vào đƣợc các mục này để tải dữ liệu về.
Cuối cùng là chức năng đăng xuất, khi không muốn làm việc với hệ thống ứng dụng nữa, ngƣời dùng phải có khả năng thoát ra khỏi ứng dụng.
Thực hiện kiểm thử trên Robot Framework, cùng với thƣ viện mở rộng của nó SeleniumLibrary và công cụ hỗ trợ RIDE.
4.2. Kiểm thử chức năng đăng nhập
Dƣới đây, luận văn sẽ hƣớng dẫn hai cách xây dựng kịch bản để kiểm thử chức năng đăng nhập vào hệ thống ứng dụng.
4.2.1. Kịch bản kiểmthử xây dựngdựa trên từ khóa thông thường
Xây dựng bốn ca kiểm thử trong tập tin LoginTest.txt. Các ca kiểm thử thực hiện các công việc sau. Thứ nhất, ngƣời dùng gõ tên đăng nhập đúng và mật khẩu đúng sau đó nháy “Đăng nhập” thì hệ thống phải đăng nhập thành công. Thứ hai, ngƣời dùng gõ tên đăng nhập sai và mật khẩu đúng sau đó nháy “Đăng nhập” thì hệ thống phải đăng nhập không thành công. Thứ ba, ngƣời dùng gõ tên đăng nhập đúng và mật khẩu sai sau đó nháy “Đăng nhập” thì hệ thống cũng phải đăng nhập không thành công. Cuối cùng, ngƣời dùng để trống tên đăng nhập và mật khẩu sau đó nháy “Đăng nhập” thì hệ thống thất bại.
Kịch bản kiểm thử đƣợc xây dựng trên Robot Framework có sử dụng thƣ viện mở rộng SeleniumLibrary. Kịch bản kiểm thử đƣợc xây dựng trong tập tinLoginTest.txt, toàn bộ mã nguồn đƣợc trình bày ở phụ lục 1.
Dƣới đây xét đoạn kịch bản mô phỏng kiểm thử chức năng đăng nhập vào hệ thống thành công khi gõ đúng tên đăng nhập và mật khẩu.
1. *** Testcases ***
2. Login Should Succeed When the Correct Username and Password are Entered
3. Start Selenium Server
4. Open Browser http://truongnha.com/login/ GoogleChrome
5. Maximize Browser Window
6. Input Text id_username hientt 7. Input Text id_password hientt 8. Click Button login
9. Page Should Contain hientt 10. Close Browser
11. Stop Selenium Server
Trên đây là kịch bản của một ca kiểm thử, lần lƣợt từng dòng lệnh đƣợc phân thành các bƣớc với những mục đích: thiết lập (Setup), hành động (Action), xác minh (Verification), Teardown.
Dòng 1 : Dòng đầu tiên là tên bảng TestCases chứa một hoặc nhiều ca kiểm thử.
Dòng 2 : Tên của ca kiểm thử đƣợc sử dụng trong các báo cáo và các bản ghi.
Dòng 3: Thiết lập tác vụ, Server của Selenium đƣợc bắt đầu để nhận lệnh và kiểm soát trình duyệt.
Dòng 4: Thiết lập tác vụ, một trình duyệt đƣợc mở ra cho các trang nhất định, mặc định Firefox đƣợc sử dụng, có thể quy định sử dụng Internet Explorer hoặc Google Chrome. Trƣờng hợp này, Google Chrome đƣợc chọn, trang đƣợc mở là http://truongnha.com/login/.
Dòng 5: Thiết lập tác vụ, điều chỉnh mở hết cỡ trình duyệt. Theo mặc định, cửa sổ trình duyệt không đƣợc mở hết cỡ.
Dòng 6: Hành động kiểm thử, sử sụng từ khóa “Input Text” để nhập văn bản (text) vào trƣờng đƣợc xác định id của phần tử là “id_username” và văn bản cần nhập vào là “hientt”.
Dòng 7: Tƣơng tự dòng 6, là hành động kiểm thử, sử sụng từ khóa “Input Text” để nhập văn bản vào trƣờng đƣợc xác định id của phần tử là “id_password” và văn bản cần nhập vào là “hientt”.
Dòng 8: Là hành động kiểm thử nháy chuột vào nút đƣợc xác định bởi từ khóa “Click Button”. Đối số đƣợc truyền cho nó xác định bởi “login”.
Dòng 9: Xác nhận kiểm thử bởi từ khóa “Location Should Be”, nó sẽ kiểm tra url đang mở trên trình duyệt, nếu đúng thì ca kiểm thử sẽ qua.
Dòng 10: Thiết lập Teardown đóng trình duyệt. Dòng 11: Thiết lập Teardown tắt Selenium Server.
Tƣơng tự nhƣ kịch bản trên, ta xây dựng đƣợc kịch bản kiểm thử cho ca kiểm thử ngƣời dùng gõ tên đăng nhập đúng và mật khẩu sai sau đó nháy “Đăng nhập” thì hệ thống đăng nhập không thành công.
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
Close Browser
Stop Selenium Server
Dƣới đây là kịch bản kiểm thử cho ca kiểm thử ngƣời dùng gõ tên đăng nhập sai và mật khẩu đúng sau đó nháy “Đăng nhập” hệ thống đăng nhập không thành công.
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_password hientt Click Button login
Run Keyword And Expect Error * Page Should Contain hientt
Close Browser
Stop Selenium Server
Cuối cùng, kịch bản kiểm thử cho ca kiểm thử ngƣời dùng để trống tên đăng nhập và mật khẩu sau đó nháy “Đăng nhập” hệ thống đăng nhập thất bại.
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
Stop Selenium Server
Sau khi thực hiện chạy bộ kiểm thử “LoginTest” từ tệp “LoginTest.txt” thu đƣợc kết quả nhƣHình 4.2. Kết quảcho biết các thông tin cơ bản nhƣ: tên các ca kiểm thử thành công, tên các ca kiểm thử thất bại, tổng số các ca kiểm thử thực hiện, số luợng ca thành công, số lƣợng ca thất bại.
Hình 4.2. Kết quả sau khi chạy xong bộ LoginTest.
Kết quả báo cáo còn cung cấp tệp đầu ra có tên output.xml đƣợc minh họa ở Hình 4.3. Tập tin này cung cấp chi tiết các thông tin nhƣ phiên bản Robot sử dụng, phiên bản Python, loại hệ điều hành đƣợc dùng, đƣờng dẫn các tập tin dữ liệu kiểm thử v.v.
Hình 4.3. Tập tin đầu ra output.xml.
Tập tin báo cáo tổng quan bộ kiểm thử có tên log.html và minh họa Hình 4.4. Tập tin có chứa các thông tin nhƣ tên bộ kiểm thử, tên các ca kiểm thử, tổng số ca kiểm thử và số ca bị lỗi, thời gian bắt đầu, thời gian kết thúc và thời gian thực hiện của bộ kiểm thử, v.v.
Hình 4.4. Báo cáo tổng quan bộ kiểm thử.
Cuối cùng là tập tin report.html báo cáo tổng quan quá trình kiểm thử nhƣ Hình 4.5 và báo cáo chi tiết và Hình 4.6. Báo cáo cho biết tổng số ca kiểm thử, tên bộ kiểm thử, tên các ca kiểm thử, thời gian thực hiện của mỗi ca kiểm thử, thời gian bắt đầu và kết thúc của mỗi ca kiểm thử, thông điệp lỗi nếu có.
Hình 4.5. Báo cáo quá trình thực hiện kiểm thử.
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/