Robot Framework là một khung kiểm thử tự động mã nguồn mở, đƣợc tài trợ bởi tổ chức Nokia Siemens Networks, bắt đầu phát triển năm 2005 và được cấp phép Apache 2.0. Robot Framework sử dụng phương pháp kiểm thử dựa trên từ khóa, kiểm thử hướng dữ liệu, thích hợp cho cả kiểm thử tự động thông thường và kiểm thử chấp nhận tự động. Nó cho phép sử dụng đơn giản bảng cú pháp để tạo ra các trường hợp kiểm thử một cách thống nhất, có khả năng sinh ra từ khóa ở mức cao hơn từ những từ khóa đang tồn tại.
Với Robot Framework, các kết quả báo cáo và các bản ghi đƣợc định dạng HTML thuận tiện cho việc lập báo cáo. Nó cung cấp một thƣ viện API để kiểm thử viên tạo thêm các thƣ viện kiểm thử với Python hoặc Java. Nó cũng cung cấp một giao diện dòng lệnh và một tập tin đầu ra định dạng XML để tích hợp vào cơ sở hạ tầng hiện có của hệ thống. Robot Framework cũng hỗ trợ cho sinh các trường hợp kiểm thử hướng dữ liệu. Nó cũng được xây dựng hỗ trợ cho các biến, đặc biệt là thực hành kiểm thử trong các môi trường khác nhau, kiểm thử các công nghệ khác nhau như Web GUI, các ứng dụng Swing, và TCP/IP dựa trên các giao thức độc quyền.
Thực tế, Robot Framework không làm bất kỳ hoạt động kiểm tra cụ thể nào. Thay vào đó, nó hoạt động nhƣ một front end sử dụng các thƣ viện nhƣ Selenium để thực hiện. Robot Framework và Selenium là một sự kết hợp tốt cho kiểm thử ứng dụng web. Công cụ cung cấp chức năng gắn thẻ để phân loại và chọn trường hợp kiểm thử được thực hiện. Robot Framework còn cho phép thiết lập (setup) và dọn dẹp (teardown) ở mức ca kiểm thử (test-case) và ở mức bộ kiểm thử (test-suite). Việc hỗ trợ kiến trúc mô-đun giúp sinh ra các bài kiểm thử cho các ứng dụng với nhiều giao diện khác nhau.
Robot Framework có thể kiểm thử các ứng dụng viết bằng các ngôn ngữ lập trình khác nhau. Kiến trúc mô đun ở mức cao đƣợc thể hiện ở Hình 3.1.
Hình 3.1. Kiến trúc của Robot Framework.
Các tập tin trong RobotFramework được sắp xếp dưới dạng các bảng.
Các bảng đƣợc định dạng linh hoạt, có thể sử dụng giá trị phân tách bằng tab (TSV), html, ReStructured (text reST), hoặc plain text. Trong một tập tin kiểm thử có thể có bốn bảng: TestCases, Variables, Keywords, Settings.
Trong đó bảng TestCases là bảng bắt buộc, nó chứa tất cả các ca kiểm thử bạn đang muốn thực hiện.
3.2. Các thư viện chuẩn của Robot Framework
Một trong những điểm mạnh của Robot Framwork là nó có một bộ thƣ viện rất mạnh cho phép người lập trình sử dụng để xây dựng các kịch bản kiểm thử. Một số thƣ viện chuẩn đƣợc xây dựng sẵn trong Robot Framework. Khi cài đặt Robot Framework, người dùng có thể sử dụng các từ khóa có trong các thƣ viện chuẩn này để kiểm thử mà không cần xây dựng.
Các thƣ viện đó là:
Builtln là một thƣ viện chuẩn của Robot Framework. Nó cung cấp tập hợp các từ khóa chung chung cần thiết thường xuyên sử dụng. Thư viện này đƣợc nhập tự động,vì vậy, nó luôn có sẵn. Một số từ khóa đƣợc cung cấp bởi thƣ viện nhƣ từ khóa dùng để kiểm tra, xác minh (Should Be Equal, Should Contain), từ khóa dùng chuyển đổi (Convert To Integer) cho các mục đích khác nhau (Log, Sleep, Run Keyword If, Set Global Variable).
Collections là thƣ viện chuẩn cung cấp các từ khóa cho xử lý danh sách và từ điển trong Python. Các từ khóa đƣợc cung cấp để sửa đổi và nhận đƣợc giá trị từ danh sách và từ điển: Append To List, Get From Dictionary, dùng thẩm tra nội dung của nó: Lists Should Be Equal, Dictionary Should Contain Value.
DateTime là thƣ viện chuẩn cung cấp các từ khóa để xử lý các giá trị ngày và giờ. Ví dụ nhƣ, các từ khóa hỗ trợ việc sinh ra và chuyển đổi các giá trị ngày và giờ: Get Current Date, Convert Time, làm các phép tính đơn giản:
Subtract Time From Date, Add Time To Time. Nó cũng hỗ trợ các định dạng ngày và giờ khác nhau, và có thể đƣợc sử dụng bởi các thƣ viện khác.
Thư viện chuẩn Dialogs cung cấp phương tiện để tạm dừng việc thực hiện kiểm thử và nhận thông tin từ người dùng. Các hộp thoại là có hơi khác nhau phụ thuộc vào kiểm thử chạy trên Python hay trên Jython. Tuy vậy, chúng cung cấp các chức năng giống nhau.
OperatingSystem là thƣ viện chuẩn của Robot Framework cung cấp từ khóa cho các tác vụ liên quan đến hệ điều hành. Thƣ viện cho phép các tác vụ liên quan đến hệ điều hành khác nhau có thể thực hiện trong hệ thống. Nó có thể thực hiện các lệnh nhƣ Run, tạo và xóa tập tin và thƣ mục: Create File, Remove Directory, kiếm tra tập tin và thƣ mục có tồn tại không File Should Exist, Directory Should Be Empty và điều khiển các biến môi trường Set Environment Variable.
Process là thƣ viện chuẩn của Robot Framework hỗ trợ cho các tiến trình đang chạy. Một số công dụng chính của thƣ viện: đang chạy tiến trình trong hệ thống và chờ đợi để hoàn thành quá trình, sử dụng từ khóa Run Process, bắt đầu các tiến trình trên nền, sử dụng từ khóa Start Process, chờ tiến trình bắt đầu để hoàn thành sử dụng từ khóa Wait For Process, hoặc dừng tiến trình, từ khóaTerminate Process, Terminate All Processes.
Remote là một thƣ viện đặc biệt, khác hoàn toàn với các thƣ viện chuẩn khác. Nó không chứa một từ khóa nào. Nó đóng vai trò là một proxy giữa Robot Framework và các thƣ viện kiểm thử thực tế triển khai ở bất cứ đâu. Có hai lý do chính để sử dụng thƣ viện Remote và các giao diện thƣ viện nó cung cấp. Nó giúp các thƣ viện kiểm thử khác có thể đƣợc chạy trên các máy khác nhau và đƣợc thực hiện sử dụng bằng bất kỳ ngôn ngữ lập trình hỗ trợ giao thức XML-RPC.
Thƣ viện Screenshot cung cấp từ khóa để chụp lại màn hình trên máy khi bài kiểm thử thực hiện. Nếu Robot Framework đƣợc triển khai sử dụng với Python thì để sử dụng đƣợc thƣ viện Screenshot một trong số mô-đun wxPython, PyGTK, Python Imaging Library (PIL) cần đƣợc cài đặt.
String là một thƣ viện chuẩn của Robot Framework, cung cấp các từ khóa để thao tác và xác minh chuỗi. Một số từ khóa thao tác chuỗi nhƣ Replace String Using Regexp, Split To Lines, từ khóa xác minh nội dung nhƣ Should Be String. Một số từ khóa đƣợc xây dựng sẵn trong thƣ viện Builtln đƣợc sử dụng với chuỗi nhƣ: Catenate, Get Length, Length Should Be, Should (Not) Be Empty, Should (Not) Be Equal (As Strings/Integers/Numbers), Should (Not) Match (Regexp).
Telnet là một thƣ viên chuẩn của Robot Framework. Nó cung cấp từ khóa để Robot Framework có thể kết nối tới Telnet server và thực hiện lệnh.
Các từ khóa nhƣ Open Connection, Close Connection.
XML là thƣ viện chuẩn cung cấp từ khóa để tạo, sửa, xác minh tập tin XML.
3.3. Các thư viện mở rộng của Robot Framework
Ngoài các thƣ viện chuẩn có sẵn khi cài đặt Robot Framework, một số thƣ viện mở rộng khác cần đƣợc cài đặt mới sử dụng đƣợc.
SeleniumLibrary là thƣ viện kiểm thử tự động của Robot Framework có sử dụng công cụ kiểm thử web Selenium. Thƣ viện là một sự kết hợp mạnh mẽ của cú pháp dữ liệu kiểm thử đơn giản và hỗ trợ cho các trình duyệt khác nhau. Thƣ viện sử dụng công cụ Selenium Remote Control để điều khiển kiểm soát một trình duyệt web. Nó làm việc trong hầu hết các trình duyệt hiện đại như Firefox, Google Chrome sử dụng ngôn ngữ Python. Trước khi thực hiện các bài kiểm thử có sử dụng thƣ viện SeleniumLibrary thì lệnh Selenium Server phải được thực hiện trước. Để thực hiện lệnh này có thể sử dụng từ khóa Start Selenium Server. Thêm nữa, từ khóa Open Browser phải được sử dụng để mở trình duyệt ở địa chỉ mong muốn trước bất kỳ từ khóa nào của thƣ viện đƣợc sử dụng. Tất cả mọi từ khóa của thƣ viện cần tìm một phần tử trên trang đều cần một đối số để định vị, thường là trường id.
Selenium2Library cũng là một thƣ viện mở rộng của Robot Framework dùng để kiểm thử web, tương tự SeleniumLibrary. Thư viện sử dụng
Selenium 2 (WebDriver) để điều khiển, kiểm soát một trình duyệt.
Selenium2Library thực hiện kiểm thử trong một trình duyệt thực, làm việc đƣợc với hầu hết các trình duyệt hiện đại nhƣ Firefox, Google Chrome và cũng sử dụng ngôn ngữ Python. Thƣ viện cần đƣợc nhập khẩu vào bộ kiểm thử trước khi chạy. Tương tự SeleniumLibrary, từ khóa Open Browser phải được sử dụng để mở trình duyệt ở địa chỉ mong muốn trước bất kỳ từ khóa nào của thƣ viện đƣợc sử dụng. Tất cả mọi từ khóa của thƣ viện cần tìm một phần tử trên trang đều cần một đối số để định vị, thường là trường id.
Androidlibrary là một thƣ viện kiểm thử của Robot Framework dùng cho tất cả các nhu cầu tự động hóa của Android. Nó sử dụng Calabash Android để giao tiếp với các ứng dụng được trang bị Android tương tự như làm thế nào để WebDriver Selenium giao tiếp đƣợc với một trình duyệt web.
Các từ khóa thƣ viện cung cấp Capture Screenshot, Connect To Testserver, Install Application, Press Menu Button, Screen Should Contain, Screen Should Not Contain, Scroll Down, Scroll Up, Send Key, Set Basic Auth, Set Device Endpoint, Set Device Url, Set Text, Set Webview Text, Start Emulator, Start Testserver, Start Testserver With Apk, Stop Emulator, Stop Testserver, Swipe Left, Swipe Right, Touch Button, Touch Image Button, Touch Position, Touch Text, Touch View, Touch Webview Element, Uninstall Application, Wait For Device, Webview Scroll To, Webview Should Contain.
Eclipse Library là thƣ viện của Robot Framework dùng để kiểm thử các ứng dụng Eclipse RCP (Rich Client Platform – RCP) sử dụng bộ SWT.
Nó cũng hỗ trợ cho các ứng dụng Java đơn giản không dùng Eclipse RCP nhƣng sử dụng SWT.Eclipse RCP là nền tảng để xây dựng và triển khai các ứng dụng trên máy khách. SWT là bộ thƣ viện để làm giao diện.
3.4. Tạo dữ liệu kiểm thử
3.4.1. Cú pháp dữ liệu kiểm thử
Phần này trình bày toàn bộ cú pháp dữ liệu kiểm thử của Robot Framework. Các phần sau sẽ giải thích làm thế nào để thực sự tạo ra trường hợp kiểm thử, các bộ kiểm thử.
Cấu trúc phân cấp để bố trí các ca kiểm thử đƣợc xây dựng nhƣ sau.
Các ca kiểm thử đƣợc tạo ra trong các tệp ca kiểm thử (Test case). Một tệp ca kiểm thử tự động tạo ra một bộ kiểm thử có chứa các ca kiểm thử tệp đó.
Một thƣ mục chứa các tệp ca kiểm thử tạo thành một bộ dữ liệu kiểm thử ở mức cao. Ví dụ thƣ mục bộ kiểm thử có các bộ đƣợc tạo ra từ các tập tin ca kiểm thử nhƣ bộ kiểm thử con của nó. Một thƣ mục bộ kiểm thử cũng có thể chứa các thƣ mục bộ kiểm thử khác. Cấu trúc phân cấp này có thể lồng nhau ở mức sau hơn nếu cần. Thƣ mục bộ kiểm thử có thể có một tập tin khởi tạo đặc biệt.
Thêm nữa, các thƣ viện kiểm thử chứa các từ khóa ở mức thấp. Tệp tài nguyên chứa các biến và từ khóa người dùng ở mức cao. Các tệp biến cung cấp cách linh hoạt để tạo ra các biến hơn tệp tài nguyên.
3.4.2. Các kiểu định dạng tệp được hỗ trợ
Dữ liệu kiểm thử của Robot Framework đƣợc định nghĩa trong định dạng bảng, bằng cách sử dụng ngôn ngữ đánh dấu siêu văn bản (HTML), giá trị phân tách bằng tab (TSV), văn bản thuần túy (plain text), hoặc định dạng reStructuredText (reST). Các chi tiết về các loại định dạng, cũng nhƣ những lợi ích chính và các vấn đề với chúng đƣợc giải thích trong các phần tiếp theo. Loại định dạng đƣợc sử dụng phụ thuộc vào ngữ cảnh, nhƣng các định dạng văn bản thuần túy đƣợc khuyến khích nếu không có nhu cầu đặc biệt.
Robot Framework lựa chọn cách phân tích cú pháp cho các dữ liệu kiểm thử dựa trên phần mở rộng của tập tin. Các phần mở rộng của tập tin đƣợc nhận dạng là .html, .htm và .xhtml cho HTML, .tsv cho TSV, .txt cho văn bản thuần túy.
Tập tin HTML hỗ trợ định dạng các bảng và phần văn bản xung quanh nhằm bổ sung thông tin cho các ca kiểm thử. Trong các tập tin HTML, dữ liệu kiểm thử đƣợc xác định trong các bảng riêng biệt nhƣ hình 3.2. Robot Framework nhận ra các bảng dữ liệu kiểm thử dựa trên các văn bản trong ô đầu tiên của chúng. Robot Framework bỏ qua tất cả dữ liệu bên ngoài bảng đƣợc nhận dạng.
Hình 3.2. Sử dụng định dạng HTML.
Tập tin TSV có thể được soạn thảo trong chương trình bảng tính vì cú pháp đơn giản. Nó cũng dễ dàng để chỉnh sửa bằng cách sử dụng trình soạn thảo văn bản thông thường.
Các định dạng TSV có thể đƣợc sử dụng trong các dữ liệu kiểm thử Robot Framework cho tất cả các mục đích tương tự như HTML. Trong một tập tin TSV, tất cả các dữ liệu trong một bảng lớn. Bảng dữ liệu kiểm thử đƣợc công nhận từ một hoặc nhiều dấu hoa thị (*), theo sau là một tên bảng bình thường và một dấu hoa thị (*), như Hình 3.3. Tất cả mọi thứ trước khi bảng được công nhận đều được bỏ qua tương tự như dữ liệu bên ngoài bảng dữ liệu trong HTML.
Hình 3.3. Sử dụng định dạng TSV.
Các định dạng văn bản thuần túy (plain text) dễ dàng soạn thảo và chỉnh sửa bằng cách sử dụng bất kỳ trình soạn thảo văn bản nào, nó cũng làm việc rất tốt trong việc kiểm soát phiên bản. Vì vậy, Kiểu định dạng này đã trở thành định dạng dữ liệu đƣợc sử dụng nhất với Robot Framework. Các định dạng văn bản thuần tuý là kỹ thuật khác tương tự như định dạng TSV nhưng các dấu phân cách giữa các ô là khác nhau. Các định dạng TSV sử dụng các tab, nhƣng trong định dạng văn bản đơn giản bạn có thể sử dụng hai hay nhiều không gian để phân tách giá trị. Các tên bảng dữ liệu kiểm thử phải có một hoặc nhiều dấu hoa thị (*) trước tên của chúng tương tự như ở các định dạng TSV. Nếu không dấu hoa thị thì công cụ sẽ không nhận dạng đƣợc đó là tên một bảng. Cũng tương tự như ở các định dạng TSV, tất cả mọi cái trước khi nhận dạng bảng đầu tiên đều bị bỏ qua. Minh họa ở Hình 3.4.
Hình 3.4. Sử dụng định dạng văn bản thuần túy.
3.4.3. Các loại bảng dữ liệu kiểm thử
Dữ liệu kiểm thử đƣợc cấu trúc trong bốn loại bảng: Setting, Variable, Test case và Keyword.
Bảng Setting dùng nhập khẩu các thƣ viện kiểm thử, các tập tin tài nguyên, các tập tin biến, dùng để định nghĩa các siêu dữ liệu cho các bộ kiểm thử và các trường hợp kiểm thử.
Bảng Variable dùng để định nghĩa các biến mà có thể sử dụng ở bất cứ nơi đâu trong dữ liệu kiểm thử.
Bảng Test case dùng để tạo ra các ca kiểm thử từ những từ khóa có sẵn trong các thư viện hoặc do người dùng tạo ra.
Bảng Keyword dùng để tạo các từ khóa ở mức người dùng từ những từ khóa ở mức thấp hơn đã tồn tại. Các từ khóa ở mức thấp này có thể nằm
trong các thƣ viện chuẩn, các thƣ viện mở rộng đã đƣợc xây dựng sẵn của Robot Framework.
3.4.4. Các quy tắc phân tích dữ liệu
Dữ liệu bị bỏ qua: Khi phân tích các dữ liệu kiểm thử , Robot Framework sẽ bỏ qua các dữ liệu sau. Tất cả các bảng mà không bắt đầu với một tên bảng đƣợc ghi nhận ở ô đầu tiên. Mọi phần tử trên hàng đầu tiên của một bảng ngoài trừ phần tử ở ô đầu, tất cả các dữ liệu trước khi bảng đầu tiên đƣợc nhận dạng. Nếu định dạng dữ liệu cho phép dữ liệu giữa các bảng, cũng đƣợc Framework bỏ qua. Nó cũng bỏ qua tất cả các dòng trống đƣợc sử dụng để làm các bảng dễ đọc hơn, tất cả các ô trống ở cuối mỗi hàng, tất cả những dấu xổ ngƣợc (\), tất cả các ký tự theo sau kí tự thăng (#), khi nó là ký tự đầu tiên của một ô. Điều này có nghĩa rằng dấu thăng có thể đƣợc sử dụng để nhập các ý kiến trong các dữ liệu kiểm thử. Nó bỏ qua tất cả các dữ liệu định dạng HTML không phải là bảng trong dữ liệu kiểm thử.
Khi Robot khung bỏ qua một số dữ liệu, các dữ liệu này sẽ không có sẵn trong bất kỳ báo cáo kết quả nào. Thêm vào đó, hầu hết các công cụ đƣợc sử dụng với Robot khung cũng bỏ qua chúng.Vì vậy, muốn dữ liệu này tồn tại để hiển thị thông tin trong kết quả đầu ra của Framework, đặt nó vào văn bản tài liệu hoặc siêu dữ liệu khác của các ca kiểm thử hoặc bộ kiểm thử, hoặc nhập nó vào với các từ khóa trong thƣ viện Builtin là Log hoặc Comment.
Xử lý khoảng trắng: Robot Khung xử lý khoảng trắng theo cách giống nhƣ xử lý trong mã nguồn HTML. Dòng mới, dấu xuống dòng, và các tab đƣợc chuyển đổi thành khoảng trắng. Hàng đầu và dấu khoảng trắng trong tất cả các ô đều đƣợc bỏ qua. Nhiều khoảng trống liên tiếp đƣợc gộp vào một khoảng trống duy nhất. Bên cạnh đó, không gian không bị phá vỡ (non-breaking) được thay thế bằng không gian bình thường. Điều này giúp tránh phải debug lỗi khó khi một không gian không bị phá vỡ đƣợc vô tình sử dụng thay vì một không gian bình thường. Nếu hàng đầu, hoặc khoảng trống liên tiếp là cần thiết, chúng phải đƣợc thoát ra. Dòng mới, dấu xuống dòng, các tab, và không gian không bị phá vỡ có thể đƣợc tạo ra bằng cách sử dụng trình tự thoát \ n, \ r, \ t, và \ xA0 tương ứng.