Bối cảnh và vấn đề nghiên cứu

Khóa luận tốt nghiệp "Nghiên cứu kiểm thử phần mềm vào ứng dụng Web CGV" được thực hiện bởi sinh viên Đỗ Thị Hồng Phượng (ngành Hệ thống thông tin quản lý, Học viện Ngân hàng) dưới sự hướng dẫn của TS. Đinh Trọng Hiếu vào năm 2017.

Về bối cảnh thực tiễn, tác giả chỉ ra quy tắc kinh điển trong kỹ thuật phần mềm từ năm 1979: trong một dự án phát triển phần mềm điển hình, xấp xỉ 50% thời gian và hơn 50% tổng chi phí được dành cho công tác kiểm thử. Khi các ứng dụng web và hệ thống mạng ngày càng mở rộng cả về quy mô lẫn độ phức tạp, các sai sót phát sinh từ khâu thiết kế, lập trình hoặc nguy cơ bảo mật (như các cuộc tấn công mã độc tống tiền WannaCry) đòi hỏi quy trình kiểm định phần mềm phải được thực thi nghiêm ngặt trước khi bàn giao cho người dùng cuối. Trong khuôn khổ hợp tác giữa Công ty TNHH Phần mềm FPT (FPT Software) và Tập đoàn CJ CGV nhằm nâng cấp cổng thông tin trực tuyến cgv.vn và tích hợp thêm phân hệ "Thanh toán trực tuyến", việc kiểm thử hồi quy và bảo đảm chất lượng hệ thống hiện hữu là yêu cầu bắt buộc.

Nhiệm vụ và mục tiêu nghiên cứu của đề tài bao gồm 4 nội dung chính:

  1. So sánh hiệu quả giữa kiểm thử tự động (Automation Testing) và kiểm thử thủ công (Manual Testing) trong dự án thực tế; hoàn thành nhiệm vụ thực tập tại doanh nghiệp.
  2. Nắm vững hệ thống lý thuyết về kiểm thử phần mềm; phương pháp kiểm định giao diện và chức năng trên ứng dụng web cụ thể.
  3. Tham gia quy trình kiểm thử dự án CJ CGV tại FPT Software theo mô hình Agile; xây dựng hoàn chỉnh hệ thống tài liệu kiểm thử gồm kịch bản, trường hợp kiểm thử (test case) và báo cáo kết quả kiểm thử.
  4. Xây dựng các đoạn mã kịch bản kiểm thử (test script) và vận hành các công cụ kiểm thử tự động cơ bản.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Các kỹ thuật kiểm thử phần mềm (hộp đen, kiểm thử chức năng, kiểm thử giao diện người dùng) và việc ứng dụng kiểm thử thủ công kết hợp tự động hóa vào hệ thống web thương mại điện tử.
  • Phạm vi không gian: Dự án nâng cấp website cgv.vn tại Công ty TNHH Phần mềm FPT, tập trung vào hai phân hệ chức năng: Đăng nhập và Đăng ký tài khoản người dùng.
  • Phạm vi thời gian: Kế hoạch kiểm thử được triển khai từ ngày 15/03/2017 đến ngày 23/05/2017.

Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng nền tảng lý luận dựa trên các tiêu chuẩn kỹ thuật phần mềm quốc tế và quy trình sản xuất phần mềm công nghiệp:

  • Khái niệm và tiêu chuẩn phần mềm: Dẫn chiếu định nghĩa phần mềm theo Viện Kỹ thuật Điện và Điện tử (IEEE), quy trình phát triển phần mềm 4 giai đoạn (Đặc tả, Phát triển, Phê duyệt, Nâng cấp/Bảo trì) và phân loại lỗi phần mềm (lỗi sai, lỗi thiếu, lỗi thừa dựa trên sự sai lệch giữa sản phẩm và tài liệu đặc tả).
  • Phân loại kiểm định:
    • Phân loại theo phương pháp: Kiểm thử tĩnh (duyệt tài liệu/mã lệnh không chạy chương trình) và kiểm thử động (thực thi mã nguồn qua Unit Test, Integration Test, System Test, Acceptance Test).
    • Phân loại theo kỹ thuật: Kiểm thử hộp trắng (White-box testing - phủ dòng lệnh, nhánh, điều kiện) và kiểm thử hộp đen (Black-box testing - phân hoạch tương đương, phân tích giá trị biên).
    • Phân loại theo chiến lược: Kiểm thử thủ công (Manual Testing) và kiểm thử tự động (Automation Testing).
  • Mô hình quy trình: Quy trình kiểm thử phần mềm lặp linh hoạt trong Vòng đời phát triển phần mềm Agile (DSLC) áp dụng tại FPT Software, bao gồm 4 giai đoạn: Lập kế hoạch kiểm thử (Test Planning), Phân tích và thiết kế kiểm thử (Test Analysis & Design), Thi hành kiểm thử (Test Execution), Báo cáo và đánh giá kiểm thử (Test Report & Evaluation).
  • Phương pháp thu thập và xử lý dữ liệu:
    • Kỹ thuật phân tích tài liệu yêu cầu nghiệp vụ từ khách hàng CJ Group.
    • Kỹ thuật thiết kế trường hợp kiểm thử dựa trên bộ ba dữ liệu: {Tập dữ liệu đầu vào (Input), Trạng thái thành phần phần mềm, Tập kết quả kỳ vọng}.
    • Phương pháp kiểm thử ứng dụng Web đa diện: Kiểm thử chức năng, kiểm thử tính khả dụng, kiểm thử giao diện (UI), kiểm thử độ tương thích (trình duyệt, hệ điều hành), kiểm thử hiệu năng (thời gian phản hồi chuẩn 3–5 giây) và kiểm thử bảo mật.

