Tổng quan nghiên cứu

Trong quy trình phát triển phần mềm hiện đại, hoạt động đảm bảo chất lượng và kiểm thử thường chiếm hơn 50% tổng chi phí và nỗ lực của toàn bộ dự án. Khi các ứng dụng web ngày càng phát triển mạnh mẽ và phục vụ hàng triệu người dùng theo mô hình hoạt động liên tục mọi lúc mọi nơi, việc duy trì tính ổn định của giao diện người dùng trở thành một thách thức mang tính sống còn. Các giao dịch trực tuyến trong lĩnh vực ngân hàng điện tử, thương mại điện tử và dịch vụ công đều đòi hỏi tính chính xác tuyệt đối trong từng thao tác chuyển đổi trạng thái giao diện.

Tuy nhiên, hoạt động kiểm thử giao diện người dùng hiện nay vẫn phụ thuộc phần lớn vào phương pháp thủ công. Thao tác thủ công không chỉ gây tốn kém thời gian, nhàm chán cho kiểm thử viên mà còn để lọt từ 30% đến 40% các lỗi tiềm ẩn do sự phức tạp của tương tác người dùng và tính lặp lại của các bài kiểm thử hồi quy. Các công cụ thương mại tự động hóa trên thị trường lại có chi phí bản quyền lên đến hàng chục nghìn USD, vượt quá khả năng tiếp cận của nhiều doanh nghiệp vừa và nhỏ.

Nhằm giải quyết triệt để vấn đề này, luận văn tập trung nghiên cứu phương pháp sinh bộ kiểm thử tự động cho giao diện ứng dụng web dựa trên tiếp cận mô hình hóa. Mục tiêu cụ thể là xây dựng quy trình tự động chuyển đổi bản thiết kế giao diện thành mô hình toán học, trích xuất toàn bộ các ca kiểm thử khả dĩ và tự động hóa việc thực thi thông qua mã lệnh điều khiển trình duyệt. Phạm vi nghiên cứu được triển khai thực nghiệm trên hệ thống quản lý đào tạo trực tuyến với 5 phân hệ trang web tiêu biểu tại Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Kết quả nghiên cứu mang lại ý nghĩa thực tiễn lớn, giúp bao phủ 100% các trạng thái và liên kết chuyển tiếp giao diện, đồng thời cắt giảm khoảng 60% đến 70% thời gian thực thi kiểm thử so với phương pháp 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 của phương pháp kiểm thử dựa trên mô hình kết hợp với lý thuyết ôtômat và lý thuyết đồ thị định hướng, tuân thủ các hướng dẫn chuẩn mực kỹ nghệ phần mềm quốc tế theo tiêu chuẩn SWEBOK ISO/IEC TR 19759.

Mô hình cốt lõi được ứng dụng là Máy hữu hạn trạng thái được biểu diễn toán học dưới dạng bộ 5 thành phần $M = (\Sigma, Q, \delta, S, F)$. Trong đó, $\Sigma$ là tập hợp toàn bộ các sự kiện tương tác người dùng tác động lên trang web; $Q$ đại diện cho không gian trạng thái của các phần tử giao diện; $\delta$ là hàm chuyển đổi trạng thái xác định bước nhảy giữa các màn hình hoặc giữa các thành phần giao diện; $S$ là trạng thái khởi tạo ban đầu khi tải trang; và $F$ là tập các trạng thái kết thúc hợp lệ hoặc trạng thái lỗi.

Bên cạnh đó, nghiên cứu hệ thống hóa các khái niệm chuyên ngành nền tảng:

  • Trạng thái trang web: Tập hợp các giá trị thuộc tính của toàn bộ phần tử HTML hiển thị tại một thời điểm xác định.
  • Sự kiện tương tác: Hành vi do người dùng hoặc tiến trình tự động kích hoạt như nhập chuỗi văn bản, lựa chọn danh sách thả xuống, nhấp chuột hoặc gửi dữ liệu biểu mẫu.
  • Chuyển đổi trạng thái: Bước chuyển dịch có điều kiện từ trạng thái hiện tại sang trạng thái kế tiếp khi xuất hiện một sự kiện tương ứng.
  • Giao diện lập trình ứng dụng Selenium WebDriver: Khung công cụ điều khiển trình duyệt gốc cho phép ánh xạ trực tiếp các thao tác kiểm thử trừu tượng thành hành vi tự động trên trình duyệt web.

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

