Tự động hóa quá trình kiểm thử nói chung và kiểm thử tương tác giao diện
người dùng được xem là giải pháp hiệu quả góp phần giải quyết được hai vấn đề
bao gồm đảm bảo chất lượng và giảm chi phí, thời gian trong quá trình phát triển
chương trình phần mềm Đã có nhiều giải pháp và công cụ được đề xuất nhằm
thực hiện hóa mục tiêu này như kiểm thử tương tác giao diện người dùng sử
dụng công cụ Ranorex hay sử dụng các công cụ ghi và chạy lại các kịch bản
tương tác UI Tuy nhiên, chi phí để sử dụng công cụ Ranorex khá lớn, công cụ
như Ranorex chỉ hỗ trợ ghi và chạy mà không hỗ trợ sinh các kịch bản tương tác
UI.
Luận văn đã tiến hành nghiên cứu về kiểm thử tự động, kiểm thử tương tác
giao diện người dùng nhằm củng cố các kiến thức nền tảng. Luận văn đi sâu tìm
hiểu một số công cụ hỗ trợ kiểm thử tương tác giao diện người dùng nhằm chỉ ra
những điểm nổi bật và hạn chế của từng công cụ. Từ những khảo sát này, luận
văn nhận thấy Ranorex là bộ công cụ có nhiều tính năng nổi bật nhất. Ngoài khả
năng xác định các đối tượng UI chính xác, Ranorex còn cung cấp tính năng cho
ph p kiểm thử viên chỉnh sửa kịch bản sử dụng các đoạn mã giúp cho việc kiểm
thử linh hoạt hơn Ranorex là công cụ kiểm thử giao diện người d ng được cho
là nổi trội nhất hiện nay cả về mặt tính năng cũng như mức độ thân thiện với
người sử dụng. Luận văn cũng đã áp dụng kiến thức tìm hiểu thực hiện kiểm thử
một số phiên bản cho một ứng dụng phần mềm sử dụng công cụ Ranorex nhằm
minh chứng cho những hiểu biết đã nghiên cứu.
Mặc d đã có nhiều cố gắng trong thời gian thực hiện luận văn nhưng với
kinh nghiệm và kiến thức về công nghệ còn hạn chế nên luận văn không tránh
khỏi những thiếu sót. Sự áp dụng những kiến thức tìm hiểu được mới chỉ dừng
lại ở một ứng dụng nhỏ, mà vẫn chưa thử áp dụng cho các bài toán hay ứng
dụng lớn. Sự so sánh mới chỉ dừng lại ở ba công cụ Selenium, QTP, Ranorex45
chứ chưa mở rộng được nhiều công cụ. Trong quá trình áp dụng thử nghiệm,
học viên sẽ chủ động cấy lỗi cho ứng dụng để có được các phiên bản khác nhau.
Tuy nhiên, các phiên bản áp dụng hiện tại mới chỉ chứa một số lỗi cơ bản, với
các tình huống có thể gây lỗi đối với đối tượng giao diện là textbox Luận văn
đang được tiếp tục phát triển để xử l với các đối tượng khác như button,
dateandtime, checkbox, v.v. Ngoài ra, việc cho ph p kiểm thử viên tự đinh nghĩa
một số tình huống có thể gây lỗi mới giúp cơ sở dữ liệu đầy đủ hơn Luận văn
cũng sẽ tiếp tục nghiên cứu thêm các công cụ hỗ trợ kiểm thử tự động khác như
kế hoạch kiểm thử (Test Plan), ca kiểm thử (Test Case) và tiến hành tích hợp
vào Ranorex, tối đa sự thuận tiện cho kiểm thử viên. Luận văn cũng sẽ cố gắng
tạo ra một giao diện mở với tài liệu đầy đủ để người dùng viết các tính năng
thêm vào (plug-in) của riêng mình.
54 trang |
Chia sẻ: yenxoi77 | Lượt xem: 1193 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu một số giải pháp kiểm thử giao diện tự động sử dụng Ranorex, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ớc sáu:
Đóng chu trình kiểm thử, kết thúc công việc kiểm thử chúng ta cần báo cáo hoặc
ghi lại các kịch bản đồng thời thống kê lại số liệu cụ thể.
- Qui trình kiểm thử tự động:
Hình 2.3. Qui trình kiểm thử tự động phần mềm [3]
Hình 2.3 mô tả qui trình kiểm thử tự động bao gồm bốn bƣớc Bƣớc một:
Phân tích khả năng áp dụng kiểm thử tự động, chúng ta không thể tự động hoá
mọi việc trong kiểm thử phần mềm đƣợc. Có những phần mềm mới hay công
nghệ viết ra phần mềm mà những công cụ kiểm thử tự động hiện tại chƣa hỗ trợ
hoặc chỉ hỗ trợ một phần. Ví dụ rõ ràng nhất là khi chúng ta kiểm thử một trang
Web trên một trình duyệt mới, và lúc đó công cụ kiểm thử tự động chƣa có
phiên bản mới hỗ trợ trên trình duyệt đó Bƣớc hai: Lựa chọn công cụ kiểm thử
tự động thích hợp, sau khi xác định đƣợc sản phẩm hiện tại có thể làm kiểm thử
tự động hay không, bƣớc kế tiếp chúng ta cần xác định nên sử dụng công cụ
kiểm thử tự động nào. Công cụ nào hỗ trợ kiểm thử tự động cho công nghệ mà
sản phẩm sử dụng? Ƣu nhƣợc điểm của từng công cụ? Ngôn ngữ kịch bản nào
10
mà công cụ kiểm thử sử dụng? Nhân sự hiện tại có quen thuộc với công cụ đó
hay không? Bƣớc ba: Xây dựng môi trƣờng làm việc, môi trƣờng làm việc bao
gồm các khái niệm, chu trình, thủ tục và môi trƣờng mà kịch bản kiểm thử tự
động đƣợc thiết kế và viết ra. Bên cạnh đó, nó cũng nên bao gồm luôn cấu trúc
thƣ mục, lƣu trữ các kịch bản kiểm thử cũng nhƣ các mối quan hệ logic giữa các
thành phần Bƣớc bốn: Viết kịch bản kiểm thử, thực thi và phân tích kết quả,
dựa trên các kịch bản kiểm thử đã đƣợc tạo ra bằng kiểm thử thủ công, dựa vào
ngôn ngữ kịch bản mà công cụ kiểm thử tự động hỗ trợ, chúng ta viết các đoạn
mã tƣơng tác với sản phẩm phần mềm trên các môi trƣờng và thực thi nó. Sau
khi thực thi các đoạn mã, chúng ta cần phân tích các kết quả đạt đƣợc và ghi lại
các vấn đề của sản phẩm, nếu có.
2.3. Kiểm thử giao diện ngƣời dùng
Giao diện ngƣời d ng (User Interface - UI) là một phƣơng thức giao tiếp
giữa con ngƣời với các thiết bi, máy móc và chƣơng trình máy tính Trong lĩnh
vực phát triển phần mềm, UI đƣợc thiết kế nhằm mục đích giúp con ngƣời điều
khiển, sử dụng, tƣơng tác với các chƣơng trình phần mềm để đạt đƣợc mục đích
sử dụng của ngƣời d ng Trong lịch sử phát triển, UI đƣợc chia thành nhiều
dạng Trong đó, hai dạng UI đƣợc sử dụng phổ biến cho tới ngày nay là giao
diện dòng lệnh (Command-line interface) và giao diện đồ họa ngƣời d ng
(Graphical user interface - GUI) [1].
Giao diện dòng lệnh là giao diện đƣợc thiết kế để ngƣời sử dụng có thể
tƣơng tác bằng bàn phím thông qua các câu lệnh Giao diện này thƣờng đƣợc
phát triển đi kèm với một chƣơng trình xử l các câu lệnh và chuyển đổi chúng
sang các thao tác hệ thống tƣơng ứng Ƣu điểm của việc sử dụng giao diện dòng
lệnh là tốc độ xử lý nhanh, linh hoạt và khả năng truy cập sâu hơn vào hệ thống
Ngày nay, giao diện dòng lệnh ngƣời d ng đang dần trở nên k m phổ biến, GUI
đƣợc ƣa chuộng hơn bởi tính dễ sử dụng, đặc biệt đối với những ngƣời d ng
thông thƣờng không có kinh nghiệm
11
GUI là một dạng của UI cho ph p ngƣời d ng tƣơng tác với các thiết bị
điện tử thông qua hình ảnh và chữ viết thay cho việc sử dụng các dòng lệnh đơn
thuần GUI đƣợc giới thiệu để khắc phục các nhƣợc điểm của giao diện dòng
lệnh. Một trong số các nhƣợc điểm của giao diện dòng lệnh là tiêu tốn nhiều chi
phí về thời gian và công sức để học và nhớ các câu lệnh điều khiển. Các hành
động ngƣời dùng thực hiện lên GUI thƣờng là các thao tác trực tiếp với các đối
tƣợng đồ họa Ngoài máy tính, GUI đƣợc sử dụng trên hầu hết các thiết bị cầm
tay nhƣ máy nghe nhạc, máy chơi điện tử cầm tay, điện thoại thông minh, các
công cụ văn phòng, v v
Hay ta có thể hiểu đơn giản rằng: Kiểm thử giao diện ngƣời dùng là một kỹ
thuật kiểm thử đƣợc sử dụng để xác định sự hiện diện của các khiếm khuyết trên
một sản phẩm hoặc phần mềm đƣợc kiểm tra bằng cách sử dụng giao diện ngƣời
d ng đồ họa. Kiểm thử GUI là một kỹ thuật kiểm thử trong đó giao diện ngƣời
dùng của ứng dụng đƣợc kiểm tra xem ứng dụng có hoạt động nhƣ mong đợi đối
với hành vi giao diện ngƣời dùng hay không. Kiểm tra GUI bao gồm hành vi
ứng dụng đối với chuyển động bàn phím, chuột và cách các đối tƣợng GUI khác
nhau nhƣ thanh công cụ, nút, thanh thực đơn, hộp thoại, chỉnh sửa trƣờng, danh
sách, hành vi cho ngƣời dùng nhập [1].
2 4 Mộ phƣơng ph p iểm hử giao iện ngƣời ng
iểm hử giao iện ngƣời ng hủ công: Dựa trên tri thức, hiểu biết về
miền của kiểm thử viên Kiểm thử viên tập trung kiểm thử các chức năng quan
trọng của hệ thống hay các kịch bản có thể gây ra lỗi Tuy nhiên, rất nhiều kịch
bản quan trọng có thể bị bỏ sót khi kiểm thử thủ công Trong thực tế, thƣờng có
một nhóm các chuyên gia tập trung giải quyết vấn đề bằng cách đánh giá qua
kinh nghiệm, tìm giải pháp qua thử nghiệm và rút bớt khuyết điểm Một kỹ thuật
khác đƣợc sử dụng là đi qua có nhận thức (Cognitive walkthrough) Kiểm thử
viên lần lƣợt sử dụng các chức năng của chƣơng trình, các hành động và phản
hồi đƣợc ghi lại để đối chiếu với mục tiêu k vọng Cuối c ng, các điểm cần cải
tiến, sửa chữa đƣợc ghi lại Ngoài ra, việc kiểm thử tính dễ sử dụng của chƣơng
12
trình cũng đƣợc kiểm thử viên tiến hành thủ công Kiểm thử UI thủ công có thể
phát hiện đƣợc một số lỗi mà kiểm thử tự động không thể phát hiện đƣợc Tuy
nhiên, phƣơng pháp này yêu cầu nhiều chi phí về thời gian và nhân lực Đồng
thời, độ phủ đạt đƣợc là không cao Đối với các hệ thống có UI phức tạp, kiểm
thử thủ công là giải pháp không khả thi
Hình 2.4. Kiểm thử giao diện thủ công
Hình 2.4 mô tả cách thực thiện kiểm thử giao diện thủ công. Khi kiểm thử
giao giện thủ công chúng ta phải thêm từng bƣớc thực hiện đều bằng tay Đầu
vào của chƣơng trình từng thao tác đều phải ghi lại mỗi khi thực hiện, việc này
sẽ là quá tải với kiểm thử viên khi vào dự án lớn và rất dể xảy ra sự nhầm lẫn
khi kiểm thử.
iểm hử giao iện ngƣời ng ựa n m h nh: Mô hình là một mô tả
đồ họa về hành vi của hệ thống. Nó giúp chúng ta hiểu và dự đoán hành vi của
hệ thống. Quá trình kiểm thử UI tự động dựa trên mô hình bao gồm ba giai đoạn
chính nhƣ sau:
Mô hình hóa hệ thống từ các bản đặc tả và thiết kế của hệ thống: Hệ
thống đƣợc mô hình hóa sử dụng công cụ mô hình hóa c ng với các bản đặc tả,
phân tích thiết kế từ khách hàng Việc này giúp hiểu rõ hơn hệ thống cần kiểm
thử và UI của hệ thống đó
Sinh kịch bản tƣơng tác UI từ mô hình của hệ thống: T y thuộc vào tiêu
chí và thuật toán sinh kịch bản tƣơng tác UI mà số lƣợng kịch bản sinh ra là
13
khác nhau Nhìn chung, kỹ thuật sinh kịch bản tƣơng tác UI từ mô hình cho số
lƣợng kịch bản và độ phủ lớn hơn nhiều so với các kỹ thuật kiểm thử UI khác
Đây là một ƣu điểm đáng chú của kỹ thuật này so với các kỹ thuật còn lại
Chạy các kịch bản tƣơng tác UI trên chƣơng trình cần kiểm thử để thu
đƣợc kết quả Các dự đoán kết quả kiểm thử, giá tri đầu ra mong muốn đƣợc
đƣa vào trƣớc đó để so sánh với giá tri kết quả thực tế sau khi chạy nhằm xác
định kịch bản tƣơng tác UI nào thành công Pha này có thể chạy tự động sử dụng
các công cụ hỗ trợ nhằm giảm thiểu chi phí
Trong những năm gần đây đã có nhiều nghiên cứu về việc sử dụng các mô
hình ph hợp cho kiểm thử UI tự động Trong đó, mô hình đồ thị là mô hình
đƣợc sử dụng phổ biến để mô hình hóa UI của chƣơng trình cần đƣợc kiểm thử
Mô hình này mô tả toàn bộ các chuỗi thao tác ngƣời d ng có thể thực hiện với
các đối tƣợng có trên UI Một số dạng đồ thi đƣợc sử dụng để xây dựng mô
hình nhƣ đồ thi dòng sự kiện, đồ thị tƣơng tác sự kiện, v v. [1].
iểm hử giao iện ngƣời ng ng c ch ghi v ch y i ịch ản
ƣơng c: Kiểm tra GUI có thể đƣợc thực hiện bằng các công cụ tự động hóa.
Việc này đƣợc thực hiện thành hai quá trình. Trong quá trình ghi lại, các bƣớc
kiểm tra đƣợc bắt bởi công cụ tự động hóa. Trong quá trình phát lại, các bƣớc
kiểm tra đƣợc ghi lại đƣợc thực hiện trên ứng dụng đang chạy thử.
Kỹ thuật này đƣợc sử dụng rất phổ biến trong các công cụ kiểm thử UI hiện
nay Các công cụ cài đặt kỹ thuật ghi và chạy lại kịch bản tƣơng tác UI thƣờng
dễ sử dụng đối với ngƣời mới bắt đầu, chƣa có kinh nghiệm nhờ giao diện sử
dụng trực quan Việc kiểm thử hồi quy cũng trở nên dễ dàng và nhanh chóng
hơn Tuy nhiên, các công cụ này có một số hạn chế nhƣ ghi lại một số hành
động không cần thiết, các đối tƣợng không đƣợc sắp xếp Đặc biệt, một sự thay
đổi nhỏ trong thiết kế UI có thể dẫn tới việc thất bại trong hàng loạt kịch bản
tƣơng tác UI liên quan
14
2 5 Mộ c ng cụ iểm hử giao iện ngƣời ng ự động
Trong những năm qua, kiểm thử tự động nói chung và kiểm thử tự động
tƣơng tác giao diện ngƣời dùng thu hút sự quan tâm nghiên cứu rất lớn cả từ các
nhà khoa học đến các công ty phát triển phần mềm. Kết quả là đã có nhiều
phƣơng pháp và công cụ đƣợc đề xuất và xây dựng nhằm hỗ trợ mục tiêu này
[7], [8]. Tuy nhiên, về phƣơng diện sử dụng, các kết quả nghiên cứu mới chỉ
dừng lại ở mức độ thử nghiệm với một số ứng dụng đơn giản. Các công cụ này
cần thời gian để cải tiến trƣớc khi đƣa vào sử dụng. Trong khuôn khổ luận văn
này, em tiến hành tìm hiểu một số công cụ đã đƣợc sử dụng phổ biến tại các
công ty phát triển phần mềm.
Selenium
Selenium
1
là một công cụ kiểm tra phần mềm đƣợc sử dụng để kiểm tra hồi
quy (Regression Testing) Selenium đƣợc d ng để kiểm thử các ứng dụng trên
nền Web Năm 2004, Selenium đƣợc phát triển bởi ThoughtWorks với tên ban
đầu là JavaScriptTestRunner Đến năm 2007, tác giả Jason Huggins rời
ThoughtWorks và gia nhập Selenium Team (thuộc Google), từ đó tiếp tục phát
triển Selenium nhƣ hiện nay Đây là một công cụ kiểm tra mã nguồn mở cung
cấp chức năng phát lại và thu âm để kiểm tra hồi quy.
Bên cạnh mã nguồn mở, Selenium hỗ trợ một loạt các ngôn ngữ bao gồm
Java, Python, PHP, C#, Ruby, thậm chí cả Java Script thuần túy. Selenium là
công cụ mã nguồn mở mạnh mẽ nhất có sẵn và nó dựa trên Java script trong một
giới hạn lớn. Nó phù hợp hơn cho phƣơng pháp phát triển nhanh của việc phát
triển và kiểm thử Tính năng ghi lại của Selenium đƣợc thực hiện nhƣ là một
phần thêm vào trình duyệt Firefox, và cho phép ghi lại, chỉnh sửa và gỡ rối các
kịch bản kiểm thử.
Selenium bao gồm bốn phần: Selenium IDE, Selenium RC, Selenium Grid,
Selenium WebDriver.
1
https://www.seleniumhq.org/
15
Selenium IDE là một công cụ cho phép chúng ta ghi lại một kịch bản và tái
sử dụng kịch bản đó Nó hoạt động nhƣ một thêm vào (Add-on) của trình duyệt
Mozilla Firefox với giao diện trực quan, dễ sử dụng ngay với cả kiểm thử viên
chƣa biết về lập trình. Với Selenium IDE, chúng ta chỉ có thể ghi lại kịch bản
(Record) trên trình duyệt Mozilla Firefox nhƣng có thể tái sử dụng kịch bản này
trên nhiều trình duyệt khác nhƣ Internet Explorer, Google Chrome, v v
Selenium RC cho phép các nhà phát triển tự động hóa quá trình kiểm thử
bằng cách sử dụng bất k ngôn ngữ lập trình nào, phát huy tối đa thế mạnh của
Selenium trong kiểm thử đơn vị Để dễ dàng hơn cho việc kiểm thử, Selenium
RC cung cấp các API và thƣ viện cho mỗi ngôn ngữ đƣợc hỗ trợ: HTML, Java,
Perl, PHP, Ruby, Python, C#
Selenium WebDriver là phiên bản kế nhiệm của Selenium RC Cũng giống
nhƣ Selenium RC, Selenium WebDriver hỗ trợ viết kịch bản kiểm thử bằng các
ngôn ngữ khác nhau nhƣ Java, NET, PHP, Python, Perl, Ruby và kiểm thử viên
có thể sử dụng các điều kiện if, else hay các vòng lặp để tăng tính chính xác cho
kịch bản kiểm thử. Selenium WebDriver có kiến trúc khá đơn giản, điều khiển
trình duyệt trực tiếp từ hệ điều hành.
Selenium Grid là một hệ thống hỗ trợ kiểm thử viên thực thi kịch bản kiểm
thử trên nhiều máy, nhiều trình duyệt một cách song song mà không cần chỉnh
sửa kịch bản kiểm thử Ban đầu, Selenium Grid chỉ hỗ trợ cho Selenium RC
nhƣng sau này đã xuất hiện trên cả Selenium WebDriver. Selenium Grid cho
phép kiểm thử viên thực thi ca kiểm thử trên nhiều máy khác nhau với nhiều
trình duyệt khác nhau Đặc biệt hơn, Selenium Grid còn cung cấp khả năng kiểm
thử với chế độ phân tán.
HP Quick Test Pro (QTP) hoặc HPE Unified Functional Testing (UFT)
Quick Test Professional
2
(QTP) là một công cụ kiểm thử tự động đƣợc thiết
kế bởi Mercury Interactive và sau đó đƣợc mua lại bởi HP. QTP giúp ngƣời
kiểm thử (tester) tiến hành các kiểm tra một cách tự động để xác định lỗi khác
2
16
với kết quả mong muốn của ứng dụng, phần mềm hay chức năng v v. mà ta đang
kiểm tra [10] QTP đƣợc sử dụng rộng rãi để kiểm tra chức năng (Functional
Testing) và tiến hành các hoạt động kiểm thử hồi quy (Regression Testing), giải
quyết các ứng dụng phần mềm Để đơn giản hóa việc tạo và bảo trì thử nghiệm,
nó sử dụng khái niệm kiểm tra từ khóa.
Đây là một công cụ dễ sử dụng và vô cùng thân thiện, hoạt động tốt với
các ứng dụng dựa trên Web và Windows. Nó là một công cụ kiểm thử chức
năng có tính năng lƣu trữ ảnh chụp màn hình của mỗi trang trong suốt quá trình
thực hiện. Vì vậy, ngƣời dùng có thể tham khảo các ảnh chụp màn hình của lần
thực thi trƣớc nếu muốn tham khảo.
Hỗ trợ ghi và phát lại. QTP dựa trên ngôn ngữ Visual Basic Script (VB
Script) nên không yêu cầu một lập trình viên có tay nghề cao và tƣơng đối dễ
dàng khi so sánh với các ngôn ngữ lập trình hƣớng đối tƣợng khác. Hỗ trợ hầu
hết các loại ứng dụng (không chỉ Web app còn có ứng dụng trên Desktop,
Mobile app v.v). Rất hữu ích trong kiểm thử chức năng và kiểm thử hồi quy.
Cho phép theo sát nghiệp vụ dễ dàng khi tích hợp với công cụ quản lý kiểm thử
cho phép lập kế hoạch và theo dõi dễ dàng. Hỗ trợ cho các môi trƣờng phát triển
phần mềm nhƣ SAP, Oracle, NET, Java, v.v. QTP hỗ trợ ứng dụng khác nhau
nhƣ Oracle, Java, SAP, NET, Web Forms, People soft, v.v.
Ranorex
Ranorex
3
cung cấp một loạt các công cụ tự động hóa máy tính để bàn, Web
và di động đƣợc sử dụng để nâng cao chất lƣợng phần mềm của công ty. Nó có
thể thực thi kiểm thử chức năng và phi chức năng trên môi trƣờng Win và Web,
hỗ trợ tất cả các trình duyệt hiện hành. Kiểm thử Mobile trên các hệ điều hành
Android, IOS. Ranorex không có ngôn ngữ lập trình riêng của chính nó, thay
vào đó, nó d ng ngôn ngữ lập trình nhƣ C# và VB.Net. Công cụ hỗ trợ một số
dạng kiểm thử dƣới đây:
3
https://www.ranorex.com/
17
Kiểm thử hƣớng dữ liệu (Data Driven Test): Kiểm thử ứng dụng với các
dữ liệu đa dạng từ nguồn bên ngoài bằng cách kết nối SQL các bảng dữ liệu
hoặc đƣa vào từ các tệp CSV hay tệp Excel.
Kiểm thử hồi quy: Tự động kiểm thử lại chƣơng trình nhiều lần, đảm bảo
chƣơng trình không gặp lỗi bởi những đoạn mã mới
Kiểm thử đa nền tảng, đa thiết bị (Cross Platform & Device Testing): Tự
động kiểm thử chƣơng trình trên các thiết bị khác nhau nhƣ máy tính, điện thoại,
máy tính bảng và các nền tảng khác nhau nhƣ Windows, IOS và Anddroid
Kiểm thử hƣớng từ khóa (Keyword Driven Test): Xây dựng các ca kiểm
thử mọi ngƣời đều có khả năng đọc đƣợc bằng cách thêm một lớp trừu tƣợng và
chia các phần kiểm thử thành các bƣớc có thể hiểu đƣợc ví dụ nhƣ đăng nhập,
tạo mới, chỉnh sửa, xóa, v v
Kiểm thử đa trình duyệt: Tự động và đơn giản hóa quá trình kiểm thử
ứng dụng Web cho nhiều trình duyệt khác nhau Một số trình duyệt web hỗ trợ
nhƣ: Chrome, Firefox, Internet Explorer, v v
Kiểm thử linh hoạt (Agile Testing): Kiểm thử có độ ƣu tiên cao, tích hợp
kiểm thử tự động vào môi trƣờng phát triển linh hoạt và liên tục nhằm phát hiện
lỗi sớm và đẩy nhanh quá trình phát hành phần mềm
Kiểm thử giao diện đồ họa ngƣời d ng tự động (Automated GUI
Testing): Kiểm thử GUI của chƣơng trình bao gồm các phần tử UI và tƣơng tác
của ngƣời d ng lên các phần tử đó
Bảng 2.1 liệt kê những điểm nổi bật của Ranorex so với Selenium và QTP.
Về vấn đề cài đặt thì cài đặt Selenium phức tạp hơn việc cài đặt công cụ QTP và
Ranorex Đối với những ngƣời chƣa có kiến thức về lập trình thì sẽ cảm thấy
khó khăn khi cài đặt và thiết lập môi trƣờng của Selenium. Còn với Ranorex và
QTP thì chúng ta chỉ cần tải về và làm theo các bƣớc cài đặt thông thƣờng là có
thể sử dụng đƣợc.
18
Bảng 2.1. So sánh mức độ thân thiện khi sử dụng công cụ QTP, Selenium và
Ranorex
Selenium QTP Ranorex
C i đặt và cấu hình
Dễ dàng cài đặt cho ngƣời
không phải lập trình viên
Khả năng ảo trì
Dễ dàng bảo trì
Dễ dàng thực thi cho mọi
ngƣời
Dễ dàng thực thi với việc chạy
tệp .exe
Dịch vụ hỗ trợ chuyên nghiệp
Tăng cƣờng hỗ trợ và đào tạo
trong việc thực hiện dự án
Hỗ trợ từng cá nhân
Giấy phép
Miễn phí
Ranorex dễ dàng có thể chạy cho cả các tệp .exe bởi khả năng nhận diện
đối tƣợng mạnh của nó. Dịch vụ hỗ trợ khi sử dụng thì QTP và Ranorex đều
cung cấp hỗ trợ khách hàng chuyên nghiệp chúng có hỗ trợ đào tạo trong việc
thực hiện dự án và có thể hỗ trợ từng cá nhân khi làm việc, còn Selenium thì
không hỗ trợ ngƣời dùng chính thức nào khi đang đƣợc cung cấp dịch vụ.
Nhƣng về mặt giấy phép sử dụng thì Selenium là công cụ mã nguồn mở
nên sử dụng hoàn toàn miễn phí, với QTP muốn sử dụng phải mua giấy phép với
chi phí khoảng 8000 USD còn với Ranorex thì chi phí khoảng 3500 USD/năm
sử dụng Đây chính là hạn chế của Ranorex vì thế nên Ranorex thƣờng chỉ đƣợc
sử dụng ở các dự án lớn với nhiều kinh phí.
19
Bảng 2 2 So nh ính năng ử dụng của Selenium, QTP và Ranorex
Selenium QTP Ranorex
Công nghệ hỗ trợ
Ứng dụng desktop
Ứng dụng web
Ứng dụng mobile
Chụp và ch y l i
Ghi lại hành động
Bảng hành động cho việc chỉnh sửa các bƣớc
sau khi ghi
Khả năng mở rộng
Thực thi kiểm tra song song
Công cụ tự động hóa thử nghiệm
Thiết lập và cấu hình dễ dàng
Tạo các bài kiểm tra mà không cần lập trình
Đã bao gồm đầy đủ IDE
Cấu trúc thử nghiệm mô-đun và tái sử dụng
So sánh dựa trên hình ảnh
Báo cáo đƣợc tích hợp sẵn
X c định và quản lý phần tử UI
Nhận dạng đối tƣợng mạnh mẽ
Kho lƣu trữ đối tƣợng có thể chia sẻ
Trình chỉnh sửa bản đồ đối tƣợng UI
Hỗ trợ cho ID động
Đồng bộ hóa đối tƣợng UI tự động
20
Còn về tính năng của từng công cụ sẽ đƣợc mô tả ở Bảng 2.2. Bảng này
mô tả về công nghệ hỗ trợ thì Ranorex ứng dụng mạnh cho cả Desktop, Web,
Mobile. Còn Selenium chỉ ứng dụng trên nền tảng Web, QTP lại không thể sử
dụng để kiểm thử Web
Cả ba công cụ nêu trên đều có thể chụp và ghi lại hành động nhƣng việc
chỉnh sửa các hành động sau khi ghi lại thì chỉ có Ranorex làm đƣợc vì bảng
hành động đƣợc ghi lại của Ranorex rất rõ ràng và chũng ta có thể thay đổi
chỉnh sửa giá trị biến ngay tại đó
Khi đi sâu vào so sánh giữa Selenium, QTP và Ranorex thì càng nhìn rõ
hơn về lợi thế của Ranorex về khả năng mở rộng để thực thi kiểm tra song song
thì Ranorex và Selenium đều có khả năng thực thi song song nhƣng Ranorex
mạnh mẽ hơn bởi nó có thể tích hợp kiểm tra song song cả Selenium trong khi
chạy, thiết lập cấu hình dễ dàng, tạo các bài kiểm tra không cần lập trình, tính
năng so sánh dựa trên hình ảnh, báo cáo đƣợc tích hợp sẵn những điều này
Ranorex làm rất tốt.
Bên cạnh đó còn một số tính năng nhƣ xác định và quản lý phần tử của
giao diện ngƣời dùng, nhận dạng đối tƣợng mạnh mẽ, kho lƣu trữ có thể chia sẻ,
tích hợp với Visual Studio của Ranorex sẽ đƣợc mô tả chi tiết trong chƣơng tiếp
theo.
Trong Selenium và Ranorex nếu không thể tìm kiếm các thành phần bởi các
địa chỉ id, lớp (class), tên (name) v.v. thì có thể sử dụng xpath để tìm các thành
phần đó trên Web Nhƣng để có thể chỉnh sửa đƣợc xpath trên màn hình giao
diện thì chỉ có ở tính năng của Ranorex, vì Ranorex cho ph p ngƣời dùng trực
tiếp chỉnh sửa mã.
Tính năng nhận dạng đối tƣợng mạnh mẽ của Ranorex nhận dạng và phân
tích ngay lập tức các yếu tố giao diện ngƣời dùng của Windows, Web hoặc ứng
dụng di động. Sử dụng các cơ chế nhận dạng đối tƣợng mạnh mẽ làm chìa khóa
để tự động kiểm tra thành công. Nhận thông tin kiểm soát chi tiết trên phần tử
21
giao diện ngƣời d ng Kho lƣu trữ đối tƣợng của Ranorex có thể chia sẻ nhƣng ở
Selenium thì không làm đƣợc điều này.
Với những tính năng và sự hỗ trợ nổi bật của Ranorex, chúng ta có thể
nhận thấy rằng Ranorex là công cụ tốt nhất ngoại trừ vấn đề về chi phí. Ranorex
chỉ cho ngƣời dùng dùng thử trong vòng ba mƣơi ngày chứ không đƣợc dùng
miễn phí. Vì vậy, nếu muốn sử dụng công cụ này thì chi phí phải trả là khá cao
với các công ty phát triển phần mềm.
Qua sử dụng ba công cụ Selenium, QTP, Ranorex thì thấy rằng Ranorex đã
biết sử dụng và nâng cao những tính năng sẵn có của các công cụ và cũng khắc
phục đƣợc những điểm yếu của các công cụ đó để có đƣợc một công cụ kiểm
thử mạnh mẽ vƣợt lên trên các công cụ khác.
Tầm quan trọng của tự động hóa quy trình kiểm thử giao diện ngƣời d ng
Các hệ thống lớn có UI đƣợc thiết kế phức tạp và thay đổi không ngừng Để đảm
bảo chất lƣợng UI thì chi phí tiêu tốn trong quá trình kiểm thử UI là rất lớn. Do
đó, thực hiện kiểm thử UI thủ công là không khả thi. Tự động hóa quá trình này
đem lại một số lợi ích trong phát triển phần mềm. Thay vì phải chạy toàn bộ các
kịch bản kiểm thử UI nhàm chán nhƣ một cỗ máy, kiểm thử viên chỉ cần để
chúng chạy tự động và phân tích báo cáo kiểm thử đƣợc sinh ra. Kiểm thử viên
có thể tiết kiệm đƣợc thời gian để làm các công việc phức tạp hơn mà không thể
tự động hóa. Với kiểm thử UI tự động, kiểm thử viên dễ dàng tái sử dụng các
kịch bản kiểm thử trong quá trình kiểm thử hồi quy, kiểm thử đa nền tảng và
kiểm thử đa thiết bị
Một số công cụ hỗ trợ ghi và chạy lại kịch bản đƣợc sử dụng nhằm tự động
hóa quá trình chạy kịch bản Tuy nhiên, các kịch bản phải đƣợc thiết kế thủ công
bởi kiểm thử viên Quá trình sinh kịch bản kiểm thử thủ công yêu cầu chi phí về
thời gian là rất lớn và độ phủ đạt đƣợc thấp Hơn nữa, số lƣợng và chất lƣợng
kịch bản phụ thuộc nhiều vào độ phức tạp UI của chƣơng trình và trình độ
chuyên môn của kiểm thử viên Tự động hóa quá trình sinh kịch bản kiểm thử
UI có thể khắc phục đƣợc những nhƣợc điểm trên Chúng là những l do chính
dẫn đến việc tự động hóa quá trình kiểm thử UI ngày càng trở nên quan trọng
22
Bảng 2.3. Một s ính năng chuy n âu của Selenium, QTP và Ranorex
Selenium QTP Ranorex
X c định đ i ƣợng
Sử dụng Xpath4
Chỉnh sửa Xpath trên màn hình
giao diện
Đồng bộ hóa đối tƣợng giao
diện tự động
X c định và quản lý phần tử
UI
Nhận dạng đối tƣợng mạnh mẽ
Kho lƣu trữ đối tƣợng có thể
chia sẻ
Trình chỉnh sửa bản đồ đối
tƣợng UI
Hỗ trợ cho ID động
Đồng bộ hóa đối tƣợng UI tự
động
Hội nhập
Tệp thử nghiệm thực thi để tích
hợp đơn giản với máy chủ CI5
Tích hợp với Visual Studio
Tự động tạo các báo cáo tƣơng
thích JUnit
4
XPath đƣợc định nghĩa là đƣờng dẫn XML. Nó là một cú pháp hoặc ngôn ngữ để tìm
kiếm bất k phần tử nào trên trang web bằng cách sử dụng biểu thức XML path. XPath
đƣợc sử dụng để tìm vị trí của bất k phần tử nào trên trang web bằng cách sử dụng
cấu trúc DOM HTML
5
Continuous Integration là một thực hành của việc liên tục tích hợp những thay đổi tạo
ra với project và test lại nó hàng ngày hoặc thƣờng xuyên hơn
23
Chƣơng này đã trình bày tổng quan về kiểm thử, khái niệm UI và các kỹ
thuật sử dụng trong kiểm thử UI nhƣ: kiểm thử thủ công, kiểm thử dựa trên mô
hình, ghi và chạy lại kịch bản tƣơng tác UI Từ đó nhấn mạnh tầm quan trọng
của tự động hóa trong quá trình kiểm thử UI Một số công cụ hỗ trợ kiểm thử UI
tự động hiện nay đƣợc trình bày trong chƣơng này vẫn còn hạn chế trong việc
sinh và chạy kich bản tƣơng tác UI Trong chƣơng tiếp theo sẽ trình bày về
Ranorex, cách hoạt động và các tính năng của Ranorex trong kiểm thử giao diện.
24
Chƣơng 3: iểm thử giao diện ngƣời dùng sử dụng Ranorex
Trong kiểm thử giới thiệu những khái niệm chung, kiểm thử tự động và
kiểm thử giao diện tự động trong đó nhấn mạnh hơn về kiểm thử giao diện tự
động. Khung kiểm thử giao diện tự động là một tập hợp các giả định, các khái
niệm và công cụ đƣợc cung cấp để hỗ trợ cho quy trình kiểm thử tự động. Nó là
một hệ thống tích hợp thiết lập các qui tắc tự động hóa một sản phẩm cụ thể chủ
yếu là về giao diện của sản phẩm. Vì giao diện của mỗi sản phẩm đƣợc coi là
phần quan trọng của sản phẩm đó, và cũng là phần gần nhƣ là chính nhất mà
khách hàng quan tâm và sử dụng. Với mục tiêu áp dụng kiểm thử giao diện tự
động trong chƣơng này sẽ trình bày về công cụ kiểm thử tự động Ranorex. Và
chƣơng này sẽ mô tả các tính năng nổi bật của Ranorex.
3.1. Giới thiệu về Ranorex
Nói về kiểm tra UI, tất cả những gì mà bạn phải làm là viết kịch bản thử
nghiệm, một vài kịch bản cho mỗi môi trƣờng nhƣng nó hơi tẻ nhạt. Và bạn
không muốn thử nghiệm của mình thất bại. Vì vậy, việc bạn phải sửa lại kịch
bản của mình hoặc viết kịch bản mới mỗi khi có bản nâng cấp hoặc một nút thay
đổi, một hộp thoại, văn bản thay đổi, di chuyển hay bất cứ điều gì thay đổi trong
sản phẩm. Những thay đổi chỉ mất một vài giờ, mỗi thay đổi mỗi tập lệnh có thể
không phải là vấn đề nhƣng tất nhiên khi sự thay đổi là nhiều thì lúc đó việc
kiểm thử bằng tay sẽ khiến bạn phải đau đầu. Khi đó việc sử dụng các công cụ
tự động sẽ hơn rất nhiều so với việc dùng thử nghiệm bằng tay.
Và Ranorex sẽ giúp các kiểm thử viên khắc phục một số khó khăn khi thực
hiện kiểm thử, Ranorex là một công cụ linh hoạt và cho phép kiểm tra giao diện
ngƣời dùng tất cả trong một công cụ, nơi bạn có thể chạy thử nghiệm tự động
liền mạch trên tất cả các môi trƣờng và thiết bị. Công cụ kiểm tra tự động
Ranorex cung cấp cho bạn khả năng tự động hóa việc kiểm tra giao diện ngƣời
d ng trên máy tính để bàn, Web và di động bằng cách ghi lại các hành động
kiểm tra giao diện ngƣời dùng của bạn mà không cần phải viết bất k mã nào.
25
Tuy nhiên, tất cả các bản ghi của công cụ tự động hóa kiểm tra Ranorex có thể
có một tệp mã trong mỗi bản ghi, cho phép bạn tùy chỉnh các tập lệnh thử
nghiệm của mình nếu bạn muốn. Chức năng cốt lõi của Ranorex là một API dựa
trên khuôn khổ .NET. Tất cả các công cụ tự động hóa thử nghiệm đều dựa trên
các tiêu chuẩn (ví dụ XML) và tạo ra mã C# và VB.NET thực. Ngoài ra, tính
năng nhận dạng đối tƣợng tuyệt vời của Ranorex cho phép bạn xác định các yếu
tố giao diện ngƣời dùng của ứng dụng phần mềm của bạn, bất kể đó là giao diện
ngƣời dùng Web, di động hoặc Windows Ngƣời thử nghiệm và Nhà phát triển
có thể viết và thực thi các kiểm tra giao diện ngƣời dùng dễ dàng trong môi
trƣờng ƣu tiên của họ.
3 2 Tính năng nổi bật
Dễ dàng sử dụng cho người mới bắt đầu, ứng dụng mạnh mẽ cho các
chuyên gia. Với áp lực thời gian của kiểm thử hồi quy bằng tay và đa nền tảng,
một công cụ kiểm thử tự động là thứ không thể thiếu. Nhiều công cụ kiểm thử tự
động đòi hỏi kỹ năng mã hóa nâng cao, chỉ giới hạn ở một số nền tảng nhất định
hoặc yêu cầu tích hợp phức tạp để tự động hóa giao diện ngƣời dùng. Ranorex
Studio giải quyết những thách thức này với các công cụ dễ sử dụng để tự động
hóa thử nghiệm không cần sử dụng mã. Những ngƣời thử nghiệm có ít hoặc
không có kinh nghiệm lập trình có thể sử dụng chức năng chụp và phát lại của
Ranorex để xây dựng các kịch bản cho các trƣờng hợp kiểm tra tự động mà
không cần viết các dòng mã. Phƣơng pháp tích hợp sẵn của Ranorex Studio đơn
giản hóa các chiến lƣợc nhƣ kiểm tra theo hƣớng dữ liệu, kiểm tra theo từ khóa
và thực thi thử nghiệm dựa trên các điều kiện. Các chuyên gia tự động hóa thử
nghiệm cũng có thể nhanh chóng tự động kiểm tra trong C# hoặc VB.NET bằng
cách sử dụng IDE tự động hóa đầy đủ của Ranorex Studio [9].
Tính năng nhận dạng đối tượng mạnh mẽ nhận dạng và phân tích ngay lập tức
các yếu tố giao diện ngƣời dùng của Windows, Web hoặc ứng dụng di động. Sử
dụng các cơ chế nhận dạng đối tƣợng mạnh mẽ làm chìa khóa để tự động kiểm
tra thành công. Nhận thông tin kiểm soát chi tiết trên phần tử giao diện ngƣời
26
d ng Các đối tƣợng đƣợc xuất hiện ngay sau khi thực hiện ghi kịch bản, chúng
đƣợc mô tả rất chi tiết bằng cách trong bản ghi có hiển thị từng hành động chúng
ta click vào và có các mục (item) tƣơng ứng với hành động. Góc bên phải màn
hình của Ranorex còn hiển thị cả hình ảnh tƣơng ứng cho các hành động (action)
và các mục (item) Đây là một điểm nổi bất khác biệt với các công cụ kiểm tra
tự động khác của Ranorex.
Hình 3.1. Tính năng nhận d ng đ i ƣợng m nh mẽ
Tính năng nổi bật nhận dạng cho thấy đƣợc tính năng nhận dạng đối tƣợng
của Ranorex là rất mạnh mẽ Khi các hành động đƣợc ghi thì các mục tƣơng ứng
của hành động cũng đƣợc xuất hiện và bên cạnh đó khi trỏ chuột tới từng mục ta
có thể thấy đƣợc hình ảnh tƣơng ứng Và các đoạn mã liên quan cũng đƣợc hiển
thị.
Chỉnh sửa và ghi hành động dễ dàng tạo các dự án tự động hóa thử
nghiệm mà không cần mã hóa. Dễ dàng ghi lại và phát lại quy trình tự động hóa
thử nghiệm bằng trình ghi Ranorex. Chỉnh sửa bản ghi theo cách thủ công nhƣ
mong muốn có thể chỉnh sửa thay đổi hay dùng lại các hành động, kéo và thả
các bƣớc tự động hóa thử nghiệm riêng lẻ từ kho lƣu trữ đối tƣợng để bổ sung
các bản ghi.
27
Hình 3.2. Hình ảnh chỉnh sửa c c h nh động
Hình 3.2 có thể chỉnh sửa trực tiếp các hành động đã đƣợc ghi ngay tại
Ranorex mà không cần phải ghi lại bản mới, có thể thay đổi tên biến, giá trị đầu
vào để tạo những kịch bản trực tiếp tại đây Có thể đổi tên bản thu hay thêm bản
thu để tạo thành các kịch bản kiểm thử (test case). Có thể tách hành động thành
các bản thu khác để dễ dàng tái sử dụng cho nhiều các kịch bản kiểm thử (test
case) khác nhau và thậm chí Ranorex có thể lấy dữ liệu từ tệp MS. Excel để hỗ
trợ kiểm thử.
Máy ghi Ranorex (Ranorex recorder) giống nhƣ mọi công cụ tự động hóa
thử nghiệm khác, công cụ này cho ph p ngƣời dùng ghi lại các bƣớc thử nghiệm
dƣới dạng tác vụ trên ứng dụng đang đƣợc thử nghiệm và sau đó phát lại sau.
Các bƣớc đƣợc ghi cũng có thể đƣợc sửa đổi và tinh chỉnh. Các bản ghi có thể
đƣợc duy trì lƣu trữ với sự trợ giúp của kho lƣu trữ Ranorex.
28
Cách ghi một hành động trong Ranorex, đầu tiên sẽ phải tạo một kịch bản
mới rồi đặt tên cho kịch bản đó, chọn nơi muốn lƣu trữ kịch bản rồi nhấn nút tạo
(Create). Nhấp đúp chuột vào tệp tin (File) Recording module, một tab mới sẽ
mở ra trong bộ thử nghiệm trong chế độ ghi bộ kiểm thử. Nhấp vào nút ghi
(Record) để bắt đầu quay. Chọn tên ứng dụng bằng cách nhấn nút thêm ứng
dụng trong cửa sổ tiếp theo. Bây giờ nút ghi đã đƣợc bật. Nhấp vào ghi (Record)
để bắt đầu quay. Thực hiện các hành động thử nghiệm bằng cách nhấp vào các
phần tử giao diện ngƣời dùng. Khi tất cả các hành động đã đƣợc thực hiện, bấm
vào nút Stop trong máy ghi âm. Bây giờ mô-đun ghi sẽ đƣợc điền bởi các hành
động đƣợc thực hiện. Một loạt các tùy chọn có sẵn để sửa đổi từng bƣớc. Nó có
thể đƣợc thực hiện chỉ bằng cách nhấp chuột phải vào từng bƣớc cụ thể đó
Mỗi bƣớc đƣợc biểu diễn trong bảng hành động và đƣợc kết nối với một
mục trong kho lƣu trữ. Mục kho lƣu trữ đại diện cho một phần tử giao diện
ngƣời dùng duy nhất. Ngoài ra còn có một cột chú thích trong mô-đun ghi âm.
Bất k nhận x t nào đều có thể viết thêm đƣợc ở đây và sẽ đƣợc phản ánh trong
báo cáo. Có thể thêm nhận xét ở mọi bƣớc.
Trong mô-đun ghi, có một loạt các tùy chọn thực đơn (Menu) nhƣ Cắt, sao
chép, xóa, hoàn tác, làm lại, v.v. Ngoài ra có thể sắp xếp các bƣớc, di chuyển lên
hoặc xuống các nút trong thực đơn (Menu).
Hình 3.3. Hình mô tả c c h nh động đã đƣợc ghi
29
Hình 3.3 mô tả các hành động đã đƣợc ghi lại trong một trƣờng hợp thử
nghiệm (test case) với các hành động đƣợc ghi lại trực tiếp khi ta sử dụng giao
diện của một chƣơng trình Một số hành động cụ thể nhƣ kích chuột chọn hành
động đều đƣợc lƣu lại trên giao diện hiển thị của Ranorex. Các hành động đƣợc
sắp xếp theo thứ tự lần lƣợt. Ở góc bên phải màn hình còn có thể nhìn thấy hình
ảnh thao tác khi chúng ta thực hiện tƣơng đƣơng với nó là các mục hiển thị bên
dƣới góc màn hình bên phải.
Chạy ca kiểm thử, để chạy kịch bản kiểm thử chỉ cần nhấp nút Run trong
chế độ xem bộ thử nghiệm. sau khi nhấp vào Run, công cụ sẽ bắt đầu xây dựng
tất cả các giải pháp kiểm thử. Tiếp theo là thực hiện tuần tự tất cả các bƣớc đƣợc
ghi lại khi thực hiện đến đâu ta có thể nhìn lại toàn bộ quá trình thực thi tới đó
Chỉnh sửa mã tạo các kịch bản tự động hóa thử nghiệm linh hoạt bằng các
ngôn ngữ lập trình chuẩn Vì thƣ viện Ranorex dựa trên Microsoft.NET
framework, khi làm việc với Ranorex không yêu cầu phải học một ngôn ngữ
kịch bản độc quyền, đây là một lợi thế cho các kiểm thử viên (tester). Ta có thể
trực tiếp sử dụng API Ranorex và tạo các dự án tự động hóa thử nghiệm mạnh
hoàn toàn bằng C# hoặc VB.NET [9].
Hình 3.4. Chỉnh sửa mã trong Ranorex
Hình 3.4 hiển thị cho các lập trình viên hay những kiểm thử viên am hiểu
về lập trình có thể chỉnh sửa các đoạn mã theo mong muốn.
30
Tích hợp Visual Studio truy cập trực tiếp các API tự động hóa lõi của
Ranorex từ Visual Studio và viết các kịch bản tự động hóa thử nghiệm mạnh mẽ.
Microsoft Visual Studio là một môi trƣờng phát triển tích hợp (IDE) của
Microsoft. Microsoft Visual Studio đƣợc sử dụng để phát triển các chƣơng trình
máy tính cho Microsoft Windows, cũng nhƣ các trang Web, ứng dụng Web,
dịch vụ Web và ứng dụng di động.
Hình 3.5. Tích hợp Visual Studio
Hình 3.5 là cửa sổ hiển thị thao tác để tích hợp giữa Ranorex và Visual
Studio. Bắt đầu Microsoft Visual Studio Chuyển đến tệp dự án mới (New
project) Chọn NET Framework 4 5 2 hoặc cao hơn và chọn ngôn ngữ lập trình
của bạn Chúng ta sẽ sử dụng Visual C # trong cửa sổ này Chọn ứng dụng
Console từ danh sách Nhập tên cho dự án và nhấp OK.
Trực tiếp tích hợp Ranorex vào nhiều hệ thống kiểm soát nguồn Ranorex
tích hợp trực tiếp với các hệ thống điều khiển phiên bản TFS, Git và SVN. Các
nhóm có thể quản lý toàn bộ các dự án tự động hóa thử nghiệm mà không cần
31
rời khỏi Ranorex Studio, từ việc xác định môi trƣờng thử nghiệm để kiểm tra
các thay đổi đối với hệ thống kiểm soát phiên bản. Những lợi ích của Ranorex
khi tích hợp đƣợc mô tả nhƣ sau:
Đảm bảo rằng các nhà phát triển và ngƣời thử nghiệm có thể truy cập phiên
bản mới nhất của dự án tự động hóa thử nghiệm mọi lúc, ngay lập tức xem xét
thay đổi và khôi phục lỗi phần mềm một cách nhanh nhất. Có thể chúng ta đang
sử dụng hệ thống phiên bản khác, nhƣng điều đó không đáng ngại bởi vì toàn bộ
cấu trúc dự án Ranorex dựa trên tệp vì vậy chúng ta có thể dễ dàng tích hợp
Ranorex trong bất k phiên bản nào [7].
Tích hợp Ranorex vào môi trường phát triển kiểm thử tự động là điều cần
thiết cho cả nhà phát triển và ngƣời kiểm thử. Ranorex Studio cung cấp tất cả
các điều kiện cần thiết để đảm bảo các nhà phát triển và ngƣời kiểm thử có thể
làm việc liền mạch với nhau trên các dự án kiểm thử tự động. Bởi vì Ranorex
dựa trên Microsoft .Net framework, nó tích hợp hoàn hảo với Visual Studio. Các
nhà phát triển có thể truy cập Ranorex Studio từ bên trong Visual Studio IDE và
mở rộng các kịch bản tự động hóa thử nghiệm trực tiếp trong mã bằng C# và
VB.NET [9].
Kiểm tra trình duyêt chéo (tích hợp Ranorex với Selenium) Selenium
WebDriver đƣợc tích hợp vào API lõi của Ranorex để bạn có thể tạo các thử
nghiệm qua trình duyệt bằng cách sử dụng các công cụ không mã hóa của
Ranorex Studio hoặc các ngôn ngữ lập trình chuẩn C# và VB NET Đặt Ranorex
Spy làm việc để xác định mạnh mẽ các yếu tố giao diện ngƣời dùng và quản lý
chúng bằng kho lƣu trữ đối tƣợng Ranorex. Chạy thử nghiệm tự động song song
trên các nút Selenium. Với Ranorex Studio, bạn có thể dễ dàng xác định cấu
hình chạy thử nghiệm tùy chỉnh cho các thử nghiệm trên nhiều trình duyệt của
mình, tiến hành kiểm tra theo hƣớng dữ liệu hoặc có điều kiện và tạo báo cáo
thử nghiệm mạnh mẽ.
Selenium WebDriver là một giải pháp mã nguồn mở hàng đầu để tự động
kiểm tra ứng dụng web. Selenium WebDriver bao gồm một API để tự động hóa
32
các hành động của trình duyệt, các ràng buộc cụ thể về ngôn ngữ và một loạt
trình điều khiển dành riêng cho trình duyệt. Tại một thời điểm, dự án Selenium
cũng bao gồm một IDE với một công cụ chụp và phát lại (capture-and-replay)
đơn giản cho trình duyệt Firefox. Bằng cách so sánh, Ranorex Studio là công cụ
tự động hóa đầy đủ tính năng cho các ứng dụng dành cho máy tính để bàn và
thiết bị di động cũng nhƣ các ứng dụng Web. Nó cung cấp tất cả các công cụ
bạn cần cho kiểm thử web tự động, bao gồm chụp và phát lại, một IDE đầy đủ,
khả năng báo cáo đƣợc tích hợp - với toàn bộ sức mạnh của trình quản lý Web
Selenium đƣợc tích hợp vào API lõi của Ranorex. Bạn không cần phải chọn giữa
Selenium WebDriver và Ranorex Studio nữa, nhƣng có thể tận dụng tối đa cả
hai. Bằng cách này bạn có thể truy cập vào môi trƣờng Selenium mà không cần
học mã của nó.
Báo cáo và phân tích lỗi phân tích kỹ lƣỡng các lần chạy thử nghiệm với
báo cáo thử nghiệm dựa trên XML cung cấp một cái nhìn tổng quan toàn diện về
toàn bộ luồng thực hiện kiểm tra. Một bƣớc thử nghiệm đã thất bại hay không,
chỉ cần nhìn vào ảnh chụp màn hình trong báo cáo để dễ dàng truy xuất lại lỗi
hoặc chỉnh sửa trực tiếp bƣớc không thành công trong báo cáo. Bạn có thể tùy
chỉnh thêm báo cáo để chia sẻ và xem nó trên máy Ranorex không đƣợc cài đặt
trên, hoặc tích hợp báo cáo tƣơng thích Junit6 vào hệ thống CI để nâng cao tính
minh bạch và nhận phản hồi tức thời.
Gần nhƣ tất cả kết quả chạy ca kiểm thử đã đƣợc xuất ra Chƣơng trình sẽ
báo luôn là có lỗi hay không có lỗi. Có lỗi thì sẽ đƣợc bôi đỏ toàn bộ phần gây
lỗi có ảnh hiển thị rõ ràng để ta dễ ràng nhận ra vị trí báo lỗi mà không cần phải
ngồi dò lại từ đầu.
6
Junit là một framework unit testing của lập trình hƣớng đối tƣợng Java. JUnit rất
quan trọng trong sự phát triển của test - driven của lập trình viên ,và nó là 1 trong
những thành phần của unit testing frameworks đƣợc gọi chung là xUnit có nguồn gốc
với JUnit.
33
Hình 3.6. Kết quả phân tích lỗi
Kết quả phân tích lỗi đã hiển thị kết quả của ca kiểm thử. Nếu ca kiểm thử
có lỗi thì sẽ đƣợc báo lại bằng màu đỏ và hình ảnh của lỗi cũng đƣợc hiển thị để
giúp kiểm thử viên dễ dàng kiểm tra. Nếu ca kiểm thử thành công thì hình tròn
màu xanh sẽ xuất hiện và kết quả sẽ báo ca kiểm thử thành công. Cách hiển thị
lỗi rõ ràng của Ranorex là một điểm hơn hẳn các công cụ khác và cách hiển thị
lỗi cũng có chút thay đổi ở các phiên bản Ranorex khác nhau. Nhƣng vẫn là màu
đỏ là báo lỗi còn màu xanh là kiểm thử thành công.
Chế độ bảo trì chế độ bảo trì cho phép bạn nắm bắt và giải quyết các lỗi
nhất định trong quá trình thực hiện kiểm tra. Sau đó, bạn có thể áp dụng các bản
sửa lỗi cho bộ thử nghiệm của mình từ báo cáo. Điều này tiết kiệm thời gian bởi
vì bạn không phải để toàn bộ thử nghiệm chạy qua để bắt đầu chẩn đoán và sửa
lỗi.
34
Hình 3.7. Kích ho t chế độ bảo trì
Kích hoạt chế độ bảo trì bằng cách sử dụng công tắc trong chế độ xem bộ
kiểm tra. Bây giờ khi bạn chạy thử nghiệm của bạn, nó sẽ đƣợc thực hiện trong
chế độ bảo trì. Khi bạn đóng chế độ xem bộ thử nghiệm và mở lại, chế độ bảo trì
sẽ bị tắt một lần nữa.
35
Chƣơng 4: Ứng dụng và thực nghiệm
Trong chƣơng này sẽ trình bày ứng dụng thực tế một phần mềm đƣợc sử
dụng công cụ Ranorex để test đó là phần mềm Keepass một phần mềm bảo vệ
mật khẩu.
4.1. Giới thiệu về phần mềm Keepass
Trong thời đại công nghệ phát triển nhƣ hiện nay việc sở hữu tài khoản cá
nhân không còn đơn thuần nữa. Mỗi cá nhân sử dụng rất nhiều tài khoản trên
các trang khác nhau vì yêu cầu công việc và giải trí Trƣờng hợp bạn sử dụng
cùng một mật khẩu cho tất cả các trang nếu bị lấy cắp mật khẩu thì bạn mất hết
tài khoản Trƣờng hợp bạn lƣu mỗi trang một tài khoản nên sử dụng thêm phần
mềm hỗ trợ quản lý mật khẩu. KeePass Password Safe7 là chƣơng trình mã
nguồn mở nhỏ gọn để quản lý Password trong Windows. Keepass là một phần
mềm miễn phí sử dụng mã nguồn mở (chứng nhận của OSI). Chƣơng trình này
d ng cơ sở dữ liệu đƣợc mã hóa (Encrypt) cho phép dùng một khóa quan trong
(key file) hay một mã Password duy nhất thay thế cho rất nhiều Password khác
nhau của ngƣời dùng trong những ứng dụng, cửa sổ khác nhau [12]. Một số tính
năng của phần mềm Keepass là: Bảo mật nhanh, nhiều khóa ngƣời dùng, trình
tạo mật khẩu ngẫu nhiên, hỗ trợ đa ngôn ngữ v.v. KeePass có hai phiên bản
chính là có thể cài đặt (Installable) và có thể di động (Portable) Ngƣời sử dụng
có thể sao chép bản Portable vào USB và đem sử dụng trên bất cứ máy tính nào.
Tự động đăng nhập với tính năng TCATO (Two Channel Auto - Type
Obfuscation): thực chất, điều này khá quan trọng, bởi vì nó ngăn chặn việc
ngƣời khác sử dụng bàn phím trƣớc tiên để đăng nhập, và những thông tin này
hoàn toàn có thể bị ghi nhớ bằng chƣơng trình keylogger thông thƣờng. Mặt
khác, TCATO đƣợc tích hợp đủ để khiến cho những ứng dụng keylogger bị
7
https://keepass.info/
36
“nhầm lẫn” với việc sử dụng clipboard của Windows để chuyển từng phần trong
chuỗi ký tự auto – text của ứng dụng Nhƣng có một điểm hơi bất tiện ở đây là
TCATO mặc định chƣa đƣợc kích hoạt, các bạn hãy chọn Entry > Auto-Type và
đánh dấu vào ô Two-channel auto-type obfuscation [13]. Hoạt động tƣơng thích
với tất cả các trình duyệt mà không cần tới plug – in hỗ trợ: KeePass là một ứng
dụng chạy độc lập, do vậy tính linh hoạt rất cao, ngƣời sử dụng không cần phải
cài đặt bất k plugin nào.
4.2 Thực nghiệm
Đầu tiên trƣớc khi thực nghiệm cần mở và chạy chƣơng trình Keepass
Nhấn Start cửa sổ tiếp theo sẽ hiển thị. Hình 4.1. là một phần mã nguồn của ứng
dụng này khi hiển thị bằng bộ công cụ MS. Visual Studio. Vì Keepass là một
phần mềm mã nguồn mở nên chúng ta có thể chỉnh sửa để có nhiều phiên bản
khác nhau trong quá trình kiểm thử.
Hình 4.1. Mở và ch y chƣơng nh hử nghiệm
37
Hình 4.2. Cửa sổ mật khẩu hiển thị
Tiếp theo, ngƣời dùng cần gõ mật khẩu bảo mật cho toàn bộ chƣơng trình
Đây là mật khẩu duy nhất mà ngƣời dùng cần nhớ khi sử dụng chƣơng trình này
sau đó nhấn OK cửa sổ giao diện chính đƣợc hiển thị nhƣ Hình 4.2.
Khi mở chƣơng trình cửa sổ nhập mật khẩu hiển thị ta cần nhập mật khẩu
lƣu trữ vào rồi nhấn nút OK cửa sổ giao diện sẽ đƣợc hiển thị nhƣ Hình 4.3.
Hình 4.3. Giao diện chính của chƣơng nh
38
Thực nghiệm 1: Kiểm tra chức năng di chuyển con trỏ tới phần tử yêu cầu.
Sau khi mở chƣơng trình thực nghiệm Bƣớc 1: vào View trên thanh công
cụ Bƣớc 2: chọn Sort by sau đó Bƣớc 3: click chuột vào mục Title. Mong muốn
kết quả đầu ra là trỏ chuột thay đổi vị trí từ vị trí ban đầu ở mục User name
chuyển sang mục Title.
Hình 4.4. Giá trị an đầu khi thực hiện thử nghiệm
Sử dụng Ranorex để kiểm tra (test) chƣơng trình dựa trên thử nghiệm đầu
vào và đầu ra nhƣ mong muốn nếu kết quả là không có lỗi nghĩa là chƣơng trình
đã không thể thay đổi vị trí trỏ chuột nhƣ mong muốn của ngƣời dùng từ đó cần
báo cho lập trình viên sửa lỗi của chƣơng trình
39
Hình 4.5. C c h nh động đƣợc ghi khi thực hiện thử nghiệm
Hình 4.5 khi thực hiện thử nghiệm từng hành động đều đƣợc ghi lại một
cách rõ ràng bởi Ranorex. Từng bƣớc click chuột hay các giá trị đầu vào của
trƣơng chình luôn đi kèm hình ảnh hiển thị.
Hình 4.6. Kết quả ch y thử nghiệm từ thử nghiệm
40
Kết quả chạy thử nghiệm giống nhƣ kết quả đầu vào mong muốn điều này
chứng tỏ chƣơng trình có lỗi ở vị trí con trỏ mũi tên di chuyển trong cửa sổ hiển
thị.
Hình 4.7. Đo n mã chứa lỗi
Hình 4.7 hiển thị đoạn mã chứa lỗi di chuyển con trỏ nhƣ trên đã mô tả.
Giờ lập trình viên sửa mã này sẽ có đƣợc chƣơng trình thực hiện không cón lỗi
di chuyển con trỏ mũi tên nữa. Toàn bộ đoạn mã (code) đƣợc sử dụng comment
là đoạn mã thể hiện chức năng di chuyển con trỏ trong giao diện phần mềm.
Thực nghiệm 2: Kiểm tra chức năng hiển thị sự sắp xếp của cửa sổ màn
hình chƣơng trình
Khi cửa sổ giao diện của chƣơng trình hiển thị Bƣớc 1: chọn View trong
thanh công cụ Bƣớc 2: chọn đến Window Layout cửa sổ hiện tại đang ở kiểu
Stacked Bƣớc 3: chuyển về kiểu Side by Side (sắp xếp các phần tử theo chiều
41
dọc màn hình). Nếu kết quả hiển thị mà không thay đổi thứ tự phần tử thì
chƣơng trình có lỗi mong muốn kết quả báo của Ranorex là thành công.
Hình 4.8. Giao diện hiển thị sự sắp xếp các phần tử
Hình 4.9. Hiển thị c c h nh động khi thực hi chƣơng nh
42
Ban đầu giao diện đang phân chia thứ tự các phần tử sắp xếp giống nhƣ Hình 4.8
nhƣng giao diện mong muốn khi kích chuột sang Side by Side là kiểu sắp xếp
các phần tử theo chiều dọc.
Hình 4.10. Kết quả khi thực thi
Hình 4.11. Đo n mã chƣơng nh gây a ỗi
Kết quả hiển thị thành công có nghĩa chƣơng trình có lỗi, không thay đổi
kiểu sắp xếp nhƣ mong muốn kích chuột. Vấn đề này sẽ đƣợc các kiểm thử viên
43
thông báo lại với các lập trình viên để lập trình viên có thể tìm ra lỗi của chƣơng
trình và chỉnh sửa lại chúng.
Hình 4 11 là đoạn mã chứa lỗi sắp xếp phần tử hiển thị đƣợc tìm ra. Sử
dụng công cụ kiểm thử viên sẽ không phải thiết kế toàn bộ kịch bản tƣơng tác
UI có thể có Thay vào đó, họ chỉ cần tải các tệp kịch bản đã ghi lên công cụ đề
xuất Các kịch bản mới sẽ đƣợc sinh ra chỉ với một vài bƣớc t y chỉnh các tình
huống mà kiểm thử viên muốn kiểm thử Cuối c ng kiểm thử viên chỉ cần đƣa
toàn bộ tệp mã nguồn kịch bản đƣợc sinh ra vào Ranorex để chạy lại và thu
đƣợc kết quả kiểm thử.
44
Chƣơng 5 ế uận
Tự động hóa quá trình kiểm thử nói chung và kiểm thử tƣơng tác giao diện
ngƣời dùng đƣợc xem là giải pháp hiệu quả góp phần giải quyết đƣợc hai vấn đề
bao gồm đảm bảo chất lƣợng và giảm chi phí, thời gian trong quá trình phát triển
chƣơng trình phần mềm Đã có nhiều giải pháp và công cụ đƣợc đề xuất nhằm
thực hiện hóa mục tiêu này nhƣ kiểm thử tƣơng tác giao diện ngƣời dùng sử
dụng công cụ Ranorex hay sử dụng các công cụ ghi và chạy lại các kịch bản
tƣơng tác UI Tuy nhiên, chi phí để sử dụng công cụ Ranorex khá lớn, công cụ
nhƣ Ranorex chỉ hỗ trợ ghi và chạy mà không hỗ trợ sinh các kịch bản tƣơng tác
UI.
Luận văn đã tiến hành nghiên cứu về kiểm thử tự động, kiểm thử tƣơng tác
giao diện ngƣời dùng nhằm củng cố các kiến thức nền tảng. Luận văn đi sâu tìm
hiểu một số công cụ hỗ trợ kiểm thử tƣơng tác giao diện ngƣời dùng nhằm chỉ ra
những điểm nổi bật và hạn chế của từng công cụ. Từ những khảo sát này, luận
văn nhận thấy Ranorex là bộ công cụ có nhiều tính năng nổi bật nhất. Ngoài khả
năng xác định các đối tƣợng UI chính xác, Ranorex còn cung cấp tính năng cho
ph p kiểm thử viên chỉnh sửa kịch bản sử dụng các đoạn mã giúp cho việc kiểm
thử linh hoạt hơn Ranorex là công cụ kiểm thử giao diện ngƣời d ng đƣợc cho
là nổi trội nhất hiện nay cả về mặt tính năng cũng nhƣ mức độ thân thiện với
ngƣời sử dụng. Luận văn cũng đã áp dụng kiến thức tìm hiểu thực hiện kiểm thử
một số phiên bản cho một ứng dụng phần mềm sử dụng công cụ Ranorex nhằm
minh chứng cho những hiểu biết đã nghiên cứu.
Mặc d đã có nhiều cố gắng trong thời gian thực hiện luận văn nhƣng với
kinh nghiệm và kiến thức về công nghệ còn hạn chế nên luận văn không tránh
khỏi những thiếu sót. Sự áp dụng những kiến thức tìm hiểu đƣợc mới chỉ dừng
lại ở một ứng dụng nhỏ, mà vẫn chƣa thử áp dụng cho các bài toán hay ứng
dụng lớn. Sự so sánh mới chỉ dừng lại ở ba công cụ Selenium, QTP, Ranorex
45
chứ chƣa mở rộng đƣợc nhiều công cụ. Trong quá trình áp dụng thử nghiệm,
học viên sẽ chủ động cấy lỗi cho ứng dụng để có đƣợc các phiên bản khác nhau.
Tuy nhiên, các phiên bản áp dụng hiện tại mới chỉ chứa một số lỗi cơ bản, với
các tình huống có thể gây lỗi đối với đối tƣợng giao diện là textbox Luận văn
đang đƣợc tiếp tục phát triển để xử l với các đối tƣợng khác nhƣ button,
dateandtime, checkbox, v.v. Ngoài ra, việc cho ph p kiểm thử viên tự đinh nghĩa
một số tình huống có thể gây lỗi mới giúp cơ sở dữ liệu đầy đủ hơn Luận văn
cũng sẽ tiếp tục nghiên cứu thêm các công cụ hỗ trợ kiểm thử tự động khác nhƣ
kế hoạch kiểm thử (Test Plan), ca kiểm thử (Test Case) và tiến hành tích hợp
vào Ranorex, tối đa sự thuận tiện cho kiểm thử viên. Luận văn cũng sẽ cố gắng
tạo ra một giao diện mở với tài liệu đầy đủ để ngƣời dùng viết các tính năng
thêm vào (plug-in) của riêng mình.
46
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Nguyễn Mạnh Hùng. Phƣơng pháp hỗ trợ sinh kịch bản tƣơng tác giao diện
cho kiểm thử tự động. Khóa luận tốt nghiệp Đại học, Trƣờng Đại học Công
nghệ, ĐHQGHN, 2017
[2] Lê Thị Kim Chung. Cải tiến và sử dụng công cụ kiểm thử Ranorex trong
các dự án phần mềm. Luận văn Thạc sĩ kỹ thuật chuyên ngành Khoa học
máy tính, Trƣờng Đại học Bách Khoa, Đại học Đà Nẵng, 2017.
Tiếng Anh
[3] Boris Beizer and Van Nostrand Reinhold (1990), Software Testing
Techniques, Second Edition.
[4] Glenford J. Myers, Corey Sandler, and Tom Badgett (2011), The Art of
Software Testing (3rd ed.). Wiley Publishing.
[5] Glenford J Myers (1979), “The Psychology and Economics of Program
Testing”, The art of software testing, pp 11
[6] Lakshay Sharma (2017), Selenium Webdriver, Selenium Grid.
[7] Dinh Duong Tran, Duy Tung Nguyen, Pham Ngoc Hung (2018), A method
for Automated User Interface Testing of Windows-based Applications, In
Proceedings of the 9th International Symposium on Information and
Communication Technology (SoICT 2018) (accepted)
[8] Silviu Andrica and George Candea (2011), WaRR: A tool for high-fi delity
web application record and replay. In Dependable Systems & Networks
(DSN), 2011 IEEE/IFIP 41st International Conference on. IEEE, pp. 403–
410.
[9] https://www.ranorex.com/
[10] https://viblo.asia/p/tim-hieu-ve-qtp-phan-1-ORNZqwDn50n
[11] https://securitybox.vn/2016/kiem-thu-gui-la-gi/
[12]
[13]
ly-mat-khau-an-tuong-24792.html
Các file đính kèm theo tài liệu này:
- luan_van_nghien_cuu_mot_so_giai_phap_kiem_thu_giao_dien_tu_d.pdf