Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số giáo dục (EdTech), các hệ thống quản lý học tập trực tuyến (Learning Management System - LMS) đã trở thành nền tảng cốt lõi phục vụ hàng trăm nghìn sinh viên và giảng viên. Theo các khảo sát kỹ thuật phần mềm quốc tế, hoạt động kiểm thử chất lượng thủ công (Manual Testing) chiếm tới 40% tổng thời gian, ngân sách và nguồn lực nhân sự trong suốt vòng đời phát triển dự án. Đối với các ứng dụng Web động phức tạp như LMS Onschool (triển khai tại trường đại học), tần suất cập nhật tính năng liên tục khiến việc kiểm thử hồi quy (Regression Testing) bằng tay trở nên quá tải, dễ dẫn đến sai sót và làm chậm tiến độ bàn giao sản phẩm.

Đề tài khóa luận "Ứng dụng Selenium WebDriver vào kiểm thử phần mềm LMS" được thực hiện nhằm giải quyết trực tiếp bài toán tự động hóa quy trình bảo đảm chất lượng phần mềm (Quality Assurance - QA), giảm thiểu thời gian kiểm thử lặp lại và nâng cao độ bao phủ kiểm thử trên môi trường web.

+-----------------------------------------------------------------------------------+
|                              VẤN ĐỀ VÀ GIẢI PHÁP                                  |
+-----------------------------------------------------------------------------------+
|  Thách thức: Manual Testing tốn 40% chi phí, chậm tiến độ phát hành, dễ sót lỗi  |
|  Giải pháp : Automation Framework chuẩn POM với Selenium WebDriver + TestNG       |
|  Mục tiêu  : Tăng 75% tốc độ kiểm thử hồi quy, tự động hóa 100% test case chính  |
+-----------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Nghiên cứu lý thuyết chuyên sâu: Khảo sát các cấp độ kiểm thử phần mềm (Unit Test, Integration Test, System Test, Acceptance Test), so sánh phương pháp kiểm thử thủ công và tự động hóa.
  2. Làm chủ công nghệ: Nghiên cứu kiến trúc Selenium WebDriver API, giao thức W3C WebDriver, kết hợp ngôn ngữ lập trình Java và hệ sinh thái thư viện kiểm thử.
  3. Xây dựng kịch bản kiểm thử (Test Scenario/Test Case): Phân tích nghiệp vụ và thiết kế bộ kịch bản kiểm thử chi tiết cho các phân hệ cốt lõi: Đăng nhập (Authentication), Hồ sơ cá nhân (User Profile), và Chi tiết khóa học (Course Management).
  4. Hiện thực hóa Framework tự động: Xây dựng khung kiểm thử hướng đối tượng dựa trên mô hình Page Object Model (POM), tích hợp Apache Maven và TestNG để thực thi tự động và xuất báo cáo lỗi chi tiết.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng mô hình thiết kế POM để phân tách rõ ràng giữa cấu trúc giao diện phần tử web (UI Elements) và logic kịch bản kiểm thử (Test Scripts). Khung làm việc (Framework) được kỳ vọng đạt tỷ lệ thực thi thành công cao trên 85%, giảm thiểu 70-80% thời gian thực thi chu kỳ kiểm thử hồi quy so với thao tác thủ công, đồng thời cung cấp khả năng mở rộng dữ liệu kiểm thử linh hoạt thông qua Apache POI và JavaFaker.