Nguồn dữ liệu thực nghiệm của đề tài được thu thập từ một hệ thống quản lý học vụ hoàn chỉnh gồm 5 trang chức năng cốt lõi: trang đăng nhập hệ thống, trang hiển thị thông tin học viên, trang tra cứu kết quả học tập, trang nhập điểm thi học viên và trang đăng xuất.

Phương pháp chọn mẫu có chủ đích được áp dụng để lựa chọn các trang web đại diện cho nhiều dạng thức tương tác phức tạp: từ xác thực phân quyền đa người dùng (quản trị viên, giáo vụ, học viên), biểu mẫu tìm kiếm dữ liệu động, danh sách lựa chọn đa cấp đến xử lý biểu mẫu nhập liệu có ràng buộc toàn vẹn. Mỗi trang được phân rã chi tiết thành 4 bảng dữ liệu đầu vào lưu trữ dưới định dạng bảng tính: bảng phần tử HTML, bảng trạng thái, bảng sự kiện và bảng chuyển đổi trạng thái.

Phương pháp phân tích và xử lý dựa trên thuật toán duyệt đồ thị theo chiều sâu mở rộng kết hợp cơ chế quay lui. Lý do lựa chọn thuật toán này xuất phát từ yêu cầu tối ưu hóa đường đi với độ phức tạp tính toán tuyến tính $O(V + E)$, trong đó $V$ là số lượng trạng thái và $E$ là số lượng chuyển đổi. Thuật toán đảm bảo duyệt qua 100% các đỉnh và cạnh mà không sinh ra các nhánh trùng lặp không cần thiết. Toàn bộ tiến trình nghiên cứu, xây dựng thuật toán và kiểm thử thực nghiệm được thực hiện trong khung thời gian 12 tháng tại phòng thí nghiệm công nghệ phần mềm.

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

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

Nghiên cứu đã đạt được các kết quả thực nghiệm nổi bật sau quá trình cài đặt và chạy thử nghiệm hệ thống:

Thứ nhất, phương pháp đã chuẩn hóa thành công quy trình mô hình hóa 5 trang web phức tạp sang các cấu trúc máy hữu hạn trạng thái chuẩn xác. Toàn bộ 8 phần tử HTML của trang đăng nhập và hàng chục phần tử giao diện của các trang nhập điểm, tra cứu học vụ đều được lượng hóa thành các tập trạng thái và sự kiện rõ ràng.

Thứ hai, thuật toán duyệt đồ thị theo chiều sâu mở rộng đã tự động sinh ra tập hợp các kịch bản kiểm định hoàn chỉnh. Điển hình tại phân hệ đăng nhập, chương trình đã sinh tự động 11 đường kiểm thử độc lập, đạt tỷ lệ bao phủ 100% các nhánh chuyển đổi hợp lệ và nhánh xử lý ngoại lệ mà không xảy ra hiện tượng lặp đường dẫn.

Thứ ba, công cụ thực nghiệm viết bằng Java trên nền Eclipse kết hợp Selenium WebDriver đã tự động hóa 100% việc chuyển đổi các đường kiểm thử đồ thị thành mã thực thi trên trình duyệt. Thời gian tạo lập bộ kịch bản kiểm thử tự động giảm khoảng 65% so với việc lập trình thủ công từng kịch bản đơn lẻ.

Thứ tư, hiệu quả phát hiện lỗi giao diện được nâng cao rõ rệt. Hệ thống tự động xác định chính xác các trường hợp biên như để trống thông tin tài khoản, nhập sai định dạng mật khẩu hoặc chọn sai điều kiện lọc khóa học, đạt độ chính xác tương đương 100% so với kết quả mong đợi từ bản thiết kế gốc.

Thảo luận kết quả

Nguyên nhân chính giúp phương pháp đạt hiệu quả vượt trội là nhờ tính hình thức hóa chặt chẽ của mô hình máy hữu hạn trạng thái. Việc ánh xạ trạng thái giao diện thành các đỉnh và sự kiện thành các cạnh trong đồ thị có hướng đã triệt tiêu hoàn toàn sự cảm tính của kiểm thử viên, giúp bao quát toàn bộ các kịch bản tương tác người dùng phức tạp nhất.

