Tổng quan nghiên cứu

Trong quy trình phát triển phần mềm hiện đại, giai đoạn kiểm thử thường chiếm từ 40% đến 50% tổng chi phí và thời gian của toàn bộ dự án. Khi quy mô hệ thống ngày càng mở rộng, số lượng tham số đầu vào và các trạng thái cấu hình tăng lên theo cấp số nhân. Nếu áp dụng phương pháp kiểm thử toàn bộ các tổ hợp dữ liệu, số lượng ca kiểm thử sẽ bùng nổ vượt quá khả năng xử lý của đội ngũ kỹ sư. Vấn đề cốt lõi đặt ra là làm thế nào để tối ưu hóa tài nguyên kiểm thử, giảm thiểu tối đa số lượng ca kiểm thử nhưng vẫn bảo đảm tỷ lệ phát hiện lỗi cao nhất.

Luận văn thạc sĩ chuyên ngành Kỹ thuật phần mềm của tác giả Nguyễn Thị Tự, được 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 dưới sự hướng dẫn của Tiến sĩ Đặng Đức Hạnh, đã giải quyết trực tiếp thách thức trên. Mục tiêu nghiên cứu tập trung vào việc làm chủ kỹ thuật kiểm thử cặp đôi dữ liệu và xây dựng một công cụ tự động hóa sinh ca kiểm thử tương thích với môi trường Selenium IDE. Phạm vi nghiên cứu được triển khai dựa trên cơ sở lý thuyết kết hợp với dữ liệu thực tế tại các dự án phần mềm thuộc công ty FPT Software trong giai đoạn từ năm 2014 đến tháng 6 năm 2016.

Ý nghĩa thực tiễn của công trình thể hiện rõ qua các chỉ số đo lường: kỹ thuật kiểm thử cặp giúp cắt giảm từ 50% đến hơn 90% số lượng ca kiểm thử so với phương pháp vét cạn truyền thống. Ví dụ thực tế trên module thiết lập quyền riêng tư của phần mềm Skype cho thấy số ca kiểm thử giảm mạnh từ 240 trường hợp xuống chỉ còn 12 trường hợp, giúp tiết kiệm hơn 80% thời gian thiết kế và thực thi kiểm thử tự động trên giao diện web.

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ử hộp đen và kiểm thử tổ hợp. Trong kiểm thử chức năng, các kỹ thuật phân vùng tương đương, phân tích giá trị biên, bảng quyết định và phương pháp phân vùng được sử dụng để cô lập các miền giá trị độc lập. Mô hình lý thuyết trung tâm là kỹ thuật kiểm thử tổ hợp bậc T, trọng tâm là kiểm thử cặp đôi với giả định rằng phần lớn các lỗi phần mềm phát sinh do sự tương tác giữa 2 tham số đầu vào bất kỳ.

Khung lý thuyết của luận văn tích hợp 3 mô hình thuật toán chính:

  1. Mảng trực giao: Phương pháp toán học kế thừa từ kỹ thuật Taguchi trong quản lý chất lượng toàn diện, sử dụng cấu trúc ma trận nhằm phân bổ đồng đều các mức giá trị của tham số với số lần chạy tối thiểu.
  2. Thuật toán thứ tự tham số: Giải thuật do Tai và Lei phát triển, hoạt động qua hai giai đoạn mở rộng theo chiều ngang để phủ các cặp giá trị mới và mở rộng theo chiều dọc để bổ sung các ca kiểm thử chứa các cặp chưa được phủ.
  3. Mô hình xử lý ràng buộc của công cụ PICT: Kỹ thuật Heuristic tham lam giúp xử lý các ràng buộc điều kiện logic dạng nếu - thì, loại trừ các tổ hợp không hợp lệ và thiết lập cấu trúc phân cấp mô hình con.

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

