Tổng quan nghiên cứu
Trong kỹ nghệ phần mềm hiện đại, ứng dụng web chiếm hơn 80% thị phần các hệ thống cung cấp dịch vụ trực tuyến và đóng vai trò huyết mạch trong kinh doanh, giáo dục cũng như y tế. Tuy nhiên, hoạt động kiểm thử nhằm đảm bảo chất lượng phần mềm thường chiếm từ 50% đến 70% tổng chi phí và thời gian của toàn bộ vòng đời phát triển dự án. Kiểm thử tương tác giao diện người dùng theo phương thức thủ công bộc lộ nhiều điểm nghẽn nghiêm trọng khi các ứng dụng web ngày càng mở rộng quy mô với cấu trúc động phức tạp. Các phương pháp kiểm thử ngẫu nhiên thông thường theo ước tính chỉ phát hiện được khoảng 10% đến 20% số lượng lỗi tiềm ẩn, đồng thời không thể đảm bảo bao phủ đầy đủ các luồng nghiệp vụ.
Mặt khác, các nghiên cứu về kiểm thử dựa trên mô hình trước đây vẫn phụ thuộc vào việc nhập liệu thủ công hơn 70% khối lượng dữ liệu đầu vào dạng bảng tính, dẫn đến nguy cơ sai sót cao và tiêu tốn nhiều nhân lực. Luận văn tập trung giải quyết bài toán cốt lõi: Làm thế nào để tự động hóa toàn diện quy trình kiểm thử tương tác giao diện web từ khâu đặc tả mô hình, sinh bộ dữ liệu đầu vào đến thực thi tự động các ca kiểm thử. Mục tiêu cụ thể là xây dựng khung phương pháp đặc tả hình thức dựa trên ô-tô-mát hữu hạn trạng thái, phát triển thuật toán tự động sinh đường dẫn kiểm thử đạt độ bao phủ 100% các nhánh chuyển trạng thái, và nâng cấp công cụ tự động hóa ATWA tích hợp thư viện Selenium. Nghiên cứu được triển khai thực nghiệm trên hệ thống quản lý thực tế tại Công ty Cổ phần Phần mềm FPT trong giai đoạn năm 2015 đến năm 2016, mang lại giải pháp giảm thiểu hơn 60% thời gian kiểm thử chấp nhận trong các chu kỳ phát triển linh hoạt.
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 lý thuyết kiểm thử dựa trên mô hình, kết hợp lý thuyết ô-tô-mát hữu hạn trạng thái và mô hình kiểm thử chấp nhận trong quy trình phát triển phần mềm Agile. Kiểm thử dựa trên mô hình cho phép trừu tượng hóa các hành vi phức tạp của hệ thống phần mềm thành các cấu trúc toán học chặt chẽ nhằm tự động sinh kịch bản kiểm thử độc lập với mã nguồn thực thi.
Hệ thống được mô hình hóa thông qua 4 khái niệm trọng tâm:
- Ô-tô-mát hữu hạn trạng thái (FSA): Mỗi trang web được chuẩn hóa thành một bộ 5 thành phần hình thức bao gồm tập trạng thái hữu hạn, trạng thái khởi tạo ban đầu, tập sự kiện có điều kiện kích hoạt, hàm chuyển trạng thái và tập trạng thái kết thúc hợp lệ.
- Phần tử Web (Web Element): Các thành phần giao diện cơ bản được định danh duy nhất thông qua các thuộc tính kỹ thuật như mã định danh, tên thẻ HTML, đường dẫn biểu thức truy vấn và kiểu phần tử tương ứng.
- Trạng thái trang Web: Tập hợp các giá trị hiển thị và thuộc tính của tất cả các phần tử trên giao diện tại một thời điểm xác định.
- Sự kiện và Phép ghép nối: Các hành vi tác động của người dùng như nhập văn bản, xóa văn bản, nhấn nút hoặc chọn danh sách; kết hợp phép toán ghép nối các ô-tô-mát đơn lẻ để tạo nên mô hình tổng thể của toàn bộ ứng dụng web.
Phương pháp nghiên cứu
Nghiên cứu sử dụng phương pháp thực nghiệm kết hợp giải thuật đồ thị hình thức trên nguồn dữ liệu kiểm thử thực tế từ phân hệ quản lý thông tin tổ chức thuộc dự án FPT Services tại Công ty Cổ phần Phần mềm FPT. Cỡ mẫu nghiên cứu bao gồm toàn bộ hệ thống giao diện chức năng với 8 trạng thái đặc tả tiêu biểu, 4 nhóm sự kiện tương tác cốt lõi và hàng chục phần tử web phức hợp. Phương pháp chọn mẫu có chủ đích được áp dụng nhằm lựa chọn những màn hình có mật độ tương tác cao, luồng dữ liệu đan xen giữa nhiều tab thông tin và cửa sổ tương tác phụ để đánh giá toàn diện khả năng chịu tải của giải thuật.
Lý do lựa chọn giải thuật duyệt đồ thị theo chiều sâu mở rộng kết hợp thuật toán chuẩn hóa điểm kết thúc là vì phương pháp này giải quyết triệt để vấn đề bùng nổ không gian trạng thái, đồng thời đảm bảo 100% các đỉnh và cạnh trong mô hình chuyển trạng thái đều được duyệt qua mà không để lại các đường dẫn cụt. Khung nghiên cứu sử dụng công cụ mã nguồn mở JFLAP để thiết kế sơ đồ trạng thái, tự động xuất cấu trúc sang 4 bảng tính định dạng chuẩn và thực thi thông qua công cụ ATWA viết bằng ngôn ngữ Java tích hợp thư viện Selenium WebDriver phiên bản 2.0. Quá trình thu thập và phân tích dữ liệu thực nghiệm được thực hiện liên tục qua các chu kỳ phát triển nước rút 2 tuần trong suốt thời gian 6 tháng của dự án.
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 công cụ ATWA trên hệ thống ứng dụng web thực tế đã chứng minh những bước đột phá vượt bậc so với các phương pháp kiểm thử truyền thống:
- Tự động hóa dữ liệu đầu vào vượt trội: Luận văn đã loại bỏ hoàn toàn hơn 75% khối lượng công việc nhập liệu thủ công vốn là nhược điểm lớn của các giải pháp trước đây. Nhờ ứng dụng công cụ hỗ trợ chuyển đổi mô hình sang bảng dữ liệu, thời gian chuẩn bị dữ liệu đầu vào giảm từ 4 giờ xuống còn dưới 30 phút cho mỗi phân hệ chức năng.
- Độ bao phủ đường dẫn đạt mức tối đa: Thuật toán mở rộng duyệt theo chiều sâu kết hợp thuật toán bổ sung điểm kết thúc đã sinh ra 100% các đường dẫn kiểm thử hoàn chỉnh, không xảy ra hiện tượng trùng lặp hoặc kết thúc tại các trạng thái lơ lửng. Cụ thể, trên màn hình chi tiết tổ chức, hệ thống đã tự động sinh ra 10 đường dẫn kiểm thử bao phủ toàn bộ các tổ hợp thay đổi dữ liệu địa chỉ, quốc gia và trạng thái ưu tiên.
- Rút ngắn thời gian thực thi kiểm thử: Tốc độ thực thi tự động của công cụ ATWA kết hợp trình điều khiển Selenium nhanh hơn gấp 6 đến 8 lần so với kiểm thử viên thao tác bằng tay. Bộ kiểm thử gồm 10 kịch bản phức tạp được thực thi hoàn tất trong vòng 3 phút trên trình duyệt tự động, trong khi kiểm thử thủ công cần trung bình từ 25 đến 30 phút.
- Độ chính xác và tính lặp lại tuyệt đối: Tỷ lệ phát hiện sai lệch giữa tài liệu thiết kế giao diện và chương trình thực tế đạt 100% trên các ca kiểm thử bị lỗi, hỗ trợ kiểm thử hồi quy tự động sau mỗi lần cập nhật mã nguồn mà không phát sinh thêm chi phí nhân lực.
Thảo luận kết quả
Nguyên nhân chính dẫn đến sự cải thiện hiệu suất vượt bậc là việc áp dụng phương pháp ghép nối hình thức giữa các ô-tô-mát trạng thái đơn lẻ thành mô hình tổng thể. Thay vì phải xây dựng một mô hình khổng lồ và phức tạp ngay từ đầu, kỹ sư kiểm thử chỉ cần mô hình hóa từng trang web độc lập, sau đó thuật toán hợp nhất sẽ tự động kết nối các trạng thái chuyển tiếp dựa trên giao diện mốc. So với các công cụ ghi và phát lại truyền thống vốn rất dễ bị gián đoạn kịch bản khi giao diện thay đổi nhỏ về mã định danh thẻ, phương pháp kiểm thử dựa trên mô hình phân tách rõ ràng giữa tầng logic trạng thái và tầng ánh xạ phần tử web.
Dữ liệu kiểm thử và kết quả thực nghiệm được cấu trúc minh bạch qua 4 bảng dữ liệu bao gồm: bảng đặc tả phần tử web, bảng trạng thái, bảng sự kiện và bảng chuyển trạng thái. Khi thảo luận kết quả, sự tương quan giữa số lượng trạng thái và số đường dẫn kiểm thử được biểu diễn trực quan thông qua biểu đồ mạng chuyển trạng thái và bảng tổng hợp kết quả đạt hoặc không đạt. Việc Selenium WebDriver trực tiếp tương tác với các phần tử DOM trên trình duyệt giúp ghi lại nhật ký thực thi chi tiết đến từng mili-giây, cung cấp bằng chứng xác thực giúp các lập trình viên nhanh chóng khoanh vùng và khắc phục lỗi giao diện ngay trong giai đoạn kiểm thử chấp nhận.
Đề xuất và khuyến nghị
Dựa trên kết quả nghiên cứu và bài học kinh nghiệm từ thực tiễn triển khai tại doanh nghiệp, luận văn đề xuất 4 nhóm giải pháp chiến lược nhằm tối ưu hóa hoạt động kiểm thử tự động giao diện web:
- Chuẩn hóa quy trình đặc tả giao diện theo mô hình trạng thái: Ban quản lý dự án và các kỹ sư thiết kế phần mềm cần phối hợp xây dựng tài liệu thiết kế màn hình chuẩn hóa dưới dạng sơ đồ ô-tô-mát ngay từ giai đoạn khởi động dự án. Mục tiêu là bàn giao mô hình trạng thái cho đội ngũ kiểm thử trong vòng 24 đến 48 giờ sau khi chốt thiết kế, giúp giảm 50% độ trễ chuẩn bị kiểm thử.
- Tự động hóa trích xuất thuộc tính phần tử web: Nhóm phát triển công cụ cần tích hợp trực tiếp tiện ích mở rộng trên trình duyệt nhằm tự động quét mã nguồn trang web và trích xuất các thuộc tính định danh vào bảng dữ liệu trong vòng dưới 5 phút, loại bỏ hoàn toàn việc sao chép mã nguồn thủ công.
- Tích hợp công cụ kiểm thử tự động vào quy trình tích hợp liên tục: Các doanh nghiệp phần mềm cần đưa công cụ ATWA vào hệ thống tự động hóa triển khai để thực thi kiểm thử hồi quy tự động định kỳ hàng đêm trong các chu kỳ phát triển 2 tuần, hướng tới mục tiêu phát hiện sớm 90% lỗi hồi quy giao diện trước khi bàn giao sản phẩm cho khách hàng.
- Đào tạo và nâng cao năng lực kỹ thuật cho đội ngũ kiểm thử: Khuyến nghị các tổ chức công nghệ thông tin xây dựng lộ trình chuyển đổi kỹ năng trong thời gian từ 3 đến 6 tháng, đào tạo tối thiểu 80% nhân sự kiểm thử thủ công thành thạo tư duy kiểm thử dựa trên mô hình và kỹ năng lập trình kịch bản tự động với Selenium WebDriver.
Đố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ị học thuật và ứng dụng thực tiễn cao cho 4 nhóm đối tượng chính:
- Học viên cao học và nghiên cứu sinh ngành Công nghệ thông tin: Tài liệu cung cấp cơ sở lý thuyết toán học vững chắc về mô hình hóa hình thức ô-tô-mát hữu hạn trạng thái, các thuật toán duyệt đồ thị ứng dụng trong kiểm thử phần mềm, là tài liệu tham khảo giá trị cho các công trình nghiên cứu chuyên sâu về kiểm thử dựa trên mô hình.
- Kỹ sư kiểm thử tự động và Chuyên viên kiểm thử phần mềm: Cung cấp hướng dẫn toàn diện về kiến trúc công cụ ATWA, cách thức xây dựng bộ dữ liệu kiểm thử dạng bảng tính và kỹ thuật điều khiển trình duyệt bằng Selenium WebDriver để áp dụng trực tiếp vào công việc hàng ngày.
- Lập trình viên và Kiến trúc sư phần mềm ứng dụng Web: Giúp hiểu rõ cơ chế tương tác trạng thái và cấu trúc phần tử web dưới góc nhìn kiểm thử, từ đó chuẩn hóa cách đặt tên thuộc tính và tối ưu hóa kiến trúc giao diện giúp hệ thống dễ kiểm thử hơn.
- Quản lý dự án và Chuyên gia điều phối quy trình linh hoạt: Cung cấp phương pháp luận thực tiễn để tích hợp hoạt động kiểm thử tự động vào giai đoạn kiểm thử chấp nhận trong các chu kỳ nước rút, tối ưu hóa năng suất và cắt giảm ngân sách dự án.
Câu hỏi thường gặp
Kiểm thử dựa trên mô hình có ưu điểm gì vượt trội so với phương pháp ghi và phát lại truyền thống?
Phương pháp ghi và phát lại phụ thuộc chặt chẽ vào thao tác cứng của người dùng và rất dễ bị lỗi khi giao diện thay đổi nhỏ. Ngược lại, kiểm thử dựa trên mô hình phân tách logic tương tác thành các trạng thái hình thức, cho phép tự động tái sinh toàn bộ các ca kiểm thử mới chỉ bằng việc cập nhật mô hình, giúp tiết kiệm hơn 60% chi phí bảo trì kịch bản.
Làm thế nào để giải quyết bài toán bùng nổ trạng thái khi mô hình hóa các trang web có quá nhiều phần tử?
Luận văn áp dụng giải pháp chia tách ứng dụng web thành các cụm trang độc lập, sau đó sử dụng phép toán ghép nối ô-tô-mát hữu hạn trạng thái có thứ tự. Cách tiếp cận phân cấp này giúp thu nhỏ quy mô từng mô hình thành phần xuống dưới 10 trạng thái đơn giản trước khi liên kết thành hệ thống hoàn chỉnh.
Thuật toán mở rộng duyệt đồ thị theo chiều sâu đảm bảo độ bao phủ kiểm thử như thế nào?
Thuật toán duyệt đệ quy qua toàn bộ các chuyển trạng thái chưa được kích hoạt, ghi nhận các nhánh vào danh sách kiểm thử tạm thời và sử dụng thuật toán bổ sung điểm kết thúc để tự động nối dài các đường dẫn chưa chạm tới trạng thái đích, cam kết bao phủ 100% các đỉnh và cạnh của đồ thị.
Công cụ ATWA được xây dựng dựa trên những công nghệ và thư viện nền tảng nào?
Công cụ ATWA được phát triển hoàn toàn bằng ngôn ngữ lập trình Java trên nền môi trường Eclipse, tích hợp công cụ mô hình hóa mã nguồn mở JFLAP để xử lý sơ đồ ô-tô-mát và sử dụng bộ thư viện Selenium WebDriver 2.0 để tự động hóa tương tác trực tiếp trên các trình duyệt phổ biến.
Phương pháp kiểm thử tự động này có thể áp dụng hiệu quả trong các dự án phát triển theo mô hình Agile không?
Hoàn toàn phù hợp vì phương pháp được thiết kế tối ưu cho giai đoạn kiểm thử chấp nhận. Trong mỗi chu kỳ nước rút 2 tuần, nhóm kiểm thử có thể nhanh chóng xây dựng mô hình cho các tính năng mới và thực thi kiểm thử hồi quy tự động liên tục mà không làm trễ tiến độ bàn giao sản phẩm.
Kết luận
- Luận văn đã xây dựng thành công phương pháp đặc tả hình thức tương tác giao diện người dùng cho ứng dụng web dựa trên ô-tô-mát hữu hạn trạng thái và phép ghép nối mô hình linh hoạt.
- Đề xuất và cài đặt hoàn thiện 2 thuật toán tự động sinh đường dẫn kiểm thử dựa trên duyệt đồ thị chiều sâu mở rộng, cam kết bao phủ 100% các trạng thái và chuyển trạng thái của hệ thống.
- Cải tiến vượt bậc công cụ kiểm thử tự động ATWA, giúp cắt giảm hơn 75% khối lượng nhập liệu thủ công thông qua việc tích hợp định dạng bảng tính và công cụ JFLAP.
- Triển khai thực nghiệm thành công trên hệ thống quản lý thực tế tại Công ty Cổ phần Phần mềm FPT, chứng minh tốc độ thực thi tự động nhanh hơn từ 6 đến 8 lần so với kiểm thử thủ công trong mô hình Agile.
- Mở ra hướng phát triển mở rộng việc tự động hóa trích xuất phần tử web từ mã nguồn trang web và tích hợp quy trình kiểm thử vào hệ thống tích hợp liên tục trong lộ trình 6 đến 12 tháng tới.
Các tổ chức công nghệ và đội ngũ 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à công cụ kiểm thử tự động để nâng cao chất lượng sản phẩm, rút ngắn thời gian phát hành và tối ưu hóa chi phí vận hành dự án.