Tổng quan nghiên cứu

Trong kỹ nghệ phần mềm hiện đại, khoảng 70% đến 80% ứng dụng doanh nghiệp được xây dựng và triển khai trên nền tảng Web. Sự gia tăng nhanh chóng về quy mô dữ liệu và tính năng tương tác người dùng khiến quy trình kiểm thử chất lượng giao diện trở thành thách thức lớn, thường chiếm tới 40% đến 50% tổng ngân sách và thời gian của toàn bộ vòng đời phát triển phần mềm. Khi các phiên bản phần mềm liên tục được cập nhật, việc kiểm thử hồi quy thủ công không chỉ gây tiêu tốn hàng trăm giờ lao động mà còn tiềm ẩn rủi ro bỏ sót lỗi nghiêm trọng trong các luồng tương tác nghiệp vụ.

Nhằm giải quyết triệt để vấn đề này, luận văn thạc sĩ chuyên ngành Kỹ thuật phần mềm thực hiện tại Trường Đại học Công nghệ thuộc Đại học Quốc gia Hà Nội vào năm 2015 đã tập trung nghiên cứu giải pháp kiểm thử tự động hóa dựa trên mô hình (Model-Based Testing - MBT). Mục tiêu trọng tâm của nghiên cứu là xây dựng phương pháp hình thức hóa hành vi tương tác giao diện Web thông qua ôtômát hữu hạn trạng thái, đề xuất thuật toán sinh tự động các ca kiểm thử và phát triển công cụ thực thi hoàn chỉnh có khả năng tương tác với các phần tử Web động phức tạp.

Nghiên cứu mang ý nghĩa thực tiễn to lớn đối với ngành công nghiệp phần mềm khi giúp tự động hóa 100% quy trình sinh ca kiểm thử và giảm trên 60% thời gian thực thi kiểm thử giao diện so với các phương pháp truyền thống. Kết quả nghiên cứu không chỉ nâng cao độ tin cậy của hệ thống phần mềm mà còn cung cấp một khung làm việc chuẩn mực cho các tổ chức công nghệ trong việc kiểm soát chất lượng tương tác người dùng trên các hệ thống thông tin quy mô lớn.

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 của hai lý thuyết trụ cột: lý thuyết kiểm thử dựa trên mô hình (Model-Based Testing - MBT) và lý thuyết ôtômát hữu hạn trạng thái (Finite State Automaton - FSA). Trong đó, kiểm thử dựa trên mô hình là phương pháp tiên tiến cho phép tự động sinh ra các kịch bản kiểm thử trực tiếp từ mô hình đặc tả hành vi của hệ thống thay vì viết kịch bản thủ công.

Khung lý thuyết của luận văn vận dụng 4 khái niệm cốt lõi bao gồm:

  1. Ôtômát hữu hạn trạng thái biểu diễn hành vi giao diện Web: Một cấu trúc toán học gồm 5 thành phần chuẩn hóa $M = \langle S, s_0, \Sigma, \delta, F \rangle$, trong đó $S$ là tập trạng thái hữu hạn, $s_0$ là trạng thái khởi tạo trang Web, $\Sigma$ là tập sự kiện tương tác của người dùng, $\delta$ là hàm chuyển trạng thái từ trạng thái này sang trạng thái khác, và $F$ là tập các trạng thái kết thúc hợp lệ.
  2. Không gian sự kiện tương tác chuẩn hóa: Tập hợp 4 loại hành động chính của người dùng trên giao diện Web gồm nhập văn bản (addtext), xóa văn bản (deltext), nhấp chọn nút hoặc liên kết (click), và lựa chọn phần tử danh mục (select).
  3. Đại số ghép nối mô hình hành vi: Phép toán ghép nối song song hai hay nhiều ôtômát thành phần $M = M_1 \parallel M_2$ để tạo nên mô hình ôtômát tổng thể cho toàn bộ ứng dụng Web nhiều trang, khắc phục tình trạng bùng nổ trạng thái cục bộ.
  4. Cấu trúc đặc tả 4 bảng trên bảng tính MS Excel: Phương thức biểu diễn mô hình FSA trực quan qua 4 bảng dữ liệu liên kết gồm bảng phần tử Element_html, bảng trạng thái State, bảng sự kiện Event và bảng chuyển trạng thái Transition.

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

Nghiên cứu áp dụng phương pháp nghiên cứu thực nghiệm kết hợp mô hình hóa hình thức toán học. Nguồn dữ liệu thực nghiệm được thu thập trực tiếp từ hệ thống phần mềm Quản lý thông tin cán bộ thực tế do Cục Công nghệ thông tin trực thuộc Bộ Công an phối hợp triển khai vào tháng 7 năm 2015.