Nghiên cứu sử dụng nguồn dữ liệu thực nghiệm gồm các đặc tả yêu cầu, biểu mẫu nhập liệu web HTML và các ma trận tham số cấu hình hệ thống từ các dự án gia công phần mềm. Cỡ mẫu thử nghiệm bao gồm 6 module chức năng tiêu biểu với miền giá trị biến thiên từ 2 đến 5 mức cho mỗi tham số, cùng bộ dữ liệu kiểm thử mảng trực giao 4 yếu tố 3 mức và mô hình kiểm thử môi trường phần cứng 9 tham số.

Phương pháp chọn mẫu có chủ đích được áp dụng nhằm lựa chọn các trường hợp chức năng có độ phức tạp cao, nhiều ràng buộc logic và thường xuyên xảy ra lỗi tương tác giao diện. Lý do lựa chọn phương pháp phân tích so sánh định lượng là nhằm đo lường chính xác hiệu quả giảm thiểu số lượng ca kiểm thử, tốc độ sinh dữ liệu tự động và mức độ bao phủ lỗi giữa các chiến lược 1 cặp, 2 cặp, 3 cặp và toàn bộ tổ hợp. Toàn bộ quá trình thực nghiệm, lập trình công cụ và kiểm chứng kết quả được thực hiện liên tục trong khoảng thời gian 24 tháng.

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

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

Thứ nhất, kỹ thuật kiểm thử cặp chứng minh hiệu quả vượt trội trong việc tinh gọn không gian kiểm thử. Tại chức năng cài đặt quyền riêng tư của Skype gồm 6 biến đầu vào với các mức lựa chọn khác nhau, phương pháp kiểm thử toàn bộ tổ hợp yêu cầu tới 240 ca kiểm thử. Khi áp dụng kỹ thuật kiểm thử cặp đôi, số ca kiểm thử giảm xuống chỉ còn 12 ca, tương đương mức giảm 95% khối lượng kiểm thử mà vẫn bảo đảm phủ 100% các cặp tương tác 2 biến. Khi nâng lên kiểm thử bộ 3 tham số, số lượng ca kiểm thử là 33, vẫn tiết kiệm được 86,25% số ca kiểm thử so với phương pháp vét cạn.

Thứ hai, đối với hệ thống thử nghiệm cơ bản gồm 3 biến nhị phân với 8 tổ hợp ban đầu, thuật toán thứ tự tham số rút gọn thành công tập kiểm thử xuống 4 ca, đạt tỷ lệ giảm 50%. Đối với bài toán tương thích trình duyệt và hệ điều hành gồm 4 biến 3 mức giá trị với 81 khả năng kết hợp, mảng trực giao chuẩn giúp rút gọn xuống đúng 9 ca kiểm thử, tương ứng mức giảm 88,89% số trường hợp cần thực thi.

Thứ ba, công cụ phần mềm do tác giả tự xây dựng đã tích hợp thành công thuật toán sinh dữ liệu cặp với cơ chế bóc tách phần tử HTML. Công cụ tự động quét các thẻ nhập liệu trên biểu mẫu web, chuyển đổi các tham số sang định dạng đầu vào của thuật toán và xuất ra tệp kịch bản kiểm thử định dạng HTML tương thích hoàn toàn với Selenium IDE. Kết quả kiểm nghiệm thực tế cho thấy 100% các tệp ca kiểm thử sinh ra đều được Selenium IDE thực thi tự động thành công mà không gặp bất kỳ lỗi cú pháp nào.

Thảo luận kết quả

Nguyên nhân chính giúp phương pháp kiểm thử cặp đạt hiệu quả cao là việc loại bỏ hoàn toàn các cặp tham số trùng lặp vốn chiếm tỷ trọng lớn trong phương pháp kiểm thử ngẫu nhiên hoặc kiểm thử vét cạn. Các nghiên cứu thực nghiệm trong ngành kỹ thuật phần mềm quốc tế chỉ ra rằng hơn 70% lỗi phần mềm xuất phát từ tương tác đơn lẻ hoặc tương tác giữa 2 tham số, và hơn 90% lỗi được kích hoạt bởi tương tác giữa tối đa 3 tham số. Do đó, việc tập trung bao phủ toàn bộ các cặp đôi mang lại tỷ lệ phát hiện lỗi tương đương kiểm thử toàn bộ nhưng với chi phí thấp hơn nhiều lần.

