Công cụ kiểm thử tự động động

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và xây dựng công cụ kiểm thử ứng dụng web (Trang 39)

Hiện nay, để kiểm thử ứng dụng bằng kỹ thuật kiểm thử động có khá nhiều công cụ kiểm thử tự động. Các công cụ này được thiết kế nhằm thực thi một hoặc nhiều loại kiểm thử ứng dụng Web. Trong 1.4 của luận văn đã đề cập đến các loại kiểm thử cần chú trọng cho ứng dụng Web. Các công cụ được giới thiệu và phân tích sau đây có thể đáp ứng và hỗ trợ các loại kiểm thử đó.

2.2.1. Công cụ kiểm thử giao diện ngƣời dùng

So sánh giữa kiểm thử ứng dụng Web và kiểm thử phần mềm thông thường thì kiểm thử giao diện người dùng là cái cần nhấn mạnh hơn cả. Đối với ứng dụng Web, giao diện người dùng được hiển thị thông qua các trình duyệt Web, trên lý thuyết thì chỉ cần nhà phát triển đáp ứng được các chuẩn mà nhà cung cấp trình duyệt Web đề ra thì các nội dung hiển thị trên các trình duyệt khác nhau sẽ là đồng nhất, tuy nhiên thực tế thì với những trình duyệt khác nhau, nội dung hiển thị có thể khác nhau đôi chút. Chính vì vậy việc kiểm thử giao diện người dùng ứng dụng Web là rất quan trọng. Các trình duyệt Web hiện nay rất đa dạng và phong phú, mỗi trình duyệt lại có nhiều phiên bản trên nhiều thiết bị khác nhau như máy vi tính để bàn, máy tính xách tay, điện thoại thông minh, máy tính bảng, tivi thông minh, không chỉ vậy thiết bị này lại có hệ điều hành và độ phân giải khác nhau. Do đó, để kiểm thử giao diện người dùng trên tất cả các trình duyệt, các thiết bị, độ phân giải màn hình khác nhau là gần như không thực hiện được.

Browser Shots là công cụ giúp kiểm thử viên có thể kiểm tra giao diện người dùng. Để sử dụng công cụ, kiểm thử viên chỉ cần nhập địa chỉ ứng dụng Web cần kiểm thử giao diện và lựa chọn các trình duyệt, môi trường, độ phân giải màn hình cùng các tùy chọn khác như trong hình 2.7. Sau khi thực thi, Browser Shots sẽ trả kết quả là các hình ảnh chụp lại giao diện người dùng ứng dụng Web trên các trình duyệt khác nhau. Hình 2.8 cho thấy sự khác biệt của giao diện một ứng dụng Web trên các trình duyệt khác nhau sau khi kiểm tra bằng Browser Shots. Từ các hình ảnh này, kiểm thử viên có thể quan sát và đưa ra đánh giá về giao diện người dùng. Như hình 2.8 có thể thấy giao diện người dùng trên trình duyệt “Lynx 2.8.8” và “Links 2.7” hoạt động trên hệ điều hành “Debian 6.0” bị lỗi.

Hình 2.7. Giao diện Browser Shots

Hình 2.8. Giao diện người dùng trên các trình duyệt khác nhau.

2.2.2. Công cụ kiểm thử hàm

Selenium IDE là công cụ hỗ trợ việc kiểm thử hàm tự động cho các ứng dụng Web. Công cụ này được cài đặt như một add-on cho trình duyệt Firefox. Selenium IDE hoạt động bằng cách ghi lại các thao tác trên trình duyệt và chạy lại.

Giao diện Selenium IDE gồm 3 phần chính đó là danh sách các ca kiểm thử (1), danh sách các thao tác (2) và các sự kiện, lỗi cùng cảnh báo (3) như hình 2.9. Kiểm thử viên khi tiến hành kiểm thử một chức năng của ứng dụng sẽ ghi lại các thao tác bằng cách bật Selenium IDE và tiến hành thực thi ca kiểm thử bằng cách thủ công, công cụ sẽ ghi và lưu lại các thao tác này. Sau đó, kiểm thử viên chỉ cần thay đổi các giá trị đầu vào cho các tham số được lưu trong ca kiểm thử và chạy lại bằng cách nạp ca kiểm thử mới vào Selenium IDE.

Hình 2.10. Các thao tác xử lý được Selenium IDE ghi lại.

Ca kiểm thử có thể được lưu dưới dạng mã Selenese hoặc mã HTML chứa các thông tin như thứ tự thực hiện, tên thành phần được xử lý, giá trị được gán. Hình 2.11 minh họa một đoạn mã HTML của ca kiểm thử được Selenium IDE ghi lại. Các hành động sẽ được lưu rõ trong các thẻ “tr”, các thẻ “td” sẽ lưu các thông tin về hành động. Trong hình 2.11, thẻ “tr” đầu tiên lưu hành động mở trang web, thẻ “tr” thứ hai lưu hành động nhập dữ liệu vào thành phần có mã id là “Name” với nội dung “admin”, thẻ “tr” thứ ba lưu hành động nhập dữ liệu vào thành phần có mã id là “Pass” với nội dung “123” và thẻ “tr” cuối cùng lưu hành động nhấp chuột vào thành phần có mã id là “commit”. Để thực hiện ca kiểm thử khác, kiểm thử viên chỉ cần thay đổi các giá trị ở thẻ “td” thứ ba trong các hành động và nạp các ca kiểm thử đã sửa vào công cụ.

<tr>

<td>open</td>

<td>http://login.toi88.com</td> <td></td>

<tr> <td>type</td> <td>id=Name</td> <td>admin</td> </tr> <tr> <td>type</td> <td>id=Pass </td> <td>123</td> </tr> <tr> <td>click</td> <td>id=commit </td> <td></td> </tr>

Hình 2.11. Mã HTML của ca kiểm thử được Selenium IDE lưu lại.

Qua cài đặt và thực nghiệm có thể thấy Selenium IDE là một công cụ gọn nhẹ và dễ sử dụng, công cụ có thể thực thi tự động và tái sử dụng các ca kiểm thử. Tuy nhiên công cụ chưa tự sinh được các ca kiểm thử và chỉ có thể hoạt động trên trình duyệt Firefox. Một nhược điểm lớn của Selenium IDE là công cụ này chưa hoạt động tốt trên các ứng dụng viết bằng Flash, Silverlight hay Ajax.

2.2.3. Công cụ kiểm thử khả năng chịu tải của ứng dụng Web

Khác với ứng dụng C-S truyền thống, ứng dụng Web không thể tính toán, ước lượng trước được số lượng người dùng có thể có, chính vì vậy việc kiểm tra giới hạn truy vấn tối đa mà ứng dụng Web có thể xử lý khi có áp lực cao là rất quan trọng. Công cụ loader.io được cung cấp dưới dạng ứng dụng Web là công cụ hỗ trợ cho việc kiểm thử khả năng chịu tải của ứng dụng Web. Công cụ loader.io cho phép kiểm thử viên có thể thực hiện việc kiểm thử khả năng chịu tải của ứng dụng Web theo ba kiểu:

1. Sử dụng số lượng lớn truy vấn trong một ca kiểm thử, không giới hạn số lượng truy vấn trên một giây.

2. Sử dụng số lượng lớn truy vấn trong một ca kiểm thử nhưng quy định giới hạn số lượng truy vấn trong một giây.

3. Liên tục duy trì số lượng lớn truy vấn trong một ca kiểm thử trong suốt thời gian quy định.

Hình 2.12. Giao diện công cụ loader.io

Loader.io cung cấp rất nhiều tùy chọn cho kiểm thử viên từ đơn giản đến phức tạp. Có thể truy vấn theo phương thức GET / POST / PUT/ PATCH / DELETE, giao thức HTTP/HTTPS và truyền các tham số qua URL hoặc các input trên HTML Form. Dựa vào kết quả sau khi thực hiện kiểm thử khả năng chịu tải của ứng dụng ở hình 2.13 có thể thấy được với 250 truy vấn trong một phút thì ứng dụng vẫn hoạt động tốt, thời gian trung bình để ứng dụng thực hiện xử lý một truy vấn là 293 ms, thời gian tối thiểu thực hiện một truy vấn là 253 ms và tối đa là 1234 ms.

Hình 2.13. Kết quả khi thực thi kiểm thử với loader.io.

Loader.io không cần cài đặt và rất dễ sử dụng, công cụ có thể xuất báo cáo và lên lịch tự động kiểm thử. Công cụ cũng cung cấp nhiều tùy chọn nâng cao phù hợp với nhiều ứng dụng Web khác nhau. Tuy nhiên công cụ chưa có tùy chọn để tự động tìm ra giới hạn chịu tải của ứng dụng và chưa thực hiện kiểm thử được cả ứng dụng mà chỉ từng chức năng đơn lẻ.

2.3. Thƣ viện hỗ trợ xây dựng công cụ kiểm thử tự động

Mỗi ứng dụng Web đều có những yêu cầu đặc thù riêng biệt nên việc sử dụng các công cụ kiểm thử tự động đã có sẵn có thể không thỏa mãn hoặc phù hợp với việc kiểm thử

các ứng dụng này. Luận văn xin giới thiệu thư viện Selenium WebDriver hỗ trợ xây dựng công cụ kiểm thử tự động nhằm giúp người đọc có thể lựa chọn nền tảng giúp tự tạo công cụ kiểm thử cho phù hợp với nhu cầu của mình.

Selenium WebDriver là bộ thư viện cung cấp các API để tương tác với các thành phần HTML trên trình duyệt Web, mà cụ thể đây là các điều khiển trên ứng dụng Web. Như đã biết, các điều khiển trên giao diện người dùng của ứng dụng Web được hiển thị bằng mã HTML và được định danh duy nhất bởi thuộc tính id hoặc thuộc tính name. Các hàm trong Selenium WebDriver sẽ hỗ trợ tương tác với các điều khiển thông qua id hoặc name của chúng. Selenium WebDriver có thể kết hợp với nhiều ngôn ngữ lập trình và hỗ trợ hầu hết các trình duyệt phổ biến hiện nay. Bảng 2.2 giới thiệu một số hàm và từ khóa cơ bản thường dùng của thư viện này, đây cũng là các hàm và từ khóa được dùng trong công cụ kiểm thử tự động của luận văn.

Bảng 2.2. Hàm và từ khóa thường dùng của Selenium WebDriver STT Tên hàm / từ khóa và giải thích Cách sử dụng STT Tên hàm / từ khóa và giải thích Cách sử dụng

1 IwebDriver: Khai báo đối tượng điều khiển trình duyệt Web.

IWebDriver w = new FirefoxDriver(); : Khai báo đối tượng w điều khiển trình duyệt Firefox.

2 Navigate().GoToUrl(“URL”): Truy cập tới đường dẫn chỉ định.

w.Navigate().GoToUrl(“

http://login.toi88.com”);

: Điều khiển trình duyệt truy cập tới đường dẫn “login.toi88.com”

3 IWebElement: Khai báo đối tượng điều khiển thành phần trên ứng dụng Web.

IWebElement e =

w.FindElement(By.Id(“txtUserName”)) : Khai báo đối tượng “e” điều khiển thành phần có id là “txtUserName” trên ứng dụng Web.

4 Clear(): Xóa dữ liệu có trong thành phần được điều khiển.

e.Clear(): Xóa dữ liệu trong thành phần e.

5 SendKeys(“Value”): Gán dữ liệu cho thành phần được điều khiển.

e.SendKeys(“UET”): Gán dữ liệu có nội dung là “UET” cho thành phần e.

6 Click(): Ra lệnh thực hiện sự kiện click cho thành phần được

e.Click(): Thành phần e thực hiện sự kiện click.

điều khiển.

7 GetAttribute(“property”): Lấy nội dung thuộc tính HTML được chỉ định từ thành phần đang được điều khiển.

e.GetAttribute(“innerHTML”): Lấy nội dung trong thành phần e.

8 Close(): Tắt trình duyệt. w.Close(): Tắt trình duyệt.

Selenium WebDriver có ưu điểm là hỗ trợ nhiều ngôn ngữ lập trình và hỗ trợ nhiều trình duyêt Web. Các API mà Selenium WebDriver cung cấp rất đơn giản và dễ sử dụng. Tuy nhiên các API này không hoạt động tốt với các thành phần Ajax cũng như các thành phần như hộp thoại hay cảnh báo. Thời gian thực thi ca kiểm thử chậm bởi Selenium WebDriver đòi hỏi phải bật và tắt trình duyệt Web mỗi lần thực hiện ca kiểm thử.

CHƢƠNG 3 XÂY DỰNG CÔNG CỤ KIỂM THỬ TỰ ĐỘNG 3.1. Đặt vấn đề bài toán

Có hai cách chính để nhập dữ liệu vào ứng dụng Web đó là thông qua việc truyền các tham số qua URL hoặc qua các hộp input. Để đảm bảo tính trực quan và dễ sử dụng đối với người dùng thì cách thứ hai đã và đang được áp dụng trên các ứng dụng Web. Các input được đặt trên form và tương ứng cho các tham số cần truyền vào cho một chức năng cụ thể trong ứng dụng Web nên có thể nói form là giao diện nhập dữ liệu đầu vào cho chức năng, ví dụ về form được minh họa như trong hình 3.1 với tên form là “Thêm người dùng” cùng năm input là “Tên đăng nhập”, “Mật khẩu”, “Họ tên người dùng”, “Địa chỉ email” và “Số điện thoại”.

Hình 3.1. Form thêm người dùng trên ứng dụng Web.

Việc kiểm tra tính hợp lệ của các dữ liệu đầu vào là rất quan trọng do dữ liệu đầu vào không chỉ yêu cầu phải đúng kiểu dữ liệu mà còn đòi hỏi phải đúng định dạng của loại dữ liệu đó, ví dụ như định dạng email, dạng số hay ngày tháng. Do đó các ứng dụng Web cần phải có khả năng kiểm tra tính hợp lệ của dữ liệu đầu vào một cách hiệu quả thì các tiến trình xử lý tiếp theo mới được đảm bảo hoạt động tốt. Khi kiểm thử viên tiến hành kiểm thử một form trên ứng dụng Web, việc đầu tiên thường là kiểm tra xem khả năng bắt lỗi (kiểm tra tính hợp lệ) trên các input có chính xác hay không sau đó mới kiểm tra đến chức năng đó có thực hiện và cho ra kết quả chính xác hay không. Công việc này đòi hỏi phải rất tỉ mỉ và mất nhiều thời gian do một input thường không

chỉ có một điều kiện đầu vào mà còn rất nhiều điều kiện khác nhau, có thể không kiểm tra riêng rẽ mà còn kết hợp lại với nhau.

Hiện nay có rất nhiều công cụ hỗ trợ cho việc kiểm thử tự động ứng dụng Web, tuy nhiên hầu hết các công cụ chỉ hỗ trợ cho việc thực thi tự động các ca kiểm thử còn việc thiết kế các ca kiểm thử lại rất hạn chế. Đối với một số kiểm thử viên chưa có nhiều kinh nghiệm hoặc những người không có kiến thức về kiểm thử thì rất khó để có thể thiết kế đầy đủ các ca kiểm thử nhằm kiểm tra xem chức năng đang xem xét có khả năng kiểm tra tính hợp lệ hay không hợp lệ của các dữ liệu đầu vào một cách chính xác.

Bằng việc sử dụng ngôn ngữ lập trình Javascript hoặc các ngôn ngữ khác có khả năng hoạt động phía máy khách, các ứng dụng Web có thể thực hiện việc kiểm tra tính hợp lệ của các input ngay tại phía máy khách mà không cần phải kiểm tra tại phía máy chủ ứng dụng Web, điều này nhằm tăng tốc độ xử lý và giảm tải cho phía máy chủ. Tuy nhiên nếu người sử dụng sử dụng cài đặt các plug-in chặn mã trên trình duyệt hoặc thiết lập không cho Javascript được hoạt động thì việc kiểm tra sẽ bị vô hiệu hóa. Trong trường hợp này, nếu ứng dụng Web phụ thuộc quá nhiều vào việc kiểm tra tính hợp lệ bằng việc kiểm tra trên máy khách mà quên hoặc thiếu sót trong việc kiểm tra tính hợp lệ ở phía máy chủ thì nhiều khả năng lỗi có thể xảy ra. Do đó, việc kiểm tra tính hợp lệ ở phía máy chủ cũng rất quan trọng và không thể bỏ qua.

Xuất phát từ những vấn đề đã nêu trên, ý tưởng thực hiện một công cụ kiểm thử tự động có khả năng sinh ra các ca kiểm thử và thực hiện các ca kiểm thử đó nhằm xác định ứng dụng Web có thể kiểm tra tính hợp lệ của dữ liệu đầu vào chính xác là điều rất cần thiết không chỉ hỗ trợ cho những người chưa có nhiều kinh nghiệm mà còn giúp giảm thời gian và chi phí để thiết kế, thực thi các ca kiểm thử. Trong luận văn này, tôi xin giới thiệu công cụ kiểm thử tự động được phát triển theo ý tưởng đã đặt đề ra.

3.2. Phân tích bài toán

Để giải bài toán với yêu cầu là thực hiện một công cụ kiểm thử tự động ứng dụng Web có khả năng tự sinh ca kiểm thử và thực thi nhằm quan sát xem ứng dụng có kiểm tra chính xác tính hợp lệ của dữ liệu đầu vào hay không cần phải giải quyết một số vấn đề sau:

 Xác định form và các input trong form cần kiểm thử trên ứng dụng Web, làm sao để điều khiển và thực thi tự động những thành phần này.

 Tính hợp lệ của dữ liệu đầu vào là gì?

 Xây dựng các thuật toán ra sao để có thể sinh ra các ca kiểm thử để thỏa mãn hoặc không thỏa mãn tính hợp lệ.

 Lưu lại và quan sát kết quả sau khi thực hiện các ca kiểm thử một cách hợp lý.

Điều khiển và thực thi các thành phần cần kiểm thử trên ứng dụng Web

 Địa chỉ URL chứa form cần kiểm thử.

 Id của form và các input trong nó cần kiểm thử.

Một ứng dụng Web cũng giống như Website, là tập hợp của rất nhiều các trang Web lại với nhau, các trang Web này được truy cập thông qua địa chỉ URL. Form là một thành phần nằm trên trang Web nên để có thể kiểm thử form đòi hỏi phải biết

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và xây dựng công cụ kiểm thử ứng dụng web (Trang 39)

Tải bản đầy đủ (PDF)

(66 trang)