Thiết kế và triển khai kiểm thử

Phần thực nghiệm của khóa luận tập trung triển khai quy trình kiểm thử hệ thống cho hai Use Case nghiệp vụ chính của website CGV: Đăng nhập (CGV001) và Đăng ký tài khoản (CGV002).

1. Đặc tả thành phần giao diện và ràng buộc nghiệp vụ

Chức năng Thành phần giao diện Thuộc tính kỹ thuật / Quy tắc nghiệp vụ (Business Rules)
Đăng nhập (CGV001) Hộp văn bản Email/Tên tài khoản Kích thước 231 × 31px; lề trong: trái 40px, phải 5px; mặc định rỗng.
Hộp văn bản Mật khẩu Kích thước 231 × 31px; lề trong: trái 40px, phải 5px; độ dài tối thiểu 6 ký tự.
Nút Đăng nhập Chiều rộng 80px; mã màu #f2f0e5; lề trong trái/phải 10px; kiểm tra dữ liệu qua cơ sở dữ liệu (BR0101, BR0102).
Đăng ký (CGV002) 15 trường dữ liệu bắt buộc Kiểm tra định dạng theo BR0201 và BR0202: Tên, Họ (tối đa 255 ký tự, kích thước 365 × 30px); Email (chứa ký tự @, không kết thúc bằng dấu chấm); Số thẻ CMND/Passport (tối đa 12 ký tự); Số điện thoại (chỉ nhập số); Địa chỉ; Tỉnh/Thành phố; Quận/Huyện (dữ liệu phụ thuộc Tỉnh/Thành phố đã chọn); Mật khẩu và Xác nhận mật khẩu (tối thiểu 6 ký tự, phải trùng khớp nhau); Giới tính (Nam/Nữ); Mã Captcha xác nhận.
Danh sách chọn Ngày sinh Ngày (01–31, kích thước 65 × 30px), Tháng (Tháng 1 – Tháng 12, kích thước 65 × 30px), Năm (1937–2005, kích thước 65 × 30px).

2. Kế hoạch và phân bổ nguồn lực kiểm thử

Kế hoạch kiểm thử chi tiết được thực hiện từ ngày 15/03/2017 đến ngày 23/05/2017, sử dụng công cụ quản lý Microsoft Excel và Jira trên môi trường các trình duyệt Google Chrome, Mozilla Firefox, Internet Explorer:

