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

Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, các ứng dụng Web ngày càng trở thành nền tảng thiết yếu phục vụ thương mại điện tử, truyền thông và cung cấp dịch vụ trực tuyến. Sự gia tăng nhanh chóng về số lượng người dùng đồng thời đòi hỏi các hệ thống website phải hoạt động ổn định, chính xác trên nhiều môi trường khác nhau như hệ điều hành và trình duyệt đa dạng. Theo tác giả, hoạt động kiểm thử phần mềm chiếm từ 26% đến hơn 40% tổng chi phí, thời gian và nhân lực trong toàn bộ vòng đời phát triển dự án. Kiểm thử thủ công (manual testing) khi thực hiện trên các tập dữ liệu lớn hoặc các kịch bản lặp đi lặp lại thường đối mặt với nguy cơ sai sót, tốn kém tài nguyên và giảm năng suất lao động.

Nhằm giải quyết bài toán tối ưu hóa quy trình kiểm thử và nâng cao độ tin cậy của phần mềm, đề tài tập trung nghiên cứu công cụ kiểm thử tự động mã nguồn mở Selenium và áp dụng vào kiểm thử thực tế trên website thương mại điện tử.

Mục tiêu nghiên cứu của đề tài:

  1. Tìm hiểu tổng quan về kiểm thử phần mềm, kiểm thử tự động phần mềm, đặc biệt là quy trình kiểm thử ứng dụng Web và các công cụ hỗ trợ kiểm thử tự động hiện hành.
  2. Nghiên cứu sâu về vai trò, phương pháp, đặc trưng và cách ứng dụng của Selenium, trọng tâm là công cụ Selenium WebDriver trong việc tự động hóa thao tác trên trình duyệt.
  3. Thực hiện phân tích hệ thống, xây dựng các kịch bản kiểm thử (test case) cho các chức năng của một website bán hàng trực tuyến; sử dụng ngôn ngữ lập trình Java kết hợp thư viện Selenium WebDriver và framework TestNG để phát triển các tập lệnh kiểm thử tự động (test script).
  4. Đánh giá chất lượng toàn diện của website thông qua kết quả kiểm thử chức năng và kiểm thử phi chức năng.

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

  • Đối tượng công nghệ: Công cụ Selenium WebDriver, môi trường phát triển tích hợp Eclipse, framework kiểm thử TestNG, ngôn ngữ lập trình Java.
  • Đối tượng ứng dụng: Hệ thống website bán sách trực tuyến Chuang Bookstore (bao gồm cả phân hệ người dùng và phân hệ quản trị).
  • Phạm vi nghiên cứu: Khóa luận tập trung vào kiến thức nền tảng về kiểm thử phần mềm, phân tích yêu cầu, thiết kế kịch bản kiểm thử và tự động hóa các luồng nghiệp vụ cốt lõi của website, không đi sâu vào các lý thuyết thuần túy không mang tính ứng dụng thực tế. Thời gian hoàn thành khóa luận vào tháng 06 năm 2022 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

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

Khóa luận thiết lập nền tảng lý thuyết dựa trên các chuẩn mực kỹ thuật phần mềm và công nghệ kiểm thử tự động:

1. Khung lý thuyết và khái niệm nền tảng:

  • Quy trình phát triển phần mềm: Gồm 5 giai đoạn liên kết chặt chẽ: Giải pháp/Yêu cầu $\rightarrow$ Thiết kế $\rightarrow$ Lập trình $\rightarrow$ Kiểm thử $\rightarrow$ Triển khai.
  • Phân loại lỗi phần mềm: Tác giả hệ thống hóa các dạng lỗi gồm Bug (lỗi module/hệ thống), Defect (lỗi logic/quá trình phát triển), Fault (sai sót), Failure (thất bại khi thực thi), Incident (sự cố hiển thị cho người dùng/kiểm thử viên) và lỗi Thừa (tính năng ngoài đặc tả).
  • 7 nguyên tắc kiểm thử phần mềm (theo chuẩn kiểm thử quốc tế): (1) Kiểm thử luôn có lỗi; (2) Kiểm thử toàn bộ là không thể; (3) Kiểm thử càng sớm càng tốt; (4) Sự tập trung của lỗi; (5) Nghịch lý thuốc trừ sâu; (6) Kiểm thử phụ thuộc vào ngữ cảnh; (7) Quan niệm sai lầm về việc "không có lỗi".
  • Phương pháp và cấp độ kiểm thử: Phân loại theo phương pháp gồm Kiểm thử hộp trắng (White box), Kiểm thử hộp đen (Black box), Kiểm thử hộp xám (Grey box); phân loại theo cấp độ gồm 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).