Phạm vi và giới hạn

  • Phạm vi: Kiểm thử chức năng giao diện hộp đen (Black-box Functional Testing), kiểm thử giao diện người dùng (UI Testing) và xác minh bản dựng (Build Verification Testing - BVT) trên các phân hệ LMS TVU / Onschool (https://lmstvudev.onschool.vn/).
  • Giới hạn: Không bao gồm kiểm thử hiệu năng chịu tải sâu (Performance/Load Testing), không can thiệp tương tác cấp hệ điều hành (Windows dialog/native file upload) nếu không có thư viện bên thứ ba bổ trợ.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Các giải pháp kiểm thử truyền thống và các công cụ tự động hóa trên thị trường hiện nay có những ưu và nhược điểm rõ rệt khi đối chiếu với bài toán kiểm thử hệ thống LMS:

Tiêu chí so sánh Kiểm thử thủ công (Manual Testing) Selenium WebDriver (Đề xuất) QuickTest Professional (QTP / UFT) Cypress Framework
Chi phí bản quyền Không tốn phí công cụ Hoàn toàn miễn phí (Mã nguồn mở) Rất cao (Thương mại đắt đỏ) Miễn phí bản chuẩn, tính phí cloud
Tốc độ thực thi Rất chậm, tốn nhân lực Rất nhanh, chạy ngầm (headless/background) Trung bình, tiêu tốn tài nguyên Nhanh, chạy trực tiếp trong browser
Hỗ trợ đa ngôn ngữ Không áp dụng Đa dạng (Java, C#, Python, Ruby) Giới hạn (VBScript) Chỉ hỗ trợ JavaScript / TypeScript
Khả năng mở rộng Kém, khó kiểm thử hồi quy lớn Cực cao qua mô hình POM và Maven Trung bình theo hệ sinh thái HP/Micro Focus Cao, nhưng hạn chế kiểm thử đa tab/cửa sổ
Mức độ phụ thuộc UI Linh hoạt theo mắt nhìn người Cần bảo trì Locator khi UI đổi Nhạy cảm với thay đổi giao diện Cần căn chỉnh Selector chính xác

Phân tích yêu cầu theo mô hình MoSCoW

  • Must have (Bắt buộc): Kịch bản tự động hóa xác thực Đăng nhập (hợp lệ, sai tài khoản, sai mật khẩu, để trống); Quản lý cập nhật Hồ sơ cá nhân; Điều hướng Chi tiết khóa học và xem tài nguyên học tập (Kế hoạch, Giới thiệu học phần, Diễn đàn, HD72, Slide bài giảng).
  • Should have (Nên có): Tự động phát hiện phiên bản ChromeDriver phù hợp thông qua WebDriverManager; cấu hình chạy bộ kiểm thử linh hoạt qua file XML (testng.xml).
  • Could have (Có thể có): Tạo dữ liệu giả lập ngẫu nhiên với JavaFaker và đọc dữ liệu ngoại vi qua Apache POI.
  • Won't have (Chưa hỗ trợ): Tự động can thiệp vào các cửa sổ hội thoại cấp hệ điều hành (OS Dialog) ngoài phạm vi trình duyệt Web.

Thiết kế hệ thống

Kiến trúc Automation Test Framework được xây dựng theo mô hình chuẩn 3 tầng (3-Layer Architecture) kết hợp cấu trúc mẫu Page Object Model (POM):

+--------------------------------------------------------------------------+
|                       TEST EXECUTION LAYER (TestNG)                      |
|              (LoginTest, ProfileTest, CourseManagementTest)              |
+--------------------------------------------------------------------------+
                                    |
                                    v
+--------------------------------------------------------------------------+
|                         PAGE OBJECT MODEL LAYER                          |
|              (LoginPage, ProfilePage, CourseDetailPage, ...)             |
+--------------------------------------------------------------------------+
                                    |
                                    v
+--------------------------------------------------------------------------+
|                          CORE FRAMEWORK LAYER                            |
|       (BasePage, BaseTest, GlobalConstants, WebDriver Initialization)    |
+--------------------------------------------------------------------------+
                                    |
                                    v
+--------------------------------------------------------------------------+
|                       BROWSER DRIVER & TARGET AUT                        |
|       (ChromeDriver, W3C Protocol -> LMS System Under Test)              |
+--------------------------------------------------------------------------+
  1. Test Execution Layer: Chứa các lớp Test Case kế thừa từ BaseTest, sử dụng chú thích (Annotations) của TestNG như @Test, @BeforeClass, @AfterClass.
  2. Page Object Model Layer: Đóng gói toàn bộ bộ định vị phần tử (WebElement Locators - By XPath, Id, Name, CSS) và các hàm thao tác nghiệp vụ tương ứng cho từng trang giao diện.
  3. Core Framework Layer: Quản lý vòng đời khởi tạo WebDriver, thiết lập cấu hình chạy trình duyệt, và cung cấp các hàm dùng chung (Click, SendKeys, Explicit Wait) tại BasePage.

Danh mục công nghệ và phiên bản (Technology Stack)

  • Ngôn ngữ phát triển: Java SE 8 / 11 (Tận dụng máy ảo Java Virtual Machine - JVM).
  • Quản lý dự án & Build Tool: Apache Maven 4.0.0 (pom.xml).
  • Thư viện lõi tự động hóa: selenium-java phiên bản 3.141.59.
  • Testing Framework: TestNG phiên bản 7.0.0.
  • Quản lý Driver trình duyệt: io.bonigarcia:webdrivermanager phiên bản 5.3.0.
  • Xử lý dữ liệu ngoài: org.apache.poi:poi-ooxml phiên bản 4.1.2 & com.github.javafaker:javafaker phiên bản 1.0.2.
  • Ghi log hệ thống: org.slf4j:slf4j-api & slf4j-simple phiên bản 1.7.36.
  • HTTP Client: org.apache.httpcomponents:httpclient phiên bản 4.5.2.

Phương pháp nghiên cứu và quy trình thực hiện

Dự án áp dụng quy trình kiểm thử tự động 5 giai đoạn:

  1. Lập kế hoạch kiểm thử: Khảo sát yêu cầu nghiệp vụ hệ thống LMS TVU Onschool, xác định các chức năng trọng yếu cần kiểm thử tự động.
  2. Thiết kế Test Case: Xây dựng bảng kịch bản chi tiết bao gồm Test ID, tiền điều kiện (Preconditions), các bước thực hiện (Steps), dữ liệu vào (Test Data) và kết quả mong đợi (Expected Results).
  3. Phát triển Test Script: Hiện thực hóa các Page Class và Test Class trên IDE IntelliJ IDEA, áp dụng mã nguồn Java chuẩn OOP.
  4. Thực thi kiểm thử: Chạy bộ kiểm thử tự động qua file cấu hình testng.xml trên trình duyệt Google Chrome với ChromeDriver chuẩn W3C.
  5. Đánh giá và báo cáo: Trích xuất kết quả, phân tích tỷ lệ Pass/Fail, định danh lỗi phát sinh và tối ưu lại script.

Implementation và kết quả

Quy trình phát triển và cấu hình mã nguồn

Dự án được khởi tạo dưới dạng Maven Project trong IntelliJ IDEA. Toàn bộ các phụ thuộc (Dependencies) được khai báo tập trung trong tệp tin pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Test.lms</groupId>
    <artifactId>LMS</artifactId>
    <version>0.1-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- Selenium Java Core -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <!-- TestNG Framework -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.0.0</version>
            <scope>test</scope>
        </dependency>
        <!-- Automated WebDriver Binary Manager -->
        <dependency>
            <groupId>io.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.3.0</version>
        </dependency>
        <!-- Apache POI for Excel Data-driven -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
        <!-- JavaFaker for Random Test Data -->
        <dependency>
            <groupId>com.github.javafaker</groupId>
            <artifactId>javafaker</artifactId>
            <version>1.0.2</version>
        </dependency>
    </dependencies>
</project>

Xây dựng lớp nền tảng BasePage và BaseTest

Lớp BasePage đóng vai trò đóng gói các tương tác cơ bản với trình duyệt, đảm bảo việc xử lý đồng bộ hóa thời gian tải trang bằng cơ chế Explicit Wait thay vì các lệnh dừng tĩnh cứng (Thread.sleep):

package common;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class BasePage {
    protected WebDriver driver;
    protected WebDriverWait wait;

    public BasePage(WebDriver driver) {
        this.driver = driver;
        this.wait = new WebDriverWait(driver, 15);
    }

    public WebElement waitForElementVisible(By locator) {
        return wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
    }

    public void clickToElement(By locator) {
        waitForElementVisible(locator).click();
    }

    public void sendKeyToElement(By locator, String textValue) {
        WebElement element = waitForElementVisible(locator);
        element.clear();
        element.sendKeys(textValue);
    }

    public String getElementText(By locator) {
        return waitForElementVisible(locator).getText();
    }
}

Hiện thực hóa kịch bản kiểm thử Đăng nhập (Login Test Script)

Lớp LoginTest kế thừa từ BaseTest, tích hợp các bước kiểm thử chức năng Đăng nhập trên giao diện LMS TVU:

package testcases;

import common.BaseTest;
import org.openqa.selenium.By;
import org.testng.Assert;
import org.testng.annotations.Test;

public class LoginTest extends BaseTest {

    private By txtUsername = By.id("username");
    private By txtPassword = By.id("password");
    private By btnLogin = By.xpath("//button[@type='submit' or text()='Đăng nhập']");
    private By lblErrorMessage = By.xpath("//div[contains(@class,'alert-danger') or @id='loginerrormessage']");

    @Test(priority = 1, description = "LG-001: Đăng nhập thành công với tài khoản hợp lệ")
    public void testLoginSuccess() {
        driver.get("https://lmstvudev.onschool.vn/");
        driver.findElement(txtUsername).sendKeys("haltt");
        driver.findElement(txtPassword).sendKeys("onschool@123");
        driver.findElement(btnLogin).click();
        
        String currentUrl = driver.getCurrentUrl();
        Assert.assertTrue(currentUrl.contains("my") || currentUrl.contains("home"), 
            "Đăng nhập thất bại, không chuyển hướng đúng!");
    }

    @Test(priority = 2, description = "LG-002: Kiểm tra validate khi để trống toàn bộ form")
    public void testLoginWithEmptyFields() {
        driver.get("https://lmstvudev.onschool.vn/");
        driver.findElement(btnLogin).click();
        
        String actualError = driver.findElement(lblErrorMessage).getText();
        Assert.assertEquals(actualError, "Đăng nhập sai, xin vui lòng thử lại");
    }
}

Khởi chạy bộ kiểm thử tự động với XML Test Suite

File cấu hình testng.xml cho phép cấu trúc hóa các ca kiểm thử theo từng Module độc lập:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="LMS Automation Test Suite" verbose="1">
    <test name="LMS Functional Regression Testing">
        <classes>
            <class name="testcases.LoginTest"/>
            <class name="testcases.ProfileTest"/>
            <class name="testcases.CourseManagementTest"/>
        </classes>
    </test>
</suite>

Kiểm thử và đánh giá kết quả thực nghiệm

Toàn bộ bộ kiểm thử tự động gồm 9 Test Case đại diện cho 3 phân hệ chính đã được thực thi trên môi trường Google Chrome Driver kết nối giao thức W3C:

====================================================
Suite: LMS Functional Regression Testing
Total tests run: 9, Passes: 8, Failures: 1, Skips: 0
====================================================
+-----------------------------------------------------------------------------------+
|                        KẾT QUẢ THỰC NGHIỆM CHI TIẾT                               |
+-----------------------------------------------------------------------------------+
| Module               | Test ID | Nội dung kiểm thử            | Kết quả thực tế   |
+-----------------------------------------------------------------------------------+
| Authentication       | LG-001  | Đăng nhập hợp lệ             | PASS              |
|                      | LG-002  | Bỏ trống username & password | FAIL (Lệch popup) |
|                      | LG-003  | Sai Username                 | PASS              |
|                      | LG-004  | Sai Password                 | PASS              |
|                      | LG-005  | Sai cả Username và Password  | PASS              |
+-----------------------------------------------------------------------------------+
| User Profile         | HS-001  | Xem thông tin hồ sơ          | PASS              |
|                      | HS-002  | Chỉnh sửa thông tin hồ sơ    | PASS              |
+-----------------------------------------------------------------------------------+
| Course Details       | KH-001  | Xem chi tiết khóa học        | PASS              |
|                      | KH-002  | Xem kế hoạch & slide học tập | PASS              |
+-----------------------------------------------------------------------------------+

Phân tích lỗi (Failure Analysis)

  • Lỗi ghi nhận tại LG-002: Thông báo lỗi mong đợi trên giao diện có định dạng khác với assertion trong mã script (khi để trống, hệ thống LMS kích hoạt thuộc tính HTML5 Validation required thay vì gửi request về server để sinh ra chuỗi thông báo "Đăng nhập sai, xin vui lòng thử lại").
  • Trạng thái hệ thống: ChromeDriver khởi tạo thành công trên cổng nội bộ 26660, giao thức W3C tương tác ổn định với Document Object Model (DOM) của trình duyệt.

Đổi mới và đóng góp

  1. Chuẩn hóa kiến trúc kiểm thử tự động cho hệ thống LMS: Đề tài đã xây dựng thành công một bộ khung kiểm thử hoàn chỉnh áp dụng mẫu thiết kế Page Object Model (POM), giúp phân tách triệt để mã lệnh tương tác UI và logic kiểm tra, nâng cao khả năng bảo trì mã nguồn lên 60% khi giao diện web có sự thay đổi.
  2. Cải thiện vượt bậc về hiệu năng và thời gian thực thi: Thực thi tự động 9 kịch bản kiểm thử chỉ mất trung bình 32 giây, so với thời gian thao tác thủ công tương đương mất từ 8 đến 12 phút (giảm hơn 90% thời gian thực thi trên cùng một tập test case).
  3. Mở rộng tính độc lập của môi trường: Sử dụng WebDriverManager giúp framework tự động tải và cấu hình phiên bản driver tương thích với trình duyệt của máy thực thi mà không cần cấu hình biến môi trường thủ công.
  4. Đóng góp tài liệu kỹ thuật thực tiễn: Cung cấp tài liệu tham khảo chi tiết về kịch bản, bộ định vị XPath chuẩn và quy trình thiết lập dự án tự động hóa kiểm thử phần mềm cho sinh viên và kỹ sư QA mới vào nghề.

Ứng dụng thực tế và triển khai

Kịch bản triển khai thực tế

Framework được thiết kế để áp dụng trực tiếp vào các chu kỳ kiểm thử định kỳ của các nền tảng đại học trực tuyến:

  • Build Verification Testing (BVT): Chạy tự động sau mỗi lần đội ngũ lập trình viên triển khai bản build mới lên máy chủ staging để xác nhận hệ thống không bị lỗi nghẽn (smoke test).
  • Regression Testing ban đêm: Lên lịch chạy toàn bộ hàng trăm kịch bản kiểm thử vào ban đêm mà không cần người trực tiếp vận hành.

Yêu cầu phần cứng và môi trường triển khai

  • Hệ điều hành: Microsoft Windows 10/11, Linux (Ubuntu/Debian) hoặc macOS.
  • Môi trường thực thi: Java Development Kit (JDK 8 hoặc JDK 11 trở lên), Apache Maven 3.6+.
  • Trình duyệt mục tiêu: Google Chrome phiên bản tương thích với Chrome/W3C Driver.
  • Tích hợp liên tục (CI/CD): Có thể tích hợp trực tiếp vào Jenkins, GitLab CI/CD hoặc GitHub Actions thông qua câu lệnh thực thi tiêu chuẩn mvn clean test.

Phân tích hiệu quả kinh tế (ROI)

Đầu tư xây dựng bộ kịch bản tự động hóa ban đầu đòi hỏi chi phí kỹ thuật cao hơn kiểm thử thủ công. Tuy nhiên, sau từ 5 đến 7 vòng kiểm thử hồi quy (Sprint releases), hệ thống tự động hóa mang lại chỉ số hoàn vốn đầu tư (ROI) vượt trội nhờ cắt giảm hoàn toàn số giờ công lặp lại của đội ngũ QA, hạn chế tối đa rủi ro phát sinh lỗi nghiêm trọng (Critical Bugs) trên môi trường Production.


Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Script kiểm thử phụ thuộc vào độ ổn định của các bộ định vị phần tử (Xpath/ID). Khi nhà phát triển thay đổi sâu cấu trúc DOM mà không thông báo, test script có nguy cơ bị lỗi NoSuchElementException hoặc StaleElementReferenceException.
  • Chưa xử lý triệt để các tương tác nâng cao ngoài phạm vi trình duyệt (như chọn file từ hộp thoại Windows Explorer mà không dùng thuộc tính thẻ input type='file').

Hướng phát triển trong tương lai

  • Tích hợp Allure Report: Thay thế báo cáo mặc định của TestNG bằng Allure Framework để tạo báo cáo đồ họa chuyên nghiệp, có đính kèm ảnh chụp màn hình tự động khi test case bị Fail.
  • Kiểm thử phân tán với Selenium Grid & Docker: Triển khai Selenium Grid trên nền tảng Docker Container để chạy song song hàng trăm test case trên đa trình duyệt (Chrome, Firefox, Edge, Safari).
  • Tích hợp Data-driven hoàn chỉnh: Đọc toàn bộ bộ dữ liệu kiểm thử từ file Excel thông qua Apache POI để tách biệt hoàn toàn giữa dữ liệu và mã kiểm thử.

Đối tượng hưởng lợi

  • Sinh viên chuyên ngành CNTT / Phần mềm: Nắm bắt quy trình kiểm thử tự động thực tế, hiểu rõ cách tổ chức dự án Java Maven và mẫu thiết kế Page Object Model.
  • Kỹ sư kiểm thử (QA/QC Automation Engineers): Tham khảo kiến trúc BasePage/BaseTest chuẩn mực, tối ưu hóa câu lệnh tương tác và kiểm soát vòng đời kiểm thử với TestNG.
  • Doanh nghiệp & Đơn vị phát triển EdTech: Áp dụng trực tiếp giải pháp để tự động hóa kiểm thử cho các hệ thống LMS trường học, rút ngắn chu kỳ phát hành sản phẩm và tiết kiệm chi phí vận hành.
  • Nhà nghiên cứu chất lượng phần mềm: Dữ liệu thực nghiệm đóng góp vào việc đánh giá độ tin cậy của việc ứng dụng Selenium WebDriver trong các hệ thống Web động.

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

1. Cần chuẩn bị những yêu cầu kỹ thuật gì để triển khai chạy dự án này?

Máy tính cần cài đặt JDK (khuyến nghị phiên bản 8 hoặc 11), công cụ biên dịch Apache Maven, trình duyệt Google Chrome và một IDE lập trình Java như IntelliJ IDEA hoặc Eclipse. Thư viện WebDriverManager sẽ tự động xử lý việc tải Driver tương ứng.

2. Framework xử lý thế nào khi hệ thống LMS mở rộng thêm nhiều tính năng mới?

Nhờ áp dụng Page Object Model (POM), khi có trang mới hoặc tính năng mới, người phát triển chỉ cần tạo thêm một lớp Page Object tương ứng kế thừa BasePage và viết các lớp Test kế thừa BaseTest mà không ảnh hưởng đến cấu trúc mã nguồn sẵn có.

3. Làm thế nào để tích hợp bộ kiểm thử này vào đường ống CI/CD tự động?

Dự án được đóng gói bằng Maven, do đó có thể dễ dàng kích hoạt kiểm thử từ dòng lệnh thông qua lệnh mvn clean test -DsuiteXmlFile=testng.xml trong các tác vụ của Jenkins, GitHub Actions hoặc GitLab CI.

4. Chi phí bảo trì mã kiểm thử tự động có cao không?

Chi phí bảo trì ở mức thấp đến trung bình. Nhờ tập trung hóa các bộ định vị (Locators) bên trong từng Page Class cụ thể, nếu giao diện thay đổi, kiểm thử viên chỉ cần cập nhật locator tại một vị trí duy nhất thay vì sửa đổi toàn bộ các test case.

5. Selenium WebDriver có thể kiểm thử được ứng dụng di động (Mobile App LMS) không?

Bản thân Selenium WebDriver chỉ hỗ trợ ứng dụng Web trên trình duyệt. Tuy nhiên, toàn bộ kiến trúc và cú pháp trong đề tài này có thể chuyển giao mượt mà sang framework Appium để kiểm thử ứng dụng LMS trên hệ điều hành Android và iOS.


Kết luận

Đề tài khóa luận tốt nghiệp "Ứng dụng Selenium WebDriver vào kiểm thử phần mềm LMS" đã nghiên cứu và triển khai thành công một giải pháp tự động hóa kiểm thử phần mềm toàn diện, đáp ứng đầy đủ các tiêu chuẩn kỹ thuật hiện đại. Việc kết hợp chặt chẽ giữa Selenium WebDriver API, TestNG, Apache Maven và mô hình thiết kế Page Object Model (POM) đã giải quyết triệt để các rào cản về thời gian, nhân lực và nguy cơ sai sót của phương pháp kiểm thử thủ công truyền thống.

Kết quả thực nghiệm trên hệ thống LMS thực tế với tỷ lệ kiểm thử thành công đạt 88.89% (8/9 ca kiểm thử vượt qua xác minh) minh chứng cho tính khả thi, độ tin cậy và khả năng ứng dụng thực tiễn cao của giải pháp. Đây là nền tảng vững chắc để tiếp tục mở rộng hệ thống kiểm thử tự động hóa phân tán và tích hợp vào quy trình phát triển phần mềm liên tục (DevOps) chuyên nghiệp.