Tổng quan nghiên cứu
Trong quy trình phát triển phần mềm hiện đại, kiểm thử tự động (Automation Testing) đóng vai trò then chốt giúp nâng cao tốc độ thực thi kiểm thử nhanh hơn khoảng 70% so với kiểm thử thủ công và tối ưu hóa độ bao phủ kiểm thử hồi quy. Tuy nhiên, theo các khảo sát thực tế trong ngành công nghệ thông tin, hơn 60% kiểm thử viên thủ công (manual testers) gặp rào cản lớn về kỹ năng lập trình khi tiếp cận các công cụ kiểm thử tự động hóa chuyên sâu. Vấn đề nghiên cứu trọng tâm của luận văn là giải quyết bài toán phụ thuộc vào mã nguồn phức tạp, rút ngắn thời gian đào tạo và giảm thiểu chi phí bảo trì kịch bản kiểm thử khi giao diện ứng dụng web thay đổi liên tục.
Mục tiêu cụ thể của luận văn là xây dựng một Khung kiểm thử tự động hướng từ khóa (Keyword-Driven Testing Framework) hoàn chỉnh dựa trên nền tảng Selenium WebDriver. Hệ thống cho phép tự động hóa quy trình kiểm thử thông qua Thư viện từ khóa chuẩn hóa và Kịch bản mẫu (Scenario Template) trên bảng tính điện tử, giúp kiểm thử viên thủ công có thể tạo lập và thực thi các trường hợp kiểm thử mà hoàn toàn không cần viết mã lệnh lập trình.
Phạm vi nghiên cứu được thực hiện từ ngày 04/09/2017 đến ngày 27/12/2018 tại Trường Đại học Bách Khoa - ĐHQG TP.HCM, kết hợp thu thập dữ liệu và khảo sát thực nghiệm cùng đội ngũ kỹ sư kiểm thử tại Công ty KMS Technology Việt Nam. Đề tài tập trung chuyên sâu vào kiểm thử chức năng cho các ứng dụng web trên các trình duyệt phổ biến. Ý nghĩa khoa học và thực tiễn của công trình được chứng minh qua việc chuẩn hóa hơn 50 từ khóa hành động từ gần 80 hành vi kiểm thử thực tế, giúp cắt giảm khoảng 50% thời gian bảo trì kịch bản và nâng cao hiệu suất kiểm thử tự động trên 5 hệ thống web thực nghiệm.
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 dựa trên sự kết hợp của hai mô hình cốt lõi trong kỹ nghệ kiểm thử phần mềm: Mô hình kiểm thử hướng từ khóa (Keyword-Driven Testing) và Mô hình đối tượng trang (Page Object Model - POM). Trong mô hình hướng từ khóa, toàn bộ dữ liệu kiểm thử, đối tượng tương tác và hành vi kiểm thử được tách biệt hoàn toàn khỏi mã nguồn thực thi, cho phép tái sử dụng các từ khóa cho nhiều kịch bản khác nhau. Đồng thời, mô hình Page Object Model hỗ trợ quản lý các phần tử giao diện theo từng trang web riêng biệt, giúp giảm thiểu tối đa sự xáo trộn mã nguồn khi ứng dụng thay đổi cấu trúc giao diện người dùng.
Nghiên cứu tập trung vào 4 khái niệm nền tảng chính:
- Đường dẫn XPath động (XPath Handling): Sử dụng các biểu thức XPath tương đối kết hợp hàm xử lý chuỗi như
contains(),starts-with(), vàtext()để định danh chính xác các đối tượng HTML/DOM phức tạp. - Trình điều khiển Selenium WebDriver: Nền tảng tự động hóa mã nguồn mở điều khiển trực tiếp trình duyệt từ cấp hệ điều hành mà không cần máy chủ trung gian.
- Kho lưu trữ đối tượng (Object Repository): Tệp cấu hình lưu trữ tập trung toàn bộ thuộc tính định vị của các phần tử giao diện người dùng.
- Động cơ thực thi (Execution Engine): Bộ phận phân tích cú pháp từ bảng kịch bản mẫu và kích hoạt các hàm xử lý tương ứng trong thư viện từ khóa.
Số liệu thống kê thị phần trình duyệt vào đầu năm 2017 cho thấy Google Chrome chiếm 58,64% và Internet Explorer chiếm 18,95%, khẳng định tính tất yếu của việc xây dựng khung kiểm thử đa trình duyệt nhằm đảm bảo tính ổn định và tính tương thích cao cho ứng dụng web.
Phương pháp nghiên cứu
Nghiên cứu sử dụng nguồn dữ liệu sơ cấp được thu thập thông qua phương pháp quan sát và ghi nhận trực tiếp bằng công cụ qTest Explorer trên máy chủ kiểm thử (Test Server). Cỡ mẫu nghiên cứu bao gồm toàn bộ phiên làm việc của các kiểm thử viên tại Công ty KMS Technology Việt Nam, ghi lại gần 80 hành vi tương tác trên 5 ứng dụng web khác nhau gồm Demo Store Online, W3Schools, Demo QA, Automation Practice Form và QASymphony.
Phương pháp chọn mẫu có mục đích (Purposive Sampling) được áp dụng nhằm trích xuất đầy đủ các thao tác kiểm thử đại diện trên mọi thành phần giao diện web như cửa sổ cảnh báo, biểu mẫu, bảng chọn, khung nhúng và thao tác chuột. Dữ liệu ghi nhận được phân tích theo tần suất xuất hiện và phân chia thành 3 nhóm ưu tiên:
- Nhóm 1: Các hành động xuất hiện với tần suất cao hơn 1 lần (như click, input, openBrowser, deselectOption).
- Nhóm 2: Các hành động đặc thù xuất hiện 1 lần (như deleteAllCookies, executeJavaScript, authenticate).
- Nhóm 3: Các hành động xác thực và đồng bộ (như verifyElementText, waitForElementPresent, verifyAlertMessage).
Lý do lựa chọn phương pháp phân tích tần suất hành động kết hợp nền tảng Java 1.8 và thư viện Apache POI là nhằm chuẩn hóa một tập từ khóa tối ưu nhất, vừa bao phủ toàn diện các ca kiểm thử phổ biến, vừa duy trì tốc độ đọc ghi dữ liệu từ tệp bảng tính với hiệu năng cao trong suốt tiến trình nghiên cứu từ tháng 09/2017 đến tháng 12/2018.
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 và thực nghiệm đã mang lại 4 phát hiện quan trọng:
Thứ nhất, nghiên cứu đã chuẩn hóa và hiện thực hóa thành công hơn 50 từ khóa hành động từ gần 80 hành vi kiểm thử thực tế thu thập được, phân loại khoa học theo 7 nhóm thành phần giao diện web: Thao tác trình duyệt (Browser), Thao tác bàn phím (Keyboard), Thao tác chuột (Mouse), Tương tác hộp thoại (Alert), Hộp kiểm và nút chọn (Checkbox/Radio), Danh sách lựa chọn (Combobox/Drop-down List), và Quản lý khung nhúng/cửa sổ (Frame/Window).
Thứ hai, việc thiết kế Kịch bản mẫu (Scenario Template) trên định dạng Excel với 2 trang tính chuyên biệt (Sheet "Test Cases" quản lý trạng thái thực thi và Sheet "Test Steps" mô tả chi tiết từng bước kiểm thử) đã đạt tỷ lệ 100% không yêu cầu viết mã lệnh đối với kiểm thử viên thủ công.
Thứ ba, thực nghiệm kiểm thử tự động trên 7 kịch bản mẫu thuộc 5 ứng dụng web thực tế cho thấy tỷ lệ hoàn thành chính xác đạt 100% trạng thái Passed. Tốc độ thực thi của khung kiểm thử tự động giúp tiết kiệm từ 65% đến 70% thời gian so với quy trình thực hiện thủ công truyền thống trên cùng một bộ kịch bản kiểm thử.
Thứ tư, cơ chế tách biệt dữ liệu kiểm thử và biểu thức XPath vào Object Repository giúp giảm khoảng 50% thời gian chỉnh sửa kịch bản khi ứng dụng web cập nhật giao diện, do kiểm thử viên chỉ cần điều chỉnh duy nhất một dòng cấu hình đối tượng mà không phải sửa đổi toàn bộ các bước kiểm thử liên quan.
Thảo luận kết quả
Hiệu quả vượt trội của khung kiểm thử bắt nguồn từ nguyên lý đóng gói hoàn toàn các hàm tương tác phức tạp của Selenium WebDriver (như WebElement.sendKeys(), driver.switchTo().alert(), Actions.moveToElement()) bên dưới tầng thư viện từ khóa. Khi kiểm thử viên điền tên từ khóa vào tệp bảng tính, Động cơ thực thi (Execution Engine) tự động phân giải và ánh xạ hành động tới các đối tượng trên trang web một cách chính xác.
So với các công cụ tự động hóa phổ biến:
- Robot Framework: Mặc dù áp dụng mô hình từ khóa nhưng phụ thuộc vào môi trường Python và chủ yếu phục vụ kiểm thử nghiệm thu (Acceptance Testing), dẫn đến chi phí bảo trì tương đối cao khi phát sinh lỗi sớm.
- Katalon Studio: Cung cấp tính năng mạnh mẽ nhưng đòi hỏi kiểm thử viên phải viết thêm mã nguồn bằng ngôn ngữ Groovy (chỉ đứng vị trí thứ 19 trong bảng xếp hạng TIOBE năm 2016) khi cần mở rộng các từ khóa tùy chỉnh.
- QuickTest Professional (QTP): Bị giới hạn trên hệ điều hành Windows và đòi hỏi chi phí bản quyền thương mại đắt đỏ.
Trong thực tế phân tích dữ liệu, các chỉ số thời gian nhận diện đối tượng XPath và tổng thời gian thực thi của 7 kịch bản kiểm thử đều được tổng hợp chi tiết qua các bảng so sánh và biểu đồ đo lường hiệu năng. Kết quả khẳng định việc kết hợp giữa thư viện từ khóa chuẩn hóa và mô hình Page Object Model mang lại sự ổn định cao, tương thích linh hoạt trên nhiều trình duyệt và tối ưu hóa nguồn lực cho doanh nghiệp phần mềm.
Đề xuất và khuyến nghị
Dựa trên kết quả nghiên cứu đạt được, 4 giải pháp chiến lược được đề xuất nhằm nâng cao hiệu quả ứng dụng khung kiểm thử tự động trong môi trường công nghiệp:
-
Mở rộng và đa dạng hóa thư viện từ khóa: Nâng cấp quy mô thư viện từ hơn 50 từ khóa hiện tại lên hơn 100 từ khóa chuyên sâu, bổ sung các hành động kiểm thử giao diện lập trình ứng dụng (API Testing) và kiểm thử ứng dụng di động thông qua Appium, hướng tới mục tiêu nâng độ bao phủ kiểm thử lên 90% trong lộ trình 6 tháng do đội ngũ Kỹ sư Tự động hóa (Automation Engineers) đảm nhiệm.
-
Tích hợp khung kiểm thử vào đường ống CI/CD: Thiết lập cơ chế kích hoạt thực thi kịch bản kiểm thử tự động thông qua giao diện dòng lệnh (Command Line) tích hợp vào hệ thống Jenkins hoặc GitLab CI, đặt mục tiêu rút ngắn 80% thời gian phản hồi kết quả kiểm thử hồi quy trong vòng 3 tháng do Trưởng nhóm Đảm bảo Chất lượng (QA Lead) và kỹ sư DevOps chủ trì.
-
Xây dựng giao diện đồ họa quản trị kịch bản (GUI Tool): Phát triển ứng dụng nền web hoặc desktop trực quan nhằm hỗ trợ kiểm thử viên lựa chọn từ khóa và kéo thả đối tượng thay vì nhập trực tiếp trên Excel, giảm 30% nguy cơ xảy ra sai sót dữ liệu đầu vào trong vòng 4 tháng do nhóm Phát triển Công cụ Nội bộ thực hiện.
-
Tối ưu hóa cơ chế tự phục hồi đối tượng định vị (Auto-healing XPath): Nghiên cứu tích hợp thuật toán phân tích cây DOM tự động để nhận diện lại phần tử khi cấu trúc web thay đổi, giảm thiểu 75% tình trạng kịch bản bị lỗi do phần tử HTML bị thay đổi thuộc tính trong vòng 6 tháng do nhóm Nghiên cứu và Phát triển (R&D) triển khai.
Đối tượng nên tham khảo luận văn
Nội dung và kết quả của luận văn mang lại giá trị thực tiễn cho 4 nhóm đối tượng chính:
-
Kiểm thử viên thủ công (Manual Testers): Nhanh chóng chuyển đổi sang vai trò tự động hóa mà không gặp rào cản về ngôn ngữ lập trình, tận dụng trực tiếp Kịch bản mẫu trên Excel để khởi tạo và thực thi hàng trăm trường hợp kiểm thử chức năng tự động.
-
Kỹ sư kiểm thử tự động hóa (Automation Test Engineers): Tiếp cận phương pháp thiết kế khung kiểm thử chuẩn hóa bằng Java và Selenium WebDriver, nắm bắt kỹ thuật phân loại hành vi người dùng theo cấu trúc giao diện để phát triển các framework tùy biến nội bộ.
-
Quản trị viên dự án và Quản lý chất lượng (Project Managers / QA Leads): Có cơ sở dữ liệu thực nghiệm để lập kế hoạch cắt giảm khoảng 40% chi phí đào tạo nhân sự kiểm thử và tối ưu hóa ngân sách vận hành quy trình đảm bảo chất lượng phần mềm theo mô hình Agile.
-
Giảng viên, học viên cao học và sinh viên chuyên ngành Khoa học Máy tính: Sử dụng làm tài liệu tham khảo học thuật về mô hình Page Object Model, kỹ thuật định vị đối tượng bằng XPath động và phương pháp luận thiết kế phần mềm hỗ trợ kiểm thử tự động.
Câu hỏi thường gặp
Khung kiểm thử hướng từ khóa khác biệt thế nào so với khung kiểm thử hướng dữ liệu?
Khung kiểm thử hướng dữ liệu (Data-Driven) chỉ tách biệt dữ liệu đầu vào và đầu ra ra khỏi mã nguồn thông qua tệp ngoài. Trong khi đó, khung kiểm thử hướng từ khóa (Keyword-Driven) tách biệt cả dữ liệu lẫn hành vi kiểm thử thành các từ khóa chức năng độc lập, giúp kịch bản kiểm thử được biểu diễn trực quan dạng bảng và không cần biên dịch lại mã nguồn khi kịch bản thay đổi.
Kiểm thử viên không có kỹ năng lập trình có sử dụng được hệ thống này không?
Hệ thống được thiết kế chuyên biệt cho kiểm thử viên thủ công. Người dùng chỉ cần sử dụng Kịch bản mẫu trên Microsoft Excel để điền tên đối tượng và chọn từ khóa hành động tương ứng từ thư viện hơn 50 từ khóa đã được xây dựng sẵn mà không cần viết bất kỳ dòng mã lệnh Java nào trong suốt quá trình tạo ca kiểm thử.
Việc quản lý đối tượng bằng XPath và mô hình Page Object Model mang lại lợi ích gì?
Cơ chế này tập trung toàn bộ biểu thức XPath của các phần tử giao diện vào tệp Object Repository và phân loại theo từng trang web riêng biệt. Khi cấu trúc HTML của trang web thay đổi, người kiểm thử chỉ cần cập nhật duy nhất giá trị XPath trong tệp lưu trữ mà toàn bộ các kịch bản kiểm thử liên quan vẫn hoạt động chính xác.
Khung kiểm thử của luận văn tương thích với những trình duyệt web nào?
Nhờ tận dụng kiến trúc trực tiếp của Selenium WebDriver, hệ thống hỗ trợ tương thích đa nền tảng trên hầu hết các trình duyệt web phổ biến hiện nay bao gồm Google Chrome (chiếm hơn 58% thị phần), Mozilla Firefox, Internet Explorer, Safari và Opera mà không làm thay đổi logic thực thi của các từ khóa.
Hệ thống xử lý các thành phần web phức tạp như Alert, Frame và Dropdown list như thế nào?
Luận văn đã phân loại và hiện thực hóa các từ khóa chuyên dụng cho từng thành phần đặc thù, ví dụ như acceptAlert, setAlertText cho hộp thoại thông báo; switchToFrame, switchToDefaultFrame cho các khung nhúng lồng nhau; và selectOptionByVisibleText, deselectAllOption cho các danh sách lựa chọn phức tạp trên cây DOM.
Kết luận
- Xây dựng thành công Khung kiểm thử tự động hóa hướng từ khóa trên nền tảng Java 1.8 và Selenium WebDriver với kiến trúc phân tầng rõ ràng.
- Chuẩn hóa thư viện hơn 50 từ khóa tương tác hoàn chỉnh từ gần 80 hành vi thực tế, bao phủ toàn diện các thành phần giao diện web phức tạp.
- Đề xuất Kịch bản mẫu dạng bảng tính Excel 2 trang chuyên biệt, giúp kiểm thử viên thủ công tự động hóa 100% quy trình kiểm thử mà không cần viết code.
- Áp dụng thành công mô hình Page Object Model kết hợp biểu thức XPath tương đối, giúp giảm thiểu 50% thời gian bảo trì khi ứng dụng cập nhật giao diện.
- Kiểm chứng hiệu quả thực nghiệm trên 7 kịch bản thuộc 5 hệ thống web thực tế, minh chứng tốc độ thực thi nhanh hơn 70% so với kiểm thử thủ công.
Đóng góp lớn nhất của luận văn là thu hẹp khoảng cách giữa kiểm thử thủ công và kiểm thử tự động, cung cấp giải pháp chuyển đổi số hiệu quả cho các doanh nghiệp phát triển phần mềm. Trong giai đoạn 3 đến 6 tháng tới, hệ thống định hướng mở rộng hỗ trợ kiểm thử API và nền tảng thiết bị di động. Các tổ chức và cá nhân quan tâm có thể áp dụng ngay mô hình này để chuẩn hóa quy trình đảm bảo chất lượng phần mềm, nâng cao năng suất kiểm thử và tối ưu hóa chi phí dự án.