Tổng quan nghiên cứu

Trong kỷ nguyên chuyển đổi số, hơn 80% các phần mềm ứng dụng doanh nghiệp và dịch vụ công được triển khai trên nền tảng Web. Tuy nhiên, theo các báo cáo trong ngành công nghệ phần mềm, hoạt động kiểm thử thủ công thường chiếm từ 50% đến 70% tổng thời gian và chi phí phát triển dự án. Khi phần mềm liên tục cập nhật phiên bản, kiểm thử hồi quy thủ công không chỉ gây lãng phí nguồn lực mà còn dễ bỏ sót lỗi tương tác phức tạp. Để giải quyết triệt để vấn đề này, luận văn thạc sĩ kỹ thuật phần mềm của tác giả Lê Thị Phượng (Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội) tập trung nghiên cứu giải pháp kiểm thử dựa trên mô hình (Model-Based Testing - MBT) nhằm tự động hóa quy trình kiểm thử luồng tương tác giao diện người dùng cho các ứng dụng Web.

Mục tiêu cốt lõi của nghiên cứu là xây dựng phương pháp đặc tả hình thức giao diện Web bằng ôtômát hữu hạn trạng thái, phát triển thuật toán sinh tự động các ca kiểm thử và hiện thực hóa công cụ thực thi kiểm thử tự động. Phạm vi thực nghiệm của đề tài được triển khai trong giai đoạn năm 2014 đến 2015, áp dụng trực tiếp trên hệ thống Web Quản lý thông tin cán bộ tại Cục Công nghệ thông tin thuộc Tổng cục IV, Bộ Công an. Ý nghĩa của nghiên cứu được chứng minh qua các chỉ số cụ thể: công cụ đã tự động sinh và thực thi thành công 62 đường dẫn kiểm thử hoàn chỉnh từ 6 tệp tin đặc tả chức năng, đạt độ bao phủ 100% các đỉnh và cạnh chuyển trạng thái, giúp rút ngắn khoảng 65% thời gian tạo kịch bản kiểm thử so với phương pháp lập trình thủ công truyền thống.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Nghiên cứu được xây dựng trên nền tảng vững chắc của hai lý thuyết cốt lõi trong khoa học máy tính: lý thuyết kiểm thử dựa trên mô hình và lý thuyết ôtômát hữu hạn trạng thái (Finite State Automaton - FSA).

Lý thuyết kiểm thử dựa trên mô hình định nghĩa quy trình trong đó các ca kiểm thử được sinh tự động trực tiếp từ mô hình đặc tả hành vi của hệ thống thay vì viết mã kịch bản thủ công. Luận văn hình thức hóa giao diện của mỗi trang Web thành một ôtômát hữu hạn trạng thái M bao gồm bộ 5 thành phần: tập hữu hạn các trạng thái Web S, trạng thái khởi tạo s0, tập sự kiện tương tác Sigma, hàm chuyển trạng thái delta và tập các trạng thái kết thúc F.

Bên cạnh đó, nghiên cứu phát triển mô hình ghép nối ôtômát tuần tự để kết hợp các ôtômát đơn lẻ của từng trang Web thành một mô hình tổng thể đại diện cho toàn bộ luồng nghiệp vụ của ứng dụng Web. Khung lý thuyết này vận hành dựa trên 4 khái niệm trọng tâm:

  1. Phần tử Web: Các đối tượng giao diện như ô nhập văn bản, danh sách chọn, nút bấm hoặc lưới dữ liệu.
  2. Trạng thái Web: Tập hợp giá trị thực tế của tất cả các phần tử Web tại một thời điểm xác định.
  3. Sự kiện tương tác: Các hành động của người dùng làm thay đổi trạng thái như nhập văn bản, xóa văn bản, chọn mục hoặc nhấp chuột.
  4. Chuyển trạng thái: Sự dịch chuyển từ trạng thái nguồn sang trạng thái đích khi thỏa mãn điều kiện và sự kiện kích hoạt.

Phương pháp nghiên cứu

Nghiên cứu sử dụng nguồn dữ liệu thực nghiệm từ hệ thống phần mềm quản lý thông tin cán bộ với cấu trúc đa dạng gồm 6 phân hệ giao diện chính. Phương pháp chọn mẫu được áp dụng là phương pháp chọn mẫu có chủ đích (purposive sampling), lựa chọn tập mẫu gồm 6 tệp tin đặc tả tương ứng với 6 trang màn hình: đăng nhập, phân hệ quản trị, tìm kiếm cán bộ, thêm mới cán bộ, cập nhật thông tin và xóa cán bộ. Cỡ mẫu này đại diện đầy đủ cho các thành phần giao diện từ cơ bản có mã định danh đến các phần tử phức tạp không có định danh tĩnh như bảng lưới dữ liệu (DataGrid) và cửa sổ bật lên (Pop-up).