2. Kiến trúc và cơ chế hoạt động của bộ công cụ Selenium: Bộ công cụ Selenium được phân tích qua 4 thành phần chính:

  • Selenium IDE: Công cụ dạng tiện ích mở rộng (plug-in) trên trình duyệt, hỗ trợ ghi và phát lại (Record & Playback) kịch bản kiểm thử Selenese.
  • Selenium Remote Control (RC): Kiến trúc sử dụng máy chủ trung gian (Selenium Server) đóng vai trò HTTP proxy để điều khiển trình duyệt.
  • Selenium WebDriver (Selenium 2.0): Công nghệ kế thừa từ Simon Stewart (2006), tương tác trực tiếp với trình duyệt ở cấp độ hệ điều hành thông qua API gốc của trình duyệt mà không cần máy chủ trung gian.
  • Selenium Grid: Giải pháp điều phối chạy song song các ca kiểm thử trên nhiều máy chủ và trình duyệt phân tán.
Tiêu chí so sánh Selenium RC Selenium WebDriver
Cơ chế tương tác Qua máy chủ trung gian (Selenium Server / Core) Trực tiếp với trình duyệt ở cấp độ hệ điều hành
Tốc độ thực thi Chậm hơn do phải qua trạm chuyển đổi HTTP proxy Nhanh hơn do gửi lệnh native trực tiếp
Độ phức tạp API Phức tạp, xác định hành động trước đối tượng Đơn giản, định vị WebElement trước rồi thực thi thao tác
Hỗ trợ Web động Hạn chế với các thành phần AJAX, DOM động Xử lý tốt các trang web động và phần tử thay đổi

3. Phương pháp nghiên cứu và triển khai:

  • Phương pháp phân tích yêu cầu: Trích xuất và mô hình hóa yêu cầu hệ thống thông qua biểu đồ ca sử dụng (Use Case Diagram), bảng đặc tả Use Case chi tiết, xác định luồng sự kiện chính và luồng ngoại lệ.
  • Phương pháp thiết kế Test Case: Xây dựng bộ dữ liệu kiểm thử dựa trên kỹ thuật phân vùng tương đương và phân tích giá trị biên cho các trường thông tin.
  • Phương pháp kiểm thử tự động: Sử dụng ngôn ngữ Java để lập trình các kịch bản kiểm thử, phối hợp Selenium WebDriver định vị phần tử giao diện (qua ID, Name, Class Name, Tag Name) và TestNG để quản lý luồng thực thi, kiểm tra điều kiện (assertions) và trích xuất báo cáo.

Thiết kế và triển khai kiểm thử tự động

Hệ thống kiểm thử tự động được thiết lập nhằm kiểm tra toàn diện ứng dụng web Chuang Bookstore trên môi trường máy tính với các thành phần công nghệ:

1. Kiến trúc ngăn xếp công nghệ kiểm thử:

  • Môi trường phát triển (IDE): Eclipse.
  • Ngôn ngữ kịch bản: Java.
  • Thư viện điều khiển trình duyệt: Selenium WebDriver (hỗ trợ đa trình duyệt: Google Chrome, Mozilla Firefox, Microsoft Edge).
  • Framework quản trị kiểm thử: TestNG (hỗ trợ chú thích @Test, quản lý bộ kiểm thử, cấu hình tham số và tạo báo cáo tự động).
  • Cơ chế định vị và tương tác WebElement: Sử dụng các phương thức By.id(), By.name(), By.className(), By.tagName().
  • Cơ chế đồng bộ thời gian: Ứng dụng các hàm chờ implicitlyWait(), pageLoadTimeout(), setScriptTimeout() nhằm đảm bảo trình duyệt tải hoàn tất tài nguyên DOM trước khi thực thi lệnh tiếp theo.