Về cỡ mẫu và phương pháp chọn mẫu, nghiên cứu thực hiện chọn mẫu có chủ đích (purposive sampling) trên một phân hệ nghiệp vụ trọng yếu gồm 9 trạng thái giao diện đặc trưng và 28 bước chuyển tiếp tương tác phức tạp. Cỡ mẫu này đại diện hoàn hảo cho các màn hình quản trị dữ liệu có sự kết hợp đa dạng giữa các ô tìm kiếm, bảng danh mục và các nút điều hướng cập nhật.

Lý do lựa chọn phương pháp phân tích duyệt đồ thị theo chiều sâu (Depth First Search - DFS) kết hợp với thuật toán hoàn thiện đường dẫn ADD_Path là vì cấu trúc chuyển trạng thái của trang Web có thể ánh xạ trực tiếp thành một đồ thị có hướng. Thuật toán DFS mở rộng cho phép duyệt qua toàn bộ 100% các cạnh chuyển tiếp mà không bị lặp vô hạn, trong khi thuật toán bổ trợ ADD_Path đảm bảo rằng mọi ca kiểm thử sinh ra đều bắt đầu từ trạng thái gốc và kết thúc chính xác tại một trạng thái hợp lệ của hệ thống, loại bỏ triệt để các đường dẫn kiểm thử dở dang.

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

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

Quá trình phân tích thực nghiệm và kiểm thử tự động đã đem lại 4 phát hiện quan trọng có giá trị khoa học và ứng dụng thực tiễn cao:

  1. Cơ chế nhận diện và kiểm thử chính xác 100% phần tử Web động: Nghiên cứu đã hoàn thiện giải pháp đặc tả cho các phần tử phức tạp không có thuộc tính định danh cố định (ID) thông qua chuỗi thuộc tính phân tách bằng dấu gạch đứng. Công cụ đã xử lý thành công các bảng dữ liệu động (DataGrid), danh sách lựa chọn (DropDownList, RadioList) và các hộp thoại pop-up mà các công cụ kiểm thử trước đó thường xuyên gặp lỗi nhận diện.
  2. Tự động hóa sinh trọn vẹn 12 đường dẫn kiểm thử tối ưu: Từ tập dữ liệu đầu vào gồm 9 trạng thái và 28 bước chuyển tiếp của trang tìm kiếm cán bộ, thuật toán kết hợp DFS và ADD_Path đã sinh ra chính xác 12 ca kiểm thử hoàn chỉnh. Toàn bộ 28 cạnh chuyển tiếp đều được bao phủ 100%, không xuất hiện bất kỳ kịch bản trùng lặp nào.
  3. Tích hợp thực thi mượt mà giữa Selenium WebDriver và thư viện Jsoup: Việc sử dụng Selenium WebDriver phiên bản 2.24 kết hợp với thư viện phân tích cú pháp HTML Jsoup trên nền tảng Java Eclipse đã cho phép hệ thống tự động bóc tách trạng thái thực tế của trang Web và so sánh trực tiếp với trạng thái mong muốn trong tệp đặc tả.
  4. Giảm thiểu trên 60% thời gian thực thi kiểm thử so với quy trình thủ công: Kết quả thử nghiệm cho thấy thời gian chạy tự động toàn bộ 12 kịch bản tương tác phức tạp chỉ mất vài chục giây, nhanh hơn gấp nhiều lần so với kiểm thử viên thực hiện thủ công, đồng thời đảm bảo độ chính xác tuyệt đối trong việc phát hiện các lỗi sai lệch trạng thái giao diện.

Thảo luận kết quả

Thành công của nghiên cứu xuất phát từ việc trừu tượng hóa chính xác các hành vi giao diện người dùng thành mô hình toán học rõ ràng, giúp máy tính có thể tự động hóa toàn bộ việc suy diễn logic kiểm thử. So với các công trình nghiên cứu trước đây vốn chỉ dừng lại ở việc kiểm thử từng trang Web tĩnh hoặc yêu cầu mọi phần tử HTML bắt buộc phải có thuộc tính ID tĩnh, giải pháp trong luận văn này đã mở rộng phạm vi áp dụng cho toàn bộ các ứng dụng Web hiện đại chứa các thành phần động phong phú.

Dữ liệu kết quả nghiên cứu có thể được trực quan hóa rất hiệu quả thông qua một biểu đồ mạng đồ thị có hướng (Directed Graph) minh họa trực quan 9 nút trạng thái và 28 nhánh chuyển tiếp tương ứng với hành động của người dùng. Đồng thời, một biểu đồ cột so sánh thời gian thực thi giữa kiểm thử thủ công và kiểm thử tự động sẽ làm nổi bật mức độ tiết kiệm thời gian vượt trội trên 60%. Bên cạnh đó, bảng tổng hợp 12 đường dẫn kiểm thử đóng vai trò như một ma trận truy vết chất lượng, chứng minh tính toàn diện của thuật toán khi duyệt qua tất cả các trường hợp tương tác biên mà kiểm thử viên con người rất dễ bỏ sót.

Mặc dù vậy, quá trình ứng dụng thực tế cũng cho thấy một hạn chế nhỏ là khi ứng dụng Web có quy mô hàng trăm trang với hàng nghìn trạng thái, việc xây dựng các bảng đặc tả Excel thủ công ban đầu đòi hỏi chuyên gia phân tích phải có trình độ chuyên môn cao và nắm rất vững nghiệp vụ hệ thống.

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

Dựa trên các kết quả đạt được, luận văn đưa ra 4 khuyến nghị then chốt nhằm thúc đẩy việc ứng dụng kiểm thử dựa trên mô hình vào thực tế phát triển phần mềm:

  1. Chuẩn hóa quy trình đặc tả giao diện Web bằng bảng tính MS Excel trong các dự án phần mềm: Đội ngũ kỹ sư kiểm thử (QA/QC) và chuyên viên phân tích nghiệp vụ (BA) cần áp dụng thống nhất cấu trúc 4 bảng đặc tả cho các module phần mềm mới, hướng tới mục tiêu giảm 40% sai sót trong việc mô hình hóa yêu cầu nghiệp vụ ngay trong 3 tháng đầu triển khai.
  2. Tích hợp thuật toán sinh ca kiểm thử tự động DFS và ADD_Path vào quy trình CI/CD: Trưởng nhóm kiểm thử tự động và kỹ sư DevOps cần cài đặt các công cụ sinh kịch bản tự động vào luồng tích hợp liên tục, đặt mục tiêu duy trì tỷ lệ bao phủ kiểm thử hồi quy đạt 100% cho mọi bản build phần mềm trong vòng 6 tháng tiếp theo.
  3. Nâng cấp các thư viện nhận dạng phần tử Web động kết hợp giữa Selenium và Jsoup: Đội ngũ kỹ sư phát triển công cụ nội bộ cần tiếp tục mở rộng bộ phân tích cú pháp để hỗ trợ các khung giao diện Web hiện đại như React, Angular hay Vue, nhằm nâng tỷ lệ nhận diện tự động các phần tử không có ID cố định lên trên 95% trong quý 3 năm tới.
  4. Triển khai các khóa đào tạo chuyên sâu về phương pháp kiểm thử dựa trên mô hình MBT: Bộ phận quản lý chất lượng phần mềm phối hợp cùng các cơ sở đào tạo đại học tổ chức các khóa huấn luyện kỹ thuật mô hình hóa ôtômát cho 100% nhân sự kiểm thử, hoàn thành theo chu kỳ định kỳ 1 năm một lần.

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

Nội dung luận văn mang lại giá trị học thuật và ứng dụng sâu sắc cho 4 nhóm đối tượng chính sau đây:

  1. Kỹ sư kiểm thử tự động (Automation QA/QC Engineers): Những người đang tìm kiếm giải pháp tối ưu hóa việc sinh kịch bản kiểm thử cho các ứng dụng Web phức tạp. Tài liệu cung cấp chi tiết thuật toán DFS mở rộng, phương pháp kết hợp Selenium WebDriver phiên bản 2.24 và Jsoup để tự động hóa toàn diện quy trình kiểm thử hồi quy.
  2. Giảng viên và nhà nghiên cứu công nghệ thông tin: Các nhà khoa học quan tâm đến lý thuyết ôtômát hữu hạn trạng thái, kiểm thử hình thức và kỹ thuật phần mềm. Luận văn là tài liệu tham khảo giá trị để giảng dạy và phát triển các hướng nghiên cứu mở rộng sang máy trạng thái UML (UML State Machine).
  3. Trưởng dự án và Quản lý chất lượng phần mềm (Project Managers / QA Leads): Các cấp quản lý cần một phương pháp luận chuẩn hóa để kiểm soát chất lượng phần mềm, giảm thiểu chi phí nhân sự và rút ngắn thời gian bàn giao sản phẩm thông qua tự động hóa 100% việc sinh ca kiểm thử.
  4. Lập trình viên Front-end và Kiến trúc sư hệ thống Web: Đội ngũ phát triển cần hiểu rõ cơ chế tương tác và cách thức kiểm thử hộp đen trên giao diện, từ đó thiết kế cấu trúc mã nguồn HTML chuẩn mực, thân thiện với các công cụ kiểm thử tự động.

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

Kiểm thử dựa trên mô hình đem lại ưu thế gì vượt trội so với kiểm thử thủ công?

Kiểm thử dựa trên mô hình cho phép tự động hóa hoàn toàn khâu sinh ca kiểm thử và thực thi kịch bản từ mô hình đặc tả hình thức. Phương pháp này giúp loại bỏ hoàn toàn các sai sót do con người, đảm bảo độ bao phủ 100% các luồng tương tác và giúp tiết kiệm trên 60% thời gian kiểm thử hồi quy khi cập nhật phần mềm.

Mô hình ôtômát hữu hạn trạng thái giải quyết bài toán giao diện Web như thế nào?

Ôtômát hữu hạn trạng thái mô hình hóa mỗi giao diện tại một thời điểm thành một trạng thái toán học gồm 5 thành phần chuẩn mực. Khi người dùng thực hiện một hành động tương tác, hệ thống sẽ kích hoạt hàm chuyển trạng thái, giúp theo dõi chính xác hành vi của ứng dụng Web qua từng bước tương tác.

Làm thế nào để công cụ kiểm thử nhận dạng được các phần tử Web động không có ID?

Công cụ giải quyết vấn đề này bằng cách thiết lập chuỗi định danh mở rộng kết hợp nhiều thuộc tính của phần tử chứa nó, phân tách bằng ký tự gạch đứng. Ví dụ, một dòng dữ liệu trong bảng có thể được xác định thông qua ID của bảng cha, thẻ hàng và giá trị hiển thị bên trong mà không cần ID tĩnh.

Vai trò cốt lõi của thuật toán ADD_Path trong việc sinh ca kiểm thử là gì?

Thuật toán ADD_Path đóng vai trò hoàn thiện các đường dẫn kiểm thử được sinh ra từ thuật toán duyệt theo chiều sâu DFS. Nó đảm bảo rằng mọi ca kiểm thử sau khi duyệt qua các nhánh đều tiếp tục đi tới một trạng thái kết thúc hợp lệ của hệ thống, giúp 100% kịch bản kiểm thử đều có thể thực thi trọn vẹn.

Sự kết hợp giữa Selenium WebDriver và Jsoup mang lại lợi ích gì cho việc thực thi?

Selenium WebDriver đảm nhiệm vai trò khởi tạo trình duyệt và điều khiển các hành động nhấp chuột hoặc nhập liệu của người dùng, trong khi Jsoup hỗ trợ bóc tách và phân tích cây cấu trúc HTML cực nhanh. Sự kết hợp này giúp công cụ so sánh tức thì trạng thái thực tế của trang Web với trạng thái mong muốn trong tệp đặc tả.

Kết luận

  1. Nghiên cứu đã xây dựng thành công phương pháp hình thức hóa tương tác giao diện ứng dụng Web dựa trên mô hình ôtômát hữu hạn trạng thái và cấu trúc đặc tả 4 bảng tính trực quan.
  2. Đề xuất và cài đặt hoàn chỉnh thuật toán kết hợp giữa DFS mở rộng và ADD_Path, tự động sinh ra 12 ca kiểm thử bao phủ toàn diện 100% các đỉnh và 28 cạnh chuyển tiếp của đồ thị trạng thái.
  3. Phát triển công cụ kiểm thử tự động tích hợp Selenium WebDriver và Jsoup, giải quyết triệt để bài toán kiểm thử trên các phần tử Web động và giao diện pop-up phức tạp.
  4. Kết quả thực nghiệm trên hệ thống Quản lý thông tin cán bộ thực tế năm 2015 đã chứng minh tính hiệu quả vượt trội, giúp cắt giảm trên 60% thời gian và công sức kiểm thử so với phương pháp thủ công.
  5. Định hướng tiếp theo của đề tài là mở rộng thuật toán sinh kịch bản cho các máy trạng thái UML quy mô lớn và xây dựng các tiện ích tự động trích xuất bảng đặc tả trực tiếp từ mã nguồn giao diện Web.

Hãy áp dụng ngay phương pháp kiểm thử dựa trên mô hình để nâng tầm chất lượng và tự động hóa quy trình kiểm thử phần mềm cho doanh nghiệp của bạn.