Giai đoạn công việc Tài liệu liên quan Thời gian thực hiện Ngày bắt đầu
Đọc hiểu tài liệu Tài liệu yêu cầu của khách hàng 3 ngày 15/03/2017
Hỏi đáp yêu cầu (Q&A) Tài liệu Hỏi và trả lời (Q&A) 3 ngày 20/03/2017
Lập kế hoạch kiểm thử Tài liệu Kế hoạch kiểm thử (Test Plan) 2 ngày 22/03/2017
Lập thiết kế kiểm thử Tài liệu Thiết kế kiểm thử (Test Design) 3 ngày 27/03/2017
Xây dựng các trường hợp kiểm thử Tài liệu Trường hợp kiểm thử (Test Case) 12 ngày 30/03/2017
Đánh giá chéo trường hợp kiểm thử Tài liệu Trường hợp kiểm thử 3 ngày 14/04/2017
Cập nhật và chỉnh sửa test case Tài liệu Trường hợp kiểm thử 2 ngày 19/04/2017
Thực thi kiểm thử Tài liệu Trường hợp kiểm thử 5 ngày 21/04/2017
Ghi nhận và báo cáo kết quả Báo cáo kiểm thử (Test Report) 1 ngày 27/04/2017
Kiểm thử nghiệm thu (UAT) Toàn bộ hệ thống tài liệu 2–3 ngày 28/04/2017
Kiểm thử bảo hành sau vận hành Tài liệu Trường hợp kiểm thử 2–3 tuần 02/05/2017 – 23/05/2017

Nguồn lực dự án bao gồm: Test Manager (MinhNTHL), Test Lead (QuangNCN), và 2 kiểm thử viên (PhuongDTH1, HangVT2).

3. Triển khai kiểm thử tự động với Selenium WebDriver

Để phục vụ kiểm thử hồi quy khi hệ thống tích hợp chức năng thanh toán, tác giả thiết lập môi trường tự động hóa gồm JDK, Eclipse IDE, thư viện Selenium WebDriver, TestNG và IEDriverServer.exe. Các kịch bản kiểm thử (Test Script) được lập trình bằng Java để tương tác trực tiếp với trình duyệt:

public class Functions {
    public static void iedriver() {
        System.setProperty("webdriver.ie.driver", "C:\\setup\\selenium\\IEDriverServer.exe");
    }
}

// Khởi tạo trình duyệt và điều hướng
WebDriver driver = new InternetExplorerDriver();
driver.get("https://cgv.vn");

// Định vị phần tử và tương tác người dùng
By dnlinkBy = By.linkText("Đăng nhập/ Đăng ký");
WebElement DnlinkBtn = driver.findElement(dnlinkBy);
DnlinkBtn.click();

WebElement Email = driver.findElement(By.id("email"));
Email.sendKeys("phuongdo");

// Xử lý danh sách chọn (Dropdown/Combobox)
Select month = new Select(driver.findElement(By.id("month")));
month.selectByValue("11");

Select tinh = new Select(driver.findElement(By.id("region_id")));
tinh.selectByIndex(19); // Hà Nội

// Lấy thông báo lỗi giao diện và URL
By ErrorMess1By = By.id("advice-required-entry-email");
WebElement ErrorMess1 = driver.findElement(ErrorMess1By);
String contentMess1 = ErrorMess1.getText();
String url = driver.getCurrentUrl();

Nội dung chính theo từng chương

Chương 1: Mô tả bài toán

Chương 1 giới thiệu về đơn vị thực tập là Công ty TNHH Phần mềm FPT (FPT Software) — doanh nghiệp đạt chứng chỉ ISO 27001:2005, hiện diện tại hơn 10 quốc gia và nằm trong Top 100 nhà cung cấp dịch vụ phần mềm toàn cầu. Tiếp đó, tác giả phân tích bài toán thực tế của khách hàng CJ CGV (thuộc Tập đoàn CJ Group), đơn vị sở hữu cụm rạp chiếu phim lớn nhất Việt Nam với mô hình phức hợp "Cultureplex". Nhằm nâng cao năng lực cạnh tranh và đáp ứng nhu cầu thị trường, CJ CGV hợp tác với FPT Software nâng cấp hệ thống website cgv.vn và phát triển phân hệ "Thanh toán trực tuyến". Nhiệm vụ cụ thể của tác giả trong dự án là tiếp nhận tài liệu đặc tả, thiết kế kịch bản và thực thi kiểm thử giao diện cùng chức năng cho hai module Đăng nhập và Đăng ký.