2. Cấu trúc dữ liệu của ứng dụng đích (Chuang Bookstore): Cơ sở dữ liệu của website bán sách được thiết kế dưới dạng các tập hợp tài liệu (Collections):

  • User: Lưu trữ thông tin tài khoản người dùng, phân quyền (User, Admin).
  • Products: Lưu trữ thông tin sách (tên, tác giả, nhà xuất bản, mô tả, đơn giá, số lượng tồn).
  • Categories: Lưu trữ danh mục phân loại sách.
  • Orders & DetailOrders: Lưu trữ thông tin đơn hàng, trạng thái xử lý và chi tiết từng mặt hàng.
  • Carts & DetailCart: Lưu trữ giỏ hàng hiện thời của người dùng.

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

Chương 1: Tổng quan về kiểm thử phần mềm và Selenium

Chương 1 hệ thống hóa toàn bộ lý thuyết nền tảng về kiểm thử phần mềm. Tác giả làm rõ vị trí của khâu kiểm thử trong vòng đời phát triển phần mềm, phân định ranh giới giữa kiểm thử thủ công và tự động. Trọng tâm của chương đi sâu vào cấu trúc 4 thành phần của Selenium, so sánh chi tiết giữa Selenium RC và Selenium WebDriver. Chương này cũng phân loại các tập lệnh điều khiển cơ bản trong WebDriver:

  • Lệnh điều khiển trình duyệt: get(), getTitle(), getCurrentUrl(), getPageSource(), close(), quit().
  • Lệnh điều hướng và chuyển đổi ngữ cảnh: forward(), back(), refresh(), getWindowHandle(), getWindowHandles(), switchTo().window().
  • Lệnh kiểm soát thời gian chờ: implicitlyWait(), pageLoadTimeout(), sleep().

Chương 2: Phân tích và xây dựng kịch bản kiểm thử website Chuang Bookstore

Chương 2 thực hiện khảo sát và mô tả chi tiết toàn bộ các chức năng của hệ thống thương mại điện tử Chuang Bookstore. Tác giả phân tích 18 chức năng nghiệp vụ cụ thể chia thành hai nhóm:

  • Chức năng dành cho khách hàng: Đăng ký, Đăng nhập, Xem trang chủ, Đăng xuất, Đổi mật khẩu, Quên mật khẩu, Chỉnh sửa thông tin cá nhân, Tìm kiếm sách, Xem chi tiết sách, Xem danh mục, Lọc sản phẩm, Quản lý giỏ hàng, Xem đơn hàng, Thanh toán (hỗ trợ Ship COD và cổng PayPal).
  • Chức năng dành cho quản trị viên (Admin): Quản lý User (thêm, sửa, xóa người dùng), Quản lý danh mục sách, Quản lý thông tin sách (thêm mới, cập nhật giá/hình ảnh, xóa sách ngừng kinh doanh), Quản lý đơn hàng (chuyển đổi 6 trạng thái: chờ xác nhận, đã xác nhận, hủy đơn, đang giao, tạm hoãn, giao thành công). Chương này đồng thời hoàn thiện hệ thống biểu đồ Use Case tổng quát, Use Case chi tiết cho từng nghiệp vụ và lược đồ thiết kế dữ liệu của 7 Collections.

Chương 3: Ứng dụng Selenium WebDriver trong kiểm thử website bán sách Chuang

Chương 3 tập trung thiết kế các kịch bản kiểm thử chi tiết cho 4 chức năng cốt lõi của website Chuang Bookstore:

  1. Chức năng Đăng ký tài khoản: Kiểm tra các trường hợp hợp lệ, để trống trường bắt buộc, sai định dạng email, mật khẩu không khớp, tài khoản đã tồn tại.
  2. Chức năng Thêm sản phẩm vào giỏ hàng: Kiểm tra thao tác thêm sách từ trang danh mục, trang chi tiết, kiểm tra sự cập nhật số lượng và tổng tiền.
  3. Chức năng Chỉnh sửa giỏ hàng: Kiểm tra tăng/giảm số lượng sản phẩm, cập nhật lại giỏ hàng và xóa sản phẩm về 0.
  4. Chức năng Đặt hàng: Kiểm tra luồng nhập địa chỉ giao hàng, lựa chọn phương thức thanh toán, hoàn tất đơn hàng và lưu trữ lịch sử giao dịch. Chương 3 cũng đề xuất quy trình thực thi kiểm thử tự động, cơ chế chạy kiểm thử trên nhiều trình duyệt khác nhau và quy chuẩn lưu trữ kết quả đầu ra.