So với các nghiên cứu kiểm thử hộp đen truyền thống vốn chỉ kiểm tra ngẫu nhiên đầu vào - đầu ra mà không nắm bắt được trạng thái trung gian, phương pháp dựa trên mô hình FSM giúp kiểm soát chặt chẽ từng bước chuyển tiếp màn hình. Khi so sánh với các công cụ tự động hóa đắt tiền khác, giải pháp kết hợp mã nguồn mở Selenium WebDriver của luận văn mang lại hiệu năng tương đương về khả năng kiểm thử giao diện nhưng giúp tiết kiệm 100% chi phí bản quyền phần mềm cho doanh nghiệp.

Về mặt trực quan hóa, toàn bộ dữ liệu trạng thái và kịch bản sinh ra có thể được biểu diễn trực quan thông qua các sơ đồ chuyển đổi trạng thái do GraphViz kết xuất và các biểu đồ thanh so sánh độ bao phủ kiểm thử. Bảng tổng hợp thực nghiệm cho thấy thời gian thực thi các ca kiểm thử tự động chỉ mất khoảng vài chục giây cho mỗi trang, nhanh hơn gấp 10 lần so với thao tác thủ công của con người.

Đề 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ị và giải pháp hành động cụ thể nhằm thúc đẩy ứng dụng kiểm thử tự động trong thực tế:

  1. Chuẩn hóa quy trình thiết kế giao diện gắn liền với mô hình trạng thái: Các kiến trúc sư phần mềm và chuyên viên phân tích nghiệp vụ tại doanh nghiệp cần hoàn thiện tài liệu đặc tả giao diện dưới dạng máy hữu hạn trạng thái ngay từ giai đoạn thiết kế sơ bộ. Mục tiêu đạt 100% khả năng truy vết yêu cầu phần mềm, áp dụng trong lộ trình 3 đến 6 tháng đầu của dự án.

  2. Tích hợp công cụ sinh kiểm thử tự động vào hệ thống tích hợp liên tục: Đội ngũ kỹ sư DevOps và chuyên viên kiểm thử tự động cần cấu hình công cụ sinh ca kiểm thử dựa trên Selenium vào các đường ống CI/CD phổ biến như Jenkins hoặc GitLab CI. Giải pháp này giúp cắt giảm 50% thời gian chạy kiểm thử hồi quy trước mỗi đợt phát hành phiên bản mới trong vòng 6 tháng triển khai.

  3. Mở rộng thuật toán thích ứng với các ứng dụng web động hiện đại: Nhóm nghiên cứu và phát triển cần nâng cấp thuật toán duyệt đồ thị để tự động nhận diện và xử lý các trạng thái bất đồng bộ của ứng dụng trang đơn (Single Page Application) sử dụng React hoặc Angular, hoàn thiện module mở rộng trong thời gian 12 tháng.

  4. Đào tạo nâng cao năng lực kiểm thử dựa trên mô hình cho nhân sự: Ban quản lý chất lượng và các cơ sở đào tạo lập trình viên cần xây dựng các khóa huấn luyện chuyên sâu về kiểm thử dựa trên mô hình và tự động hóa kiểm thử với Selenium WebDriver, đảm bảo 100% chuyên viên kiểm thử nắm vững kỹ thuật mô hình hóa trong vòng 9 tháng.

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