Chương 2: Các kỹ thuật kiểm thử phần mềm

Chương này tổng kết có hệ thống cơ sở lý thuyết về kiểm định chất lượng phần mềm. Tác giả trình bày định nghĩa phần mềm theo chuẩn IEEE, cấu trúc 4 pha của quy trình phát triển phần mềm và các trạng thái lỗi phần mềm. Nội dung chương phân tích chi tiết:

  • Hai phương pháp kiểm thử: kiểm thử tĩnh và kiểm thử động.
  • Hai kỹ thuật cốt lõi: kiểm thử hộp đen (tập trung vào giao diện, dữ liệu vào/ra mà không xem xét cấu trúc mã nguồn) và kiểm thử hộp trắng (kiểm tra đường dẫn logic, điều kiện bên trong mã nguồn).
  • Hai chiến lược kiểm thử: kiểm thử thủ công và kiểm thử tự động.
  • Bốn cấp độ kiểm thử chuẩn: Kiểm thử đơn vị (Unit Test), Kiểm thử tích hợp (Integration Test), Kiểm thử hệ thống (System Test) và Kiểm thử chấp nhận (Acceptance Test).

Chương 3: Quy trình và kế hoạch kiểm thử ứng dụng Web

Chương 3 tập trung vào quy trình kiểm định ứng dụng web trong môi trường phát triển phần mềm Agile. Tác giả mô tả chi tiết quy trình kiểm thử 4 bước (Test Planning $\rightarrow$ Test Analysis & Design $\rightarrow$ Test Execution $\rightarrow$ Test Report & Evaluation), cấu trúc một trường hợp kiểm thử (gồm Test Scenario $\rightarrow$ Test Case $\rightarrow$ Test Step), và cấu trúc tài liệu Kế hoạch kiểm thử (Test Plan).

Chương này cũng tổng hợp hơn 20 tiêu chuẩn kỹ thuật dùng để phát hiện thiếu sót trên web: định dạng phông chữ, màu sắc, khung viền, khoảng cách nút bấm, hành vi điều hướng bằng phím Tab và Shift + Tab, vị trí con trỏ chuột khi xuất hiện thông báo lỗi, kiểm tra liên kết gãy (hyperlink), điều kiện biên của các trường nhập liệu, và tiêu chuẩn thời gian phản hồi máy chủ từ 3 đến 5 giây. Cuối chương giới thiệu bộ công cụ Eclipse IDE và thư viện Selenium WebDriver hỗ trợ tự động hóa kiểm thử.

Chương 4: Kiểm thử ứng dụng Web CGV

Chương 4 là phần thực nghiệm chính của khóa luận. Tác giả xây dựng chi tiết tài liệu đặc tả Use Case, biểu đồ hoạt động (Activity Diagram), quy tắc nghiệp vụ và yêu cầu thành phần giao diện cho chức năng Đăng nhập (mã CGV001) và Đăng ký (mã CGV002). Tác giả thiết lập tài liệu Kế hoạch kiểm thử với mốc thời gian rõ ràng, phân bổ nhân sự, thiết lập ma trận Thiết kế kiểm thử (Test Design) 3 mức độ.

Trên cơ sở đó, 88 trường hợp kiểm thử thủ công (mã dự án CGV_TC_ST) được xây dựng và thực thi trên website CGV. Đồng thời, tác giả tiến hành tự động hóa các kịch bản kiểm thử bằng cách lập trình các đoạn mã Java với Selenium WebDriver trong môi trường Eclipse, trích xuất và phân tích kết quả thực thi tự động cho các trường hợp kiểm thử tiêu biểu (TC 16, TC 18, TC 28, TC 59, TC 88).

