Cấu trúc các tệp tin excel đã trình bày ở chương 2 được sử dụng làm dữ liệu đầu vào cho công cụ kiểm thử. Một ứng dụng Web sẽ được đặc tả thành nhiều tệp tin Excel, số tệp tin phụ thuộc vào các giao diện tương tác người dùng. Chúng ta có thể lưu tất cả các tệp tin này trong một thư mục và chúng được đánh số cho biết đâu là trang Web được chọn làm mốc, hoặc lưu trong nhiều thư mục con theo các mô-đun của ứng dụng phục vụ cho việc kiểm thử từng chức năng riêng lẻ. Ví dụ, Hình 4.2, chúng tôi lưu trữ các tệp tin Excel đặc tả ứng dụng Web vào các thư mục con, mỗi thư mục con tương ứng với một chức năng của ứng dụng. Bên trái của Hình 4.2 là thư mục cha chứa toàn bộ các thư mục con. Bên phải Hình 4.2 là một thư mục con chứa các tệp tin Excel đặc tả một chức năng và được đánh số theo thứ tự thực hiện của người dùng. Cách lưu trữ này phục vụ cho việc kiểm thử từng chức năng riêng lẻ của ứng dụng Web.
Hình 4.2. Lưu trữ các tệp tin đầu vào
Công cụ sẽ nhận thư mục chứa các tệp tin đặc tả và đọc chúng làm dữ liệu đầu vào. Việc đọc các tệp tin này được thực hiện lần lượt. Với mỗi tệp tin, công cụ sẽ đọc vào từng bảng một theo thứ tự cấu trúc đã được trình bày ở chương 2. Mỗi bảng là một danh sách các mảng. Mỗi mảng chứa các thông tin tương ứng với số cột của bảng. Mỗi ô giá trị của bảng trong tệp tin Excel được đọc vào và lưu vào mảng tương ứng. Sau khi đã đọc xong các tệp tin Excel, công cụ xây dựng ôtômát hữu hạn trạng thái của từng tệp tin dựa vào các mối liên kết giữa các bảng trong nó bằng cách: lấy các trạng thái và các hàm chuyển trạng thái từ
bảng transition, sau đó tìm trạng thái bắt đầu và trạng thái kết thúc thông qua mối liên kết với bảng state, cuối cùng là kết nối các dữ liệu đó thành một ôtômát
hữu hạn trạng thái. Sau khi có được các ôtômát hữu hạn trạng thái tương ứng với các tệp tin đặc tả Excel, thuật toán ghép nối được áp dụng để thực hiện việc kết nối các ôtômát hữu hạn trạng thái theo đúng thứ tự các tệp tin Excel thành một mô hình hoàn chỉnh cho toàn ứng dụng Web. Hình 4.3 là cài đặt ôtômát hữu hạn trạng thái trong công cụ bằng ngôn ngữ Java.
Hình 4.4. Giao diện nhập dữ liệu đầu vào của công cụ
Hình 4.4 là giao diện của công cụ, cho phép chúng ta chọn dữ liệu đầu vào.
Ô textbox Web phía bên trái là nơi nhập đường dẫn ứng dụng Web cần kiểm thử và nút Open .xls folder phía bên phải là nơi chọn thư mục chứa các tệp tin đặc tả
Excel mà chúng ta muốn đưa vào công cụ. 4.2.3 Đầu ra của công cụ
Từ các tệp tin đầu vào, công cụ sẽ tiến hành thực hiện các bước như đã trình bày ở mục 4.2.2 để xây dựng ôtômát hữu hạn trạng thái cho toàn ứng dụng Web. Công cụ đã được cài đặt thuật toán duyệt đồ thị như đã trình bày ở chương 3 để sinh tự động các đường dẫn kiểm thử từ đồ thị trạng thái. Sau khi có các đường dẫn kiểm thử, công cụ tiến hành thực hiện các đường dẫn kiểm thử đó. Sau đây là một đường dẫn kiểm thử được sinh ra từ công cụ và chi tiết việc thực hiện nó dựa trên sự hỗ trợ của Selenium và Jsoup.
Đường dẫn kiểm thử: INDEX * add_hoten = TEN * del_hoten = INDEX * add_sohieu = SOHIEU * Timkiem = KETQUA_TK
Công cụ thực hiện từng transition: index * add_username = username như
sau:
Xuất phát từ trạng thái index, công cụ bắt đầu thực hiện sự kiện
add_username. Công cụ sẽ lấy sự kiện add_username trong bảng Event, lấy
phần tử html, action tương ứng của sự kiện đó. Nếu action là addtext thì công cụ sẽ tìm đến bảng Element_html để lấy giá trị cần nhập (giá trị này thuộc cột value
của bảng Element_html mà có cùng giá trị html với bảng Event). Cuối cùng,
công cụ dùng sự hỗ trợ của Selenium và Jsoup để xác định vị trí của phần tử
html trên trang Web và thực hiện hành động lên phần tử html đó. Nếu không
thực hiện thành công thì dừng thực hiện đường dẫn và đưa ra thông báo. Nếu
thực hiện thành công sự kiện, công cụ sẽ dựa vào bảng State để lấy các phần tử
html được định nghĩa trong trạng thái username. Công cụ lấy giá trị của các
phần tử html đó trên giao diện trang Web đã được thực hiện sự kiện và so sánh với giá trị được định nghĩa trong bảng Element_html. Nếu không so sánh thành công thì dừng thực hiện đường dẫn và đưa ra thông báo thất bại (FAIL) và lý do thất bại. Nếu so sánh thành công thì tiếp tục thực hiện các transition cho đến hết
đường dẫn kiểm thử. Khi thực hiện hết đường dẫn kiểm thử thì kết luận kiểm
thử thành công (PASS). Cấu trúc của tệp tin đầu ra như sau:
Đầu ra của công cụ là một tệp tin Excel gồm 3 cột, mô tả chi tiết kết quả của quá trình chạy các đường dẫn kiểm thử trên trình duyệt Web.
Hình 4.5. Kết quả kiểm thử. - Cột 1: Bao gồm các test path của trang Web.
- Cột 2: Kết quả chạy của từng test path: nếu test path chạy thành công hay tương tác giao diện trên trang Web đúng như mô tả của ôtômát hữu hạn trạng thái thì kết quả trả về là PASS. Ngược lại, kết quả trả về FAIL.
- Cột 3: Nếu kết quả trả về là FAIL thì ô tương ứng ở cột này sẽ đưa ra chi tiết về kết quả đó.
4.3 Thực nghiệm
Sau đây, chúng tôi sẽ áp dụng công cụ kiểm thử tự động cho ứng dụng Web Quản lý thông tin cán bộ. Đây là một ứng dụng quản lý các thông tin cơ bản của cán bộ chiến sĩ công an Hà Nội. Ứng dụng Web này có cấu trúc các trang Web như Hình 4.6:
Hình 4.6. Ứng dụng Web quản lý thông tin cán bộ. Theo Hình 4.6 ứng dụng Web này bao gồm các trang:
- Đăng nhập: Trang thực hiện việc đăng nhập vào ứng dụng Web. Ứng
dụng này được xây dựng cho hai loại người dùng, với mỗi loại sẽ dẫn đến một giao diện chức năng tương ứng. Hình 4.7 là giao diện đăng nhập của hệ thống.
Hình 4.7. Giao diện trang đăng nhập
- Quản trị: Trang Web với các chức năng của người dùng là người
quản trị hệ thống. Trên thực tế, người quản trị có rất nhiều chức năng như: quản trị người dùng, quản trị danh mục, thiết lập hệ thống, v.v. Bởi vậy, ở luận văn này chúng tôi giả sử người quản trị chỉ thực hiện
một chức năng về quản lý người dùng (trang Danh sách User). Hình
4.8 là giao diện trang Web với người dùng là người quản trị hệ thống.
Hình 4.8. Giao diện các chức năng của người quản trị hệ thống.
- Danh sách User: Trang Web hiển thị danh sách người sử dụng hệ
thống, cho phép người quản trị hệ thống thực hiện các chức năng như: thêm mới người dùng, sửa và xóa người dùng. Hình 4.9 là giao diện quản lý người dùng.
Hình 4.9. Trang quản lý người dùng
-Quản lý TTCB (Quản lý thông tin cán bộ): Trang Web với các chức
-Tìm kiếm TTCB (Tìm kiếm thông tin cán bộ): Trang Web cho phép
người dùng tìm kiếm cán bộ. Hình 4.10 là giao diện cho phép người dùng tìm kiếm thông tin cán bộ.
Hình 4.10. Giao diện trang tìm kiếm cán bộ
-Thêm mới TTCB (thêm mới thông tin cán bộ): Trang Web có chức
năng thêm mới cán bộ. Hình 4.11 là giao diện trang thêm mới thông tin cán bộ.
Hình 4.11. Trang thêm mới thông tin cán bộ
-Cập nhật TTCB (Cập nhật thông tin cán bộ): Trang Web cho phép
người dùng cập nhật thông tin cán bộ. Hình 4.12 là giao diện của trang Web này.
Hình 4.12. Trang cập nhật thông tin cán bộ
Từ các giao diện của các trang Web trên, chúng tôi xác định các phần tử Web, các hành vi tương tác giao diện của người dùng lên từng trang Web. Tiếp theo, chúng tôi xây dựng các trạng thái và hàm chuyển trạng thái thông qua các phần tử Web, các hành vi tương tác giao diện. Cuối cùng, chúng ta sẽ xây dựng ôtômát hữu hạn trạng thái cho mỗi trang Web và biểu diễn chúng dưới dạng các tệp tin Excel. Hình 4.13 là thư mục chứa các bản đặc tả tương tác giao diện của ứng dụng Web quản lý thông tin cán bộ. Thư mục này gồm 6 tệp tin Excel đặc tả tương tác giao diện của 6 trang Web: (1) Trang đăng nhập - trang Web được
chọn làm mốc 1-login.xls, (2) Trang giao diện các chức năng của người quản lý cán bộ 2-canbo.xls, (3) Trang tìm kiếm cán bộ 3-canbo_timkiem.xls, (4) Trang thêm mới cán bộ 4-canbo_themmoi.xls, (5) Trang cập nhật thông tin cán bộ 5-
Hình 4.13. Thư mục các tệp tin đặc tả ứng dụng Quản lý thông tin cán bộ
Để kiểm thử tự động ứng dụng Web Quản lý thông tin cán bộ, chúng tôi chọn đầu vào cho công cụ kiểm thử tự động tương tác giao diện Web gồm: địa chỉ của ứng dụng Web và thư mục chứa các tệp tin đặc tả. Hình 4.14 là giao diện công cụ đã được chọn đầu vào. Trong giao diện này, đường dẫn ứng dụng Web Quản lý thông tin cán bộ là http://localhost:8086 và thư mục các tệp tin đặc tả được chọn là thư mục trong hình 4.13.
Hình 4.14. Giao diện của công cụ
Sau khi nhập dữ liệu đầu vào, công cụ sẽ thực hiện đọc các tệp tin đầu vào và tiến hành mô hình hóa hệ thống để tạo ra các ôtômát hữu hạn trạng thái tương ứng. Tiếp theo, công cụ sẽ thực hiện thuật toán ghép nối như đã trình bày ở chương 3 để tạo ra ôtômát hữu hạn trạng thái cho toàn ứng dụng. Từ mô hình này, thực hiện thuật toán sinh các đường dẫn kiểm thử để sinh ra các ca kiểm thử một cách tự động. Kết quả công cụ đã sinh ra 62 đường dẫn kiểm thử. Các đường dẫn này được đảm bảo sẽ bao phủ hết mọi trường hợp tương tác giao diện người dùng như đã mô tả trong các tệp tin đặc tả. Hình 4.15 liệt kê một số đường dẫn kiểm thử được sinh ra sau khi thực hiện kiểm thử hệ thống Quản lý thông tin cán bộ (6/62).
Hinh 4.15. Các đường dẫn kiểm thử được sinh tự động
Với các đường dẫn kiểm thử được sinh ra, công cụ sử dụng Selenium WebDriver để kết nối với các trình duyệt Web và tiến hành chạy các đường dẫn kiểm thử đó. Quá trình thực hiện kiểm thử được thực hiện thông qua các đường dẫn kiểm thử. Các đường dẫn kiểm thử này được coi như các kịch bản đầu vào cho công cụ Selenium. Với kịch bản đã có, công cụ Selenium sử dụng các API như đã trình bày ở phần trước để tiến hành kết nối đến trình duyệt. Cùng với sự hỗ trợ của Jsoup trong việc phân tích mã nguồn nhằm giúp Selenium tìm kiếm các phần tử Web thông qua định danh, tên hoặc các thuộc tính khác để xác định phần tử Web.
Sau khi thực hiện kiểm thử ứng dụng Web bằng công cụ kiểm thử tự động tương tác giao diện Web, kết quả thực hiện sẽ được xuất ra một tệp tin Excel. Nội dung tệp tin cho người dùng biết chi tiết về các ca kiểm thử bao gồm: các đường dẫn kiểm thử, kết quả của đường dẫn kiểm thử đó và nếu đường dẫn đó không thực hiện thành công thì chỉ ra nguyên nhân. Hình 4.16 là một số kết quả sau khi thực hiện các đường dẫn kiểm thử trong tệp tin đầu ra. Sau khi thực hiện 62 đường dẫn kiểm thử trên ứng dụng Web Quản lý thông tin cán bộ, đã tìm ra được 6 lỗi lập trình liên quan đến tương tác giao diện người dùng.
Hình 4.16. Kết quả thực hiện đường dẫn kiểm thử hiển thị trong tệp tin đầu ra
4.4 Kết quả cải tiến công cụ
Phương pháp của chúng tôi tốt hơn các phương pháp đã được đề xuất trước đó vì phương pháp này có khả năng kiểm thử cho hầu hết các loại phần tử Web. Sau đây là một số loại phần tử Web quan trọng mà phương pháp của chúng tôi đã làm thêm.
Phần tử Web động: Các phần tử Web động là những phần tử Web được người
dùng tạo ra trong quá trình sử dụng hệ thống. Nên các phần tử Web này sẽ có id tự động sinh và không xác định được chính xác giá trị id. Chúng tôi đề xuất cách
thức đặc tả cho các phần tử Web động như sau: Các phần tử Web này được đặc tả gồm nhiều thuộc tính và mỗi thuộc tính cách nhau bởi ký tự “|”. Trong ứng dụng Web Quản lý thông tin cán bộ có một số loại phần tử Web động, được chúng tôi đặc tả như sau:
(1) Phần tử menu động: Hình 4.17 sau là giao diện chức năng cho phép
người dùng tạo menu và tùy chọn chức năng (trang Web) ứng với menu vừa tạo. Các menu được tạo ra sẽ có id động. Vì thế, chúng tôi đặc tả việc xác định menu
động như sau:
html = “menu:2|Tổ Chức|Hồ sơ tổ chức cán bộ”.Như vậy, để xác định menu con Hồ
sơ tổ chức cán bộ, chúng ta phải xác định thêm Menu chính chứa nó (Tổ Chức)
và kiểu menu của nó (menu:2 có nghĩa là menu 2 cấp).
(2) Phần tử động trong DataGrid: Như hình 4.17, các chức năng trong
DataGrid Danh sách các chức năng là phần tử động. Ví dụ, để chọn chức năng
(phần tử) Định nghĩa cán bộ cao cấp, chúng tôi đặc tả phần tử Web đó như sau:
“id:DataGrid|tag:tr|Định nghĩa cán bộ cao cấp|value:Chọn”. Phần tử này, được xác
tag:tr và phần tử Chọn.Tương tự, cho việc đặc tả phần tử Caption được sinh ra
tự động trong DataGrid “id:DataGrid2|tag:caption|head:0|end:0|1”.
Hình 4.17. Giao diện chức năng tạo menu động
Giao diện pop-up: Để kiểm thử được các giao diện pop-up, trước tiên chúng tôi phải đặc tả trạng thái các giao diện pop-up này thông qua chuỗi ký tự trong pop- up. Hình 4.18 là một giao diện pop-up cảnh báo việc xóa bản ghi với chuỗi ký tự
là “Bạn có chắc muốn xóa mục:: Phượng:: này không?”. Trạng thái pop-up này được đặc tả như một phần tử Web có html = “alert:text” và value = “Bạn có chắc
chắn muốn xoá mục:: Phượng ::này không?” Sau khi đặc tả được trạng thái của giao
diện pop-up, chúng tôi thực hiện sự kiện lên pop-up theo đặc tả
“id:grdCBCS|tag:tr|Phượng|id:imbXoa|alert-exist:yes”. Đặc tả này, cho phép chúng ta
Hình 4.18. Giao diện pop-up
Các phần tử Web không có thuộc tính định danh id: Các phần tử Web này được chúng tôi xác định thông qua các thuộc tính xác định khác như name hoặc
class. Để thực hiện kiểm thử cho các phần tử Web này, khi xây dựng các tệp tin
đặc tả, chúng ta chỉ cần thay giá trị id bằng giá trị name hoặc class của phần tử
Web.
Ngoài ra, Công cụ kiểm thử tự động tương tác giao diện ứng dụng Web còn được bổ sung thêm một số tính năng nhằm thực hiện kiểm thử cho các loại
phần tử Web: DropDownList, CheckBoxList, RadioList, v.v. Để kiểm thử được những loại phần tử Web này, chúng ta chỉ cần khai báo kiểu (type) của các phần tử Web này trong bảng Element_html theo quy định sau: Phần tử Web
DropDownList là dropdown, CheckBoxList là chk, RadioList là radiolist, v.v.
Chúng tôi tiến hành cấy một số lỗi liên quan đến các phần tử Web trên vào trong ứng dụng Web Quản lý thông tin cán bộ. Hình 4.16 là kết quả sau khi thực hiện kiểm thử ứng dụng với những lỗi trên đã được tìm thấy. Công cụ được đề xuất bởi [5] chưa thực hiện kiểm thử được với những phần tử Web này nên không tìm ra được những lỗi đó.
4.5 Ý nghĩa của công cụ thực nghiệm