Nội dung và kết quả nghiên cứu của luận văn mang lại giá trị thiết thực cho 4 nhóm đối tượng chính:

  • Kỹ sư kiểm thử tự động hóa: Nắm vững phương pháp chuyển đổi từ mô hình trạng thái logic sang bộ kịch bản kiểm thử Selenium WebDriver có thể thực thi tự động, loại bỏ công việc viết mã kiểm thử thủ công lặp đi lặp lại trên các biểu mẫu giao diện phức tạp.
  • Lập trình viên và Kiến trúc sư phần mềm web: Tiếp cận góc nhìn toàn diện về luồng dữ liệu và sự biến đổi trạng thái của các phần tử HTML trên trình duyệt, từ đó tối ưu hóa cấu trúc mã nguồn giao diện để nâng cao tính khả kiểm của sản phẩm.
  • Học viên cao học và Nhà nghiên cứu ngành Công nghệ thông tin: Tìm thấy tài liệu tham khảo giá trị về ứng dụng lý thuyết ôtômat, lý thuyết đồ thị và phương pháp kiểm thử dựa trên mô hình vào giải quyết các bài toán công nghệ thực tiễn.
  • Giám đốc chất lượng và Quản trị dự án phần mềm: Tham khảo khung giải pháp tự động hóa chi phí thấp nhưng hiệu quả cao nhằm tối ưu hóa ngân sách dự án, cắt giảm trên 50% chi phí kiểm thử và nâng cao độ tin cậy của phần mềm trước khi bàn giao cho khách hàng.

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

  1. Phương pháp kiểm thử dựa trên mô hình FSM có ưu điểm gì vượt trội so với kiểm thử thủ công truyền thống? Phương pháp tiếp cận mô hình hóa giúp tự động hóa hoàn toàn khâu sinh ca kiểm thử, đạt độ bao phủ 100% các trạng thái và chuyển đổi của giao diện. Giải pháp này loại bỏ hoàn toàn sai sót do con người, giúp tiết kiệm hơn 50% chi phí và thời gian kiểm thử hồi quy.

  2. Tại sao luận văn lại lựa chọn kết hợp mô hình FSM với bộ công cụ Selenium WebDriver? Selenium WebDriver là công cụ mã nguồn mở mạnh mẽ, giao tiếp trực tiếp với trình duyệt ở cấp độ gốc và hỗ trợ đa ngôn ngữ lập trình. Việc kết hợp này cho phép chuyển đổi mượt mà từ các đường kiểm thử đồ thị trừu tượng thành các lệnh thao tác trực tiếp trên các phần tử HTML.

  3. Thuật toán duyệt đồ thị theo chiều sâu có bị ảnh hưởng bởi hiện tượng bùng nổ tổ hợp trạng thái không? Thuật toán duyệt đồ thị theo chiều sâu mở rộng tích hợp cơ chế quay lui thông minh, chỉ ghi nhận các nhánh chuyển đổi chưa được bao phủ. Nhờ đó, độ phức tạp tính toán được kiểm soát ở mức $O(V + E)$, đảm bảo chương trình sinh kịch bản chạy nhanh và không bị tràn bộ nhớ trên từng phân hệ trang.

  4. Doanh nghiệp cần chuẩn bị những định dạng dữ liệu đầu vào nào để vận hành công cụ này? Doanh nghiệp chỉ cần cung cấp 4 bảng biểu định dạng Excel cho mỗi trang web cần kiểm tra, bao gồm danh mục phần tử HTML, bảng định nghĩa các trạng thái, bảng các sự kiện thao tác và bảng biểu diễn ma trận chuyển trạng thái theo đúng thiết kế hệ thống.

  5. Phương pháp này có thể áp dụng cho các ứng dụng web trang đơn hiện đại hay không? Hoàn toàn khả thi khi mở rộng cơ chế lắng nghe sự kiện DOM động. Về bản chất, các ứng dụng web hiện đại vẫn vận hành theo nguyên lý biến đổi trạng thái của các component, do đó mô hình máy hữu hạn trạng thái hoàn toàn đáp ứng tốt việc kiểm thử luồng giao diện.

Kết luận

  • Công trình đã giải quyết thành công bài toán tự động hóa kiểm thử giao diện ứng dụng web, khắc phục triệt để các hạn chế của phương pháp kiểm thử thủ công truyền thống.
  • Ứng dụng xuất sắc lý thuyết máy hữu hạn trạng thái và đồ thị có hướng để mô hình hóa toàn diện không gian tương tác người dùng trên giao diện web.
  • Phát triển thuật toán duyệt đồ thị theo chiều sâu mở rộng với cơ chế quay lui, đảm bảo độ bao phủ 100% các trạng thái và chuyển đổi mà không sinh đường dẫn dư thừa.
  • Xây dựng thành công công cụ thực nghiệm trên nền tảng Java kết hợp Selenium WebDriver, chứng minh khả năng tự động hóa hoàn toàn từ khâu sinh kịch bản đến thực thi kiểm thử.
  • Đóng góp giải pháp công nghệ mã nguồn mở giúp các doanh nghiệp phần mềm tiết kiệm trên 50% chi phí và nâng cao chất lượng sản phẩm phần mềm.

Về lộ trình phát triển tiếp theo, nhóm nghiên cứu dự kiến mở rộng công cụ để hỗ trợ kiểm thử tự động cho các giao diện web dịch vụ và ứng dụng di động đa nền tảng trong khung thời gian 12 đến 18 tháng tới. Các chuyên viên kiểm thử và kỹ sư phần mềm hãy áp dụng ngay phương pháp kiểm thử dựa trên mô hình vào dự án thực tế để tối ưu hóa năng suất và chất lượng sản phẩm.