Dữ liệu so sánh giữa các phương pháp có thể được trực quan hóa tối ưu thông qua biểu đồ cột chồng thể hiện sự tương quan giữa số lượng ca kiểm thử và tỷ lệ bao phủ lỗi qua từng bậc tổ hợp từ bậc 1 đến bậc N. Bảng tổng hợp ma trận tham số giúp hiển thị rõ sự phân bổ đồng đều của các cặp giá trị trên từng dòng thực thi. So với việc tạo ca kiểm thử thủ công thường mất từ 4 đến 6 giờ cho một biểu mẫu phức tạp, công cụ tự động hóa đã giảm thời gian này xuống dưới 5 phút, hạn chế tối đa sai sót do yếu tố chủ quan của kiểm thử viên.

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

  1. Triển khai tích hợp công cụ sinh ca kiểm thử cặp vào quy trình phát triển phần mềm liên tục tại các doanh nghiệp công nghệ thông tin. Mục tiêu là giúp các đội ngũ bảo đảm chất lượng cắt giảm tối thiểu 60% thời gian thiết kế kịch bản kiểm thử hồi quy trong vòng 3 tháng áp dụng đầu tiên. Trách nhiệm thực hiện thuộc về Trưởng nhóm kiểm thử và Kỹ sư tự động hóa.

  2. Chuẩn hóa quy trình phân tích tham số và định nghĩa ràng buộc nghiệp vụ bằng quy tắc logic nếu - thì ngay từ giai đoạn đặc tả yêu cầu. Đội ngũ phân tích nghiệp vụ và kiểm thử viên cần phối hợp thiết lập bảng ma trận tương tác tham số cho 100% các module chức năng trọng yếu trước khi bước vào giai đoạn thiết kế kịch bản chi tiết, lộ trình thực hiện trong vòng 6 tháng.

  3. Nâng cấp và mở rộng công cụ sinh kịch bản kiểm thử để hỗ trợ xuất mã nguồn tương thích với các framework kiểm thử tự động hiện đại như Selenium WebDriver, Playwright và Cypress. Trọng tâm phát triển là xử lý các phần tử giao diện động và dịch vụ web API trong thời gian 12 tháng, do nhóm nghiên cứu công nghệ phần mềm chủ trì.

  4. Đưa nội dung kiểm thử tổ hợp và kỹ thuật kiểm thử cặp vào chương trình đào tạo chuyên ngành Kỹ thuật phần mềm bậc đại học và sau đại học. Các khoa Công nghệ thông tin cần xây dựng các bài thực hành chuyên sâu kết hợp công cụ thực tế nhằm nâng cao năng lực kiểm thử tự động cho sinh viên trong vòng 2 năm học.

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

  1. Kỹ sư kiểm thử phần mềm và chuyên viên QA: Nắm vững nguyên lý toán học của mảng trực giao và thuật toán IPO để thiết kế bộ dữ liệu kiểm thử tối ưu, giảm thiểu tình trạng quá tải ca kiểm thử trong các dự án thực tế.

  2. Quản lý dự án phần mềm và Trưởng nhóm kỹ thuật: Ứng dụng các số liệu thực nghiệm về việc cắt giảm chi phí và thời gian kiểm thử để lập kế hoạch phân bổ nguồn lực, tối ưu hóa ngân sách và rút ngắn chu kỳ phát hành phần mềm.

  3. Kỹ sư phát triển công cụ kiểm thử: Tham khảo kiến trúc thiết kế, giải thuật chuyển đổi phần tử HTML và cơ chế sinh mã tự động để phát triển thêm các tiện ích mở rộng cho các nền tảng kiểm thử hiện đại.

  4. Giảng viên, học viên cao học và sinh viên ngành Công nghệ thông tin: Sử dụng làm tài liệu tham khảo học thuật chuẩn mực về kiểm thử tổ hợp, phương pháp nghiên cứu thực nghiệm và quy trình xây dựng công cụ hỗ trợ công nghệ phần mềm.

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

  1. Kỹ thuật kiểm thử cặp đôi dữ liệu hoạt động dựa trên nguyên lý nào? Kỹ thuật này dựa trên nguyên lý thực nghiệm là phần lớn khiếm khuyết phần mềm xảy ra do sự tương tác giữa hai tham số đầu vào. Thay vì kiểm tra toàn bộ các tổ hợp biến số, phương pháp này chỉ tạo ra tập dữ liệu kiểm thử nhỏ nhất sao cho mọi cặp giá trị của hai biến bất kỳ đều xuất hiện cùng nhau ít nhất một lần.

  2. Sự khác nhau cơ bản giữa mảng trực giao và thuật toán thứ tự tham số là gì? Mảng trực giao sử dụng các ma trận toán học định sẵn với cấu trúc cân bằng hoàn hảo, phù hợp cho các biến có số mức giá trị bằng nhau. Thuật toán thứ tự tham số linh hoạt hơn khi mở rộng dần từng tham số theo chiều ngang và dọc, áp dụng hiệu quả cho hệ thống có số lượng giá trị không đồng đều giữa các biến.

  3. Công cụ được xây dựng trong luận văn có điểm gì nổi bật so với các công cụ có sẵn? Công cụ trong luận văn kết hợp thuật toán sinh ca kiểm thử cặp trực tiếp với cấu trúc thẻ của Selenium IDE. Người dùng chỉ cần nhập các phần tử HTML của biểu mẫu web, công cụ sẽ tự động tính toán tổ hợp cặp và sinh ra tệp kịch bản kiểm thử tự động hoàn chỉnh mà không cần viết mã thủ công.

  4. Áp dụng kiểm thử cặp có làm tăng nguy cơ bỏ sót lỗi nghiêm trọng không? Thực nghiệm cho thấy kiểm thử cặp bao phủ từ 70% đến hơn 85% tổng số lỗi tương tác của hệ thống phần mềm. Đối với các hệ thống không đòi hỏi mức độ an toàn tuyệt đối, phương pháp này cân bằng tối ưu giữa chi phí thực hiện và khả năng phát hiện lỗi so với phương pháp vét cạn tốn kém.

  5. Làm thế nào để xử lý các giá trị tham số xung đột hoặc không hợp lệ khi sinh ca kiểm thử? Các công cụ kiểm thử tổ hợp hiện đại sử dụng ngôn ngữ ràng buộc điều kiện dạng nếu - thì để xác định các miền giá trị loại trừ. Trong giai đoạn tiền xử lý, các tổ hợp không hợp lệ sẽ được thuật toán đánh dấu và loại bỏ khỏi không gian tìm kiếm, bảo đảm dữ liệu sinh ra luôn chính xác về mặt nghiệp vụ.