Về phương pháp phân tích, tác giả lựa chọn phương pháp duyệt đồ thị có hướng bằng cách mở rộng thuật toán tìm kiếm theo chiều sâu (Depth-First Search - DFS) kết hợp với thuật toán bổ sung trạng thái kết thúc. Lý do lựa chọn thuật toán DFS là khả năng duyệt vét cạn toàn bộ các nhánh rẽ và đảm bảo bao phủ 100% các chuyển trạng thái với độ phức tạp tính toán tối ưu. Toàn bộ mô hình được lưu trữ dưới dạng 4 bảng quan hệ trong các tệp tin bảng tính MS Excel, giúp kiểm thử viên dễ dàng cấu hình mà không cần can thiệp vào mã nguồn. Công cụ thực thi được lập trình bằng ngôn ngữ Java trên nền tảng Eclipse, tích hợp thư viện Selenium WebDriver phiên bản 2.0 để điều khiển trình duyệt và thư viện Jsoup phiên bản 1.2 nhằm bóc tách cây cấu trúc DOM cho các phần tử động. Quá trình nghiên cứu và tối ưu thuật toán được hoàn thành trọn vẹn trong khung thời gian 12 tháng của chương trình đào tạo thạc sĩ.

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

Quá trình thực nghiệm mô hình hóa và kiểm thử tự động đã mang lại những kết quả nổi bật với các số liệu minh chứng rõ ràng:

Thứ nhất, nghiên cứu đã chuẩn hóa thành công phương pháp đặc tả giao diện Web thông qua 4 bảng cấu trúc trong tệp tin bảng tính: bảng phần tử, bảng trạng thái, bảng sự kiện và bảng chuyển trạng thái. Tại trang tìm kiếm thông tin cán bộ, mô hình đã bao quát đầy đủ 9 trạng thái giao diện, 7 sự kiện tương tác và 28 bước chuyển trạng thái logic.

Thứ hai, thuật toán sinh ca kiểm thử tự động cải tiến từ tìm kiếm theo chiều sâu đã xử lý chính xác đồ thị chuyển trạng thái. Riêng tại phân hệ tìm kiếm cán bộ, hệ thống đã sinh ra 12 đường dẫn kiểm thử hoàn chỉnh không trùng lặp, đạt tỷ lệ bao phủ 100% các cạnh đồ thị. Khi mở rộng ra toàn bộ 6 phân hệ của ứng dụng, công cụ đã sinh ra tổng cộng 62 kịch bản kiểm thử độc lập mà không cần sự can thiệp thủ công.

Thứ ba, việc tích hợp bộ đôi công cụ Selenium WebDriver và Jsoup đã giải quyết triệt để bài toán nhận diện phần tử Web động. Tỷ lệ nhận diện thành công các phần tử không có thuộc tính định danh tĩnh (id) như bảng danh sách DataGrid, thực đơn động và hộp thoại pop-up đạt mức xấp xỉ 100% thông qua cơ chế định vị kết hợp giữa thẻ HTML, đường dẫn phân cấp và nội dung văn bản.

Thứ tư, quá trình thực thi kiểm thử tự động cho kết quả khớp hoàn toàn giữa trạng thái thực tế trên trình duyệt và trạng thái mong muốn trong bản đặc tả. Báo cáo kiểm thử dạng bảng tính phân loại chi tiết từng ca kiểm thử theo hai trạng thái đạt (PASS) hoặc không đạt (FAIL), giúp giảm thiểu khoảng 70% thời gian xác minh lỗi cho kiểm thử viên.

Thảo luận kết quả

Cơ chế vận hành thành công của mô hình bắt nguồn từ việc lượng hóa giao diện Web thành các trạng thái rời rạc và ánh xạ các thao tác người dùng thành các hàm toán học chính xác. Việc sử dụng định dạng bảng tính MS Excel làm cầu nối dữ liệu đã biến các lý thuyết hình thức phức tạp trở nên trực quan, dễ ứng dụng trong môi trường phát triển phần mềm công nghiệp.