Chương 4: Thực nghiệm và đánh giá kết quả

Chương 4 mô tả quá trình cài đặt thực nghiệm kịch bản kiểm thử bằng mã nguồn Java trên IDE Eclipse, liên kết thư viện TestNG để chạy tự động trên giao diện web thực tế. Tác giả tiến hành chạy bộ test script trên các trường hợp kiểm thử đã thiết kế, thu thập kết quả Pass/Fail, phân tích nguyên nhân lỗi phát sinh và đánh giá tổng thể hệ thống qua hai phương diện: kiểm thử chức năng (Functional Testing) và kiểm thử phi chức năng (Non-functional Testing về độ tương thích trình duyệt).

Chương 5: Kết quả đạt được và hướng phát triển

Chương cuối tổng kết các nội dung đã hoàn thành của khóa luận, đối chiếu với mục tiêu ban đầu và chỉ ra những giới hạn kỹ thuật cần tiếp tục nâng cấp trong tương lai.


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

1. Kết quả thực nghiệm chính:

  • Khóa luận đã xây dựng thành công bộ kịch bản kiểm thử tự động bao phủ 4 phân hệ chức năng quan trọng nhất của website thương mại điện tử Chuang Bookstore.
  • Đã thiết lập hoàn chỉnh khung kiểm thử tự động (Automation Test Framework) sử dụng kết hợp Java, Selenium WebDriver và TestNG, cho phép khởi chạy các ca kiểm thử tự động và xuất báo cáo trực quan dạng HTML/TestNG Summary Report.
  • Kiểm thử thành công khả năng tương thích đa trình duyệt của website trên môi trường Chrome và Firefox.

2. Bảng tổng hợp các phân hệ chức năng được tự động hóa kiểm thử:

Phân hệ chức năng Số lượng kịch bản / Trường hợp kiểm tra Kết quả ghi nhận
Đăng ký tài khoản Kiểm tra dữ liệu hợp lệ, để trống thông tin, trùng lặp email, sai cấu trúc mật khẩu Kịch bản chạy tự động ghi nhận chính xác phản hồi hệ thống và thông báo lỗi tương ứng
Thêm vào giỏ hàng Kiểm tra thêm sản phẩm từ nhiều màn hình, kiểm tra số lượng tồn kho Hệ thống cập nhật giỏ hàng chính xác theo thời gian thực
Chỉnh sửa giỏ hàng Kiểm tra tăng, giảm số lượng, xóa bỏ mặt hàng khỏi danh sách mua Giao diện tính toán đúng tổng giá trị và số lượng hàng hóa
Đặt hàng & Thanh toán Kiểm tra quy trình đặt hàng với Ship COD và cổng thanh toán trực tuyến Lưu trữ chính xác đơn hàng vào cơ sở dữ liệu, giảm trừ tồn kho tương ứng

3. Đóng góp của đề tài:

  • Cung cấp một tài liệu nghiên cứu có tính hệ thống về cách tiếp cận, chuyển đổi từ phân tích yêu cầu phần mềm sang kịch bản kiểm thử tự động bằng Selenium WebDriver.
  • Xây dựng mô hình kiểm thử thực nghiệm hoàn chỉnh, có thể tái sử dụng kịch bản và mở rộng cho các dự án ứng dụng web thương mại điện tử tương tự.

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

1. Hạn chế của đề tài:

  • Phạm vi tự động hóa mới chỉ tập trung vào 4 luồng chức năng người dùng chính (Đăng ký, Thêm giỏ hàng, Sửa giỏ hàng, Đặt hàng); các chức năng quản trị (Admin) và quản lý danh mục mới dừng ở mức phân tích yêu cầu và kịch bản tĩnh.
  • Chưa tích hợp kiểm thử tự động vào hệ thống phân tán Selenium Grid để chạy song song số lượng lớn ca kiểm thử trên nhiều máy chủ cùng lúc.
  • Chưa liên kết quy trình kiểm thử tự động vào đường ống tích hợp liên tục (CI/CD).

2. Hướng nghiên cứu tiếp:

  • Mở rộng phạm vi tự động hóa kiểm thử cho toàn bộ các chức năng quản trị hệ thống và báo cáo doanh thu.
  • Ứng dụng Selenium Grid để tối ưu hóa thời gian thực thi ca kiểm thử trên môi trường phân tán quy mô lớn.
  • Nghiên cứu tích hợp các công cụ kiểm thử hiệu năng (như JMeter) và kiểm thử bảo mật cho ứng dụng Web.

Giá trị tham khảo

  • Đối tượng thụ hưởng: Sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm, các lập trình viên và kiểm thử viên mới bắt đầu tiếp cận lĩnh vực kiểm thử tự động (Automation Testing).
  • Nội dung tham khảo hữu ích:
    • Chương 1 là tài liệu tổng hợp tốt về 7 nguyên tắc kiểm thử phần mềm, sự khác biệt giữa Selenium RC và Selenium WebDriver cùng cú pháp các câu lệnh WebDriver chuẩn.
    • Chương 2 và Chương 3 cung cấp quy trình mẫu rõ ràng về cách viết đặc tả yêu cầu Use Case kết hợp thiết kế Test Case chi tiết cho một website thương mại điện tử thực tế.
    • Chương 4 là bài học thực nghiệm hữu ích về việc kết nối bộ ba công nghệ Eclipse - Java - TestNG để tạo báo cáo kiểm thử tự động.

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

1. Khóa luận phân tích Selenium gồm những thành phần nào và vai trò của từng thành phần là gì?
Khóa luận chỉ rõ Selenium gồm 4 thành phần: Selenium IDE (tiện ích ghi và phát lại thao tác trên Firefox), Selenium RC (khung kiểm thử qua máy chủ trung gian), Selenium WebDriver (công cụ điều khiển trực tiếp trình duyệt ở mức hệ điều hành) và Selenium Grid (hệ thống điều phối chạy kiểm thử song song trên nhiều máy và trình duyệt khác nhau).

2. Tại sao Selenium WebDriver được lựa chọn thay thế cho Selenium RC trong đề tài?
Theo phân tích của tác giả, Selenium WebDriver tương tác trực tiếp với trình duyệt thông qua API gốc nên có tốc độ nhanh hơn, cấu trúc đơn giản hơn, không phụ thuộc vào máy chủ trung gian như Selenium RC và hỗ trợ xử lý rất tốt các thành phần web động (AJAX).

3. Bốn chức năng nào của website Chuang Bookstore được tác giả lựa chọn để viết mã kiểm thử tự động?
Tác giả lựa chọn 4 chức năng cốt lõi gồm: Đăng ký tài khoản mới, Thêm sản phẩm vào giỏ hàng, Chỉnh sửa giỏ hàng (tăng/giảm/xóa số lượng) và Đặt hàng (thanh toán).

4. Khung công nghệ nào được sử dụng để xây dựng và thực thi kịch bản kiểm thử trong khóa luận?
Khóa luận sử dụng ngôn ngữ lập trình Java, môi trường phát triển tích hợp Eclipse, thư viện Selenium WebDriver và framework TestNG để quản lý, điều phối việc thực thi kịch bản và xuất báo cáo kết quả.

5. Cơ sở dữ liệu của website Chuang Bookstore được cấu trúc gồm những bảng/tập hợp (collections) nào?
Hệ thống sử dụng 7 collections gồm: User, Products, Categories, Orders, DetailOrders, Carts và DetailCart.


Kết luận

Khóa luận tốt nghiệp của sinh viên Trần Thị Diểm My đã hoàn thành việc nghiên cứu có hệ thống về lý thuyết kiểm thử phần mềm và công nghệ kiểm thử tự động Selenium WebDriver. Đề tài đã phân tích thành công các yêu cầu nghiệp vụ của hệ thống website bán sách Chuang Bookstore, xây dựng hệ thống ca kiểm thử chuẩn xác và tự động hóa thành công 4 luồng chức năng quan trọng nhất bằng ngôn ngữ Java và framework TestNG. Kết quả thực nghiệm đạt được là cơ sở thực tế có giá trị tham khảo cao cho sinh viên kỹ thuật phần mềm và kiểm thử viên định hướng phát triển trong lĩnh vực tự động hóa đảm bảo chất lượng phần mềm.