Kết luận

  • Luận văn đã hệ thống hóa toàn diện cơ sở lý thuyết về kiểm thử tổ hợp, phân tích chi tiết thuật toán Mảng trực giao, Thứ tự tham số và cơ chế xử lý ràng buộc của PICT.
  • Kết quả thực nghiệm khẳng định kỹ thuật kiểm thử cặp giúp giảm từ 50% đến 95% số lượng ca kiểm thử so với phương pháp toàn bộ tổ hợp, tối ưu hóa mạnh mẽ hiệu suất kiểm thử.
  • Tác giả đã thiết kế và lập trình thành công công cụ sinh ca kiểm thử tự động, chuyển đổi trực tiếp biểu mẫu HTML thành kịch bản kiểm thử chạy được trên Selenium IDE.
  • Hướng phát triển tiếp theo tập trung vào việc mở rộng công cụ cho các framework giao diện hiện đại và tích hợp thuật toán xử lý dữ liệu kiểm thử liên tục trong vòng 12 đến 24 tháng tới.
  • Các doanh nghiệp và kỹ sư phần mềm nên nhanh chóng ứng dụng phương pháp kiểm thử cặp để nâng cao chất lượng sản phẩm, rút ngắn thời gian kiểm thử và tối ưu hóa chi phí vận hành dự án.