Kết quả và đóng góp

Kết quả nghiên cứu chính

  • Xây dựng bộ tài liệu kiểm thử hoàn chỉnh: Thiết lập đầy đủ hệ thống hồ sơ kiểm thử phần mềm bao gồm Bảng đặc tả Use Case, Tài liệu Thiết kế kiểm thử (Test Design), Bản kế hoạch kiểm thử (Test Plan) và Báo cáo kiểm thử (Test Report) theo đúng quy trình công nghiệp tại FPT Software.
  • Thực thi kiểm thử thủ công: Thiết kế và thực thi thành công toàn bộ 88 trường hợp kiểm thử (Test Case) cho hai phân hệ Đăng nhập và Đăng ký trên website cgv.vn.
Mã dự án Yêu cầu kiểm thử Hình thức kiểm thử Thành công (Passed) Thất bại (Failed) Chưa kiểm thử (Untested) Tổng số Test Case
CGV_TC_ST Đăng nhập / Đăng ký tài khoản CGV Thủ công (Manual Test) 88 0 0 88
  • Triển khai tự động hóa: Chuyển đổi thành công các kịch bản kiểm thử giao diện và chức năng sang mã lệnh tự động hóa bằng Selenium WebDriver trên nền tảng Eclipse IDE, ghi nhận kết quả thực thi tự động qua các trường hợp kiểm thử TC 16, TC 18, TC 28, TC 59, TC 88.

Giải pháp và đóng góp của đề tài

  • Hệ thống hóa quy trình áp dụng phương pháp kiểm thử phần mềm vào dự án thương mại điện tử thực tế hoạt động theo mô hình Agile.
  • Đề xuất việc kết hợp giữa kiểm thử thủ công ở giai đoạn phát triển ban đầu và chuyển giao sang kiểm thử tự động hóa bằng công cụ mã nguồn mở (Selenium WebDriver) trong giai đoạn kiểm thử hồi quy và bảo trì hệ thống, giúp tiết kiệm chi phí và tối ưu hóa nhân lực cho dự án.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận chỉ ra một số điểm giới hạn dựa trên phạm vi triển khai thực tế:

  • Hạn chế về phạm vi chức năng: Nghiên cứu chỉ tập trung kiểm thử chuyên sâu cho hai module Đăng nhập và Đăng ký; chưa triển khai kiểm thử chi tiết cho toàn bộ các phân hệ phức tạp khác trên website CGV như Xem lịch chiếu phim, Đặt vé trực tuyến và module mới "Thanh toán trực tuyến".
  • Hạn chế về mức độ tự động hóa: Việc lập trình kịch bản tự động bằng Selenium WebDriver mới dừng lại ở việc áp dụng thử nghiệm cho một số trường hợp kiểm thử tiêu biểu, chưa bao phủ toàn bộ 88 test case đã thiết kế.
  • Hướng phát triển: Mở rộng việc viết kịch bản kiểm thử tự động cho toàn bộ các ca kiểm thử của hệ thống; mở rộng kiểm thử tự động cho phân hệ Thanh toán trực tuyến; thực hiện kiểm thử tương thích tự động đồng thời trên nhiều nền tảng trình duyệt (Cross-browser testing) và thiết bị di động.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo chuyên môn phù hợp cho:

  • Sinh viên các ngành Hệ thống thông tin quản lý, Công nghệ thông tin, Kỹ thuật phần mềm đang chuẩn bị thực tập hoặc làm khóa luận tốt nghiệp về đề tài Đảm bảo chất lượng phần mềm (QA/QC).
  • Kiểm thử viên mới vào nghề (Fresher Tester) cần tìm hiểu quy trình kiểm thử thực tế trong doanh nghiệp phần mềm (mô hình Agile tại FPT Software).
  • Các phần có giá trị tham khảo kỹ thuật cao:
    • Bảng tổng hợp các tiêu chuẩn phát hiện lỗi giao diện và điều khiển ứng dụng Web tại Chương 3.
    • Mẫu tài liệu đặc tả Use Case, ma trận Test Design và kế hoạch thời gian kiểm định tại Chương 4.
    • Cấu trúc mã nguồn mẫu sử dụng Java và Selenium WebDriver tương tác với các phần tử giao diện web (Text box, Combobox, Button, XPath, Dynamic Elements).

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

1. Khóa luận được thực hiện dựa trên dự án của doanh nghiệp nào và đối tượng kiểm thử cụ thể là gì?
Khóa luận được thực hiện trong quá trình sinh viên thực tập tại Công ty TNHH Phần mềm FPT (FPT Software), trực tiếp tham gia vào dự án nâng cấp website cgv.vn của khách hàng CJ CGV (Tập đoàn CJ Group). Đối tượng kiểm thử cụ thể là giao diện và chức năng của hai module Đăng nhập và Đăng ký tài khoản.

2. Dự án áp dụng mô hình phát triển phần mềm nào và quy trình kiểm thử gồm những bước nào?
Dự án được triển khai theo mô hình Vòng đời phát triển phần mềm Agile (DSLC). Quy trình kiểm thử gồm 4 bước chính: (1) Xây dựng kế hoạch kiểm thử (Test Planning); (2) Phân tích và thiết kế kiểm thử (Test Analysis and Test Design); (3) Thi hành kiểm thử (Test Executing); (4) Báo cáo kiểm thử và đánh giá (Test Report and Evaluation).

3. Có bao nhiêu trường hợp kiểm thử thủ công được xây dựng và kết quả thực thi ra sao?
Tác giả đã xây dựng tổng cộng 88 trường hợp kiểm thử thủ công (mã dự án CGV_TC_ST) cho hai chức năng Đăng nhập và Đăng ký. Kết quả thực thi ghi nhận 88 trường hợp thành công (Passed), 0 trường hợp thất bại và 0 trường hợp chưa kiểm thử.

4. Vì sao dự án cần triển khai kiểm thử tự động và công cụ nào đã được sử dụng?
Dự án cần kiểm thử tự động vì hệ thống chuẩn bị tích hợp thêm tính năng mới "Thanh toán trực tuyến", đòi hỏi phải kiểm thử hồi quy lại các chức năng cũ mang tính bảo trì liên tục nhằm giảm thiểu chi phí và nguồn lực nhân sự. Các công cụ được lựa chọn gồm: môi trường phát triển Eclipse IDE, thư viện kiểm thử tự động mã nguồn mở Selenium WebDriver, framework TestNG và IEDriverServer.

5. Màn hình Đăng ký tài khoản của website CGV yêu cầu bao nhiêu trường bắt buộc và có những quy định định dạng đặc thù nào?
Màn hình Đăng ký yêu cầu 15 trường dữ liệu bắt buộc (theo quy tắc BR0201). Một số quy định định dạng cụ thể gồm: Tên và Họ tối đa 255 ký tự; Số thẻ CMND/Passport tối đa 12 ký tự; Mật khẩu tối thiểu 6 ký tự; Số điện thoại chỉ chứa chữ số; Combobox Ngày sinh có các khoảng giá trị: Ngày (01–31), Tháng (Tháng 1 – Tháng 12), Năm (1937–2005); trường Quận/Huyện có dữ liệu phụ thuộc vào Tỉnh/Thành phố đã chọn.

Kết luận

Khóa luận tốt nghiệp của tác giả Đỗ Thị Hồng Phượng đã trình bày toàn diện khung lý thuyết kiểm thử phần mềm và triển khai ứng dụng thực tế vào cổng thông tin điện tử cgv.vn tại FPT Software. Đề tài hoàn thành đầy đủ các mục tiêu đề ra thông qua việc thiết lập tài liệu kiểm thử chuẩn mực, thực thi 88 trường hợp kiểm thử thủ công đạt kết quả kiểm định tốt và bước đầu xây dựng các kịch bản kiểm thử tự động bằng Selenium WebDriver. Đây là công trình học thuật có tính thực tiễn cao, phản ánh sát thực quy trình đảm bảo chất lượng phần mềm trong môi trường doanh nghiệp công nghệ thông tin.