Dữ liệu kiểm thử của nghiên cứu có thể được trực quan hóa hiệu quả thông qua hai dạng biểu diễn: đồ thị có hướng biểu diễn các luồng chuyển trạng thái và bảng ma trận chuyển đổi trạng thái hai chiều. Biểu đồ đồ thị giúp người quản lý nhìn thấy rõ 100% mật độ bao phủ của các đường dẫn kiểm thử, trong khi bảng ma trận trạng thái giúp đối chiếu tức thì giữa 28 chuyển trạng thái mong muốn và kết quả thực thi thực tế trên trình duyệt.

So sánh với các nghiên cứu trước đây vốn chỉ kiểm thử tự động trên từng trang Web đơn lẻ hoặc chỉ xử lý được các Website tĩnh có sẵn thuộc tính định danh id cố định, giải pháp của luận văn này tạo ra bước tiến vượt bậc. Việc hỗ trợ luồng tương tác liên trang qua thuật toán ghép nối ôtômát tuần tự và khả năng xử lý phần tử giao diện động đã khắc phục hoàn toàn các giới hạn kỹ thuật của các công cụ kiểm thử tự động đương thời.

Đề xuất và khuyến nghị

Dựa trên kết quả đạt được, luận văn đưa ra 4 nhóm giải pháp mang tính hành động cao nhằm mở rộng khả năng ứng dụng thực tiễn:

  1. Tự động hóa khâu trích xuất đặc tả: Nhóm nghiên cứu cần phát triển mô-đun quét tự động cấu trúc DOM của trang Web để tự động điền dữ liệu vào các bảng tính đặc tả, hướng tới mục tiêu cắt giảm 50% thời gian thiết kế mô hình thủ công trong vòng 6 tháng tới.
  2. Tối ưu hóa thuật toán lọc đường dẫn: Các kỹ sư phần mềm nên tích hợp các giải thuật tối ưu hóa hoặc thuật toán di truyền nhằm loại bỏ các đường dẫn kiểm thử dư thừa, phấn đấu tinh gọn khoảng 20% đến 30% tổng số ca kiểm thử nhưng vẫn giữ nguyên độ bao phủ lỗi 100% trong lộ trình 3 tháng.
  3. Nâng cấp bộ phân tích phần tử giao diện: Cập nhật thư viện Jsoup lên phiên bản mới nhất và bổ sung khả năng tương thích với các khung giao diện hiện đại như React, Angular hay Vue, nhằm duy trì tỷ lệ nhận diện phần tử DOM phức tạp đạt trên 98% trong vòng 1 năm.
  4. Chuẩn hóa quy trình kiểm thử trong các tổ chức: Các cơ quan nhà nước, đơn vị phụ trách công nghệ thông tin và doanh nghiệp phần mềm cần ban hành hướng dẫn kỹ thuật chuẩn hóa quy trình kiểm thử dựa trên mô hình cho tất cả các dự án phần mềm có quy mô từ 5 phân hệ chức năng trở lên.

Đối tượng nên tham khảo luận văn

Công trình nghiên cứu mang lại giá trị học thuật và ứng dụng thực tiễn cao cho 4 nhóm đối tượng chính:

  1. Kỹ sư kiểm thử tự động và chuyên viên đảm bảo chất lượng phần mềm (QA/QC): Học hỏi phương pháp xây dựng kịch bản kiểm thử dựa trên mô hình và kỹ thuật kết hợp Selenium cùng Jsoup để xử lý các phần tử giao diện phức tạp, áp dụng trực tiếp cho các dự án kiểm thử hồi quy tự động.
  2. Học viên cao học và nhà nghiên cứu chuyên ngành Kỹ thuật phần mềm: Sử dụng làm tài liệu tham khảo chuẩn mực về phương pháp hình thức hóa ôtômát hữu hạn trạng thái, thuật toán ghép nối mô hình và giải thuật sinh ca kiểm thử tự động từ đồ thị.
  3. Kiến trúc sư phần mềm và Trưởng nhóm phát triển: Vận dụng các nguyên tắc thiết kế giao diện thân thiện với kiểm thử tự động, chuẩn hóa cấu trúc phần tử Web và cây DOM ngay từ giai đoạn lập trình giao diện người dùng.
  4. Các đơn vị công nghệ thông tin thuộc khối cơ quan nhà nước: Tham khảo mô hình ứng dụng thực tế trên hệ thống quản lý thông tin cán bộ để triển khai kiểm thử đảm bảo an toàn, chất lượng cho các hệ thống phần mềm quản lý nội bộ có quy mô hàng nghìn người dùng.

Câu hỏi thường gặp

Phương pháp kiểm thử dựa trên mô hình (MBT) có điểm gì vượt trội so với kiểm thử tự động thông thường? Kiểm thử tự động truyền thống đòi hỏi kỹ sư phải viết mã kịch bản thủ công cho từng trường hợp kiểm thử, rất tốn thời gian khi giao diện thay đổi. Trong khi đó, MBT tự động sinh ra hàng loạt ca kiểm thử trực tiếp từ mô hình đặc tả, như việc tự động tạo 62 đường dẫn kiểm thử trong luận văn, giúp tiết kiệm hơn 60% công sức bảo trì kịch bản.

Công cụ làm cách nào để nhận diện được các phần tử Web không có thuộc tính ID? Công cụ kết hợp Selenium WebDriver với thư viện Jsoup để bóc tách cây phân cấp DOM của trang Web. Bằng cách định vị phần tử dựa trên cấu trúc thẻ cha bao quanh, tên lớp, chỉ số dòng và nội dung văn bản hiển thị (ví dụ bản ghi trong bảng DataGrid), công cụ xác định chính xác vị trí phần tử với độ tin cậy gần như tuyệt đối.

Thuật toán bổ sung đường dẫn (ADD_Path) đóng vai trò gì trong quá trình sinh ca kiểm thử? Khi thuật toán tìm kiếm theo chiều sâu (DFS) duyệt qua các cạnh của đồ thị, một số nhánh có thể dừng lại ở trạng thái trung gian. Thuật toán ADD_Path sẽ tự động tìm kiếm các cạnh chuyển tiếp kế tiếp để nối dài đường dẫn cho đến khi chạm tới trạng thái kết thúc hợp lệ, đảm bảo 100% ca kiểm thử có điểm đầu và điểm kết thúc hoàn chỉnh.

Tại sao tác giả lại lựa chọn tệp tin bảng tính MS Excel để biểu diễn mô hình ôtômát? Bảng tính MS Excel cung cấp giao diện trực quan với cấu trúc 4 bảng rõ ràng gồm phần tử, trạng thái, sự kiện và chuyển trạng thái. Cách biểu diễn này giúp các kỹ sư kiểm thử dễ dàng tiếp cận, chỉnh sửa và quản lý mô hình mà không cần phải nắm vững các công cụ toán học hình thức phức tạp, tạo điều kiện thuận lợi cho việc ứng dụng công nghiệp.

Mô hình kiểm thử này có thể áp dụng cho các ứng dụng Web đa ngôn ngữ và quy mô lớn không? Mô hình hoàn toàn có khả năng mở rộng cho các hệ thống Web lớn nhờ thuật toán ghép nối ôtômát tuần tự giữa các phân hệ độc lập. Đối với các ứng dụng Web lớn, việc chia nhỏ hệ thống thành từng mô-đun và mô hình hóa cục bộ giúp kiểm soát tốt độ phức tạp, tránh hiện tượng bùng nổ số lượng trạng thái trên toàn hệ thống.

Kết luận

Nghiên cứu về kiểm thử dựa trên mô hình và ứng dụng của tác giả Lê Thị Phượng đã đóng góp những giá trị cốt lõi sau:

  • Hình thức hóa thành công hành vi tương tác giao diện người dùng của ứng dụng Web bằng ôtômát hữu hạn trạng thái.
  • Chuẩn hóa phương pháp biểu diễn mô hình toán học trực quan và dễ quản trị thông qua cấu trúc 4 bảng trong tệp tin bảng tính.
  • Xây dựng và hoàn thiện thuật toán sinh tự động các đường dẫn kiểm thử bao phủ toàn diện 100% các đỉnh và cạnh chuyển trạng thái.
  • Tích hợp thành công công cụ thực thi kiểm thử tự động sử dụng Java, Selenium WebDriver 2.0 và Jsoup 1.2, xử lý hiệu quả các phần tử Web động không có định danh.
  • Thực nghiệm thành công trên hệ thống Web Quản lý thông tin cán bộ với 62 đường dẫn kiểm thử tự động, chứng minh tính khả thi và hiệu quả vượt trội của giải pháp.

Trong giai đoạn tiếp theo kéo dài từ 6 đến 12 tháng, nhóm nghiên cứu dự kiến sẽ tiếp tục phát triển tính năng tự động trích xuất đặc tả từ mã nguồn và tích hợp các thuật toán tối ưu hóa ca kiểm thử. Đây là tài liệu tham khảo học thuật vô cùng giá trị dành cho các kỹ sư kiểm thử và các nhà nghiên cứu trong lĩnh vực kỹ thuật phần mềm. Hãy liên hệ với các đơn vị đào tạo chuyên ngành hoặc thư viện trường Đại học Công nghệ để tiếp cận toàn văn công trình nghiên cứu xuất sắc này.