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

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.

pdf54 trang | Chia sẻ: yenxoi77 | Lượt xem: 928 | Lượt tải: 2download
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:

  • pdfluan_van_nghien_cuu_mot_so_giai_phap_kiem_thu_giao_dien_tu_d.pdf
Luận văn liên quan