Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh công nghiệp 4.0, việc tiếp cận không gian mạng và chuyển đổi số trong hoạt động kinh doanh bán lẻ diễn ra mạnh mẽ. Khóa luận tốt nghiệp của tác giả Nguyễn Trần Phước Lộc và Ứng Minh Toàn (Khoa Công nghệ Kỹ thuật / Công nghệ Thông tin, Trường Đại học Quốc tế Hồng Bàng) tập trung giải quyết nhu cầu thực tế của mô hình kinh doanh thực phẩm trực tuyến.
Thực trạng khảo sát cho thấy các cửa hàng quy mô vừa và nhỏ, đặc biệt là cửa hàng kinh doanh thực phẩm tươi sống và nhu yếu phẩm, vẫn còn thiếu hụt các nền tảng website chuyên biệt để phục vụ hoạt động bán lẻ. Khách hàng gặp khó khăn khi muốn tra cứu thông tin sản phẩm từ xa, đặt hàng trực tuyến giao tận nơi hoặc tìm kiếm địa chỉ cửa hàng mọi lúc, mọi nơi. Đồng thời, chủ cửa hàng thiếu công cụ tự động hóa để kiểm soát đơn hàng, đối soát thanh toán và theo dõi phản hồi người dùng. Bên cạnh việc xây dựng hệ thống, quá trình kiểm thử phần mềm cũng được đặt ra như một nhiệm vụ trọng tâm nhằm giảm thiểu sai sót vận hành, bảo đảm tính ổn định và tính toàn vẹn dữ liệu trước khi đưa vào khai thác thực tế.
Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể:
- Xây dựng hoàn chỉnh hệ thống website quản lý cửa hàng thực phẩm với đầy đủ các phân hệ chức năng cho người dùng cuối và quản trị viên.
- Thiết kế và thực hiện quy trình kiểm thử hệ thống phần mềm, bao gồm kiểm thử đường dẫn (URL), kiểm thử phản hồi giao thức HTTP, kiểm thử ràng buộc logic và kiểm thử thao tác truy vấn cơ sở dữ liệu.
Phạm vi nghiên cứu của đề tài:
- Đối tượng dữ liệu: Tập trung vào hai nhóm tác nhân chính gồm Quản trị viên (Admin - người có quyền quản lý sản phẩm, xét duyệt đơn hàng, quản lý tài khoản và phản hồi) và Khách hàng (User - người dùng đăng ký, tìm kiếm, đặt hàng, thanh toán và gửi phản hồi).
- Phạm vi xử lý và chức năng: Xử lý các luồng nghiệp vụ mua bán hàng trực tuyến (Shop, Cart, Wishlist, Checkout, Placed Orders) và quản trị hệ thống (Dashboard, Quản lý tài khoản, Quản lý thực phẩm, Duyệt đơn hàng, Quản lý phản hồi).
- Môi trường kỹ thuật: Triển khai trên nền tảng ngôn ngữ PHP, framework Laravel, cơ sở dữ liệu MySQL thông qua công cụ XAMPP phpMyAdmin và kiểm thử tự động với framework PHPUnit.
Cơ sở lý thuyết và phương pháp
Khóa luận áp dụng các nền tảng lý thuyết kỹ thuật phần mềm, công nghệ lập trình web và phương pháp kiểm thử tiêu chuẩn:
-
Kiến trúc và Framework phần mềm:
- Mô hình MVC (Model - View - Controller): Phân tách rõ ràng giữa tầng dữ liệu (Model), tầng giao diện (View sử dụng Blade Template Engine) và tầng điều khiển luồng (Controller).
- Laravel Framework: Sử dụng các thành phần cốt lõi gồm hệ thống định tuyến (Routing), ORM Eloquent, Query Builder, Migrations quản lý lược đồ dữ liệu, cơ chế bảo mật chống tấn công CSRF (Cross-Site Request Forgery) và mã hóa dữ liệu.
- PHPUnit: Framework kiểm thử đơn vị tích hợp trong hệ sinh thái PHP, cung cấp các lớp kiểm thử kế thừa từ
Tests\TestCase cùng các phương thức kiểm tra khẳng định (assertions).
-
Phương pháp nghiên cứu và kỹ thuật kiểm thử:
- Phương pháp phân tích và thiết kế hệ thống: Sử dụng sơ đồ ca sử dụng (Use Case Diagram), bảng đặc tả ca sử dụng chi tiết, sơ đồ lớp (Class Diagram), mô hình thực thể kết hợp (ERD), bảng ràng buộc toàn vẹn (RBTV) và bảng tầm ảnh hưởng (Matrix of Impact).
- Phương pháp kiểm thử phần mềm:
- Kiểm thử tĩnh (Static testing): Đánh giá mã nguồn, tài liệu và cấu trúc thiết kế.
- Kiểm thử động (Dynamic testing): Thực thi mã nguồn với các bộ dữ liệu kiểm thử cụ thể.
- Kiểm thử hộp trắng (White box testing): Kiểm tra các nhánh rẽ điều khiển trong mã nguồn, kiểm thử tính hợp lệ của đường dẫn URL và kiểm tra ràng buộc logic của Controller (kiểm tra trùng lặp email khi đăng ký).
- Kiểm thử hộp đen (Black box testing): Sử dụng kỹ thuật bảng quyết định (Decision Table) để thiết kế ca kiểm thử đăng nhập (Login) và kiểm thử tương tác cơ sở dữ liệu qua các phương thức
assertDatabaseHas() và assertDatabaseMissing().
-
Nguồn dữ liệu: Dữ liệu kiểm thử thực nghiệm trên hệ thống cơ sở dữ liệu cục bộ giả lập qua hệ quản trị MySQL (XAMPP phpMyAdmin), kết hợp các tập dữ liệu mẫu về danh mục thực phẩm, tài khoản người dùng, đơn đặt hàng và tin nhắn phản hồi.
Thiết kế và triển khai
Hệ thống website quản lý cửa hàng thực phẩm (được đặt tên mẫu là Genshin Store) được thiết kế và xây dựng với kiến trúc hướng đối tượng, tích hợp cơ sở dữ liệu quan hệ và cơ chế kiểm thử tự động.
1. Kiến trúc cơ sở dữ liệu
Hệ thống bao gồm 6 bảng dữ liệu quan hệ chính với cấu trúc thuộc tính và ràng buộc khóa như sau:
| Tên bảng |
Khóa chính (PK) |
Khóa ngoại (FK) |
Các thuộc tính tiêu biểu |
Mục đích sử dụng |
| User |
id (INCREMENT) |
Không |
name, email, password, user_type, image |
Lưu trữ thông tin tài khoản người dùng và phân quyền (admin/user). |
| Products |
id (INCREMENT) |
Không |
name, category, details, price, image |
Quản lý danh mục, giá cả và thông tin chi tiết của thực phẩm. |
| Cart |
id (INCREMENT) |
user_id, pid |
name, price, quantity, image |
Lưu trữ trạng thái giỏ hàng theo phiên làm việc của từng người dùng. |
| Wishlist |
id_cart / id (INCREMENT) |
user_id, pid |
name, price, image |
Danh sách các sản phẩm yêu thích được người dùng lưu lại. |
| Order |
id (INT) |
user_id |
name, number, email, method, address, total_products, total_price, placed_on, payment_status |
Quản lý hóa đơn mua hàng, địa chỉ giao nhận và trạng thái thanh toán. |
| Message |
id (INCREMENT) |
user_id |
name, email, number, message |
Lưu trữ nội dung liên hệ và phản hồi của người dùng gửi tới ban quản trị. |
Hệ thống thiết lập các quy tắc toàn vẹn dữ liệu nghiêm ngặt:
- Ràng buộc khóa ngoại giữa
Cart.user_id, Wishlist.user_id, Order.user_id, Message.user_id với User.id.
- Ràng buộc khóa ngoại giữa
Cart.pid, Wishlist.pid với Products.id.
- Bảng tầm ảnh hưởng quy định các thao tác thêm, xóa, sửa trên từng quan hệ nhằm bảo đảm tính nhất quán dữ liệu (ví dụ: thao tác xóa trên bảng
User hoặc Products sẽ kích hoạt kiểm tra phụ thuộc tồn tại trên Cart, Wishlist và Order).
2. Công nghệ và môi trường triển khai
- Công cụ lập trình và quản trị: Visual Studio Code, XAMPP (Apache, MySQL, phpMyAdmin).
- Ngôn ngữ và nền tảng: PHP phiên bản 8.4, HTML, CSS, JavaScript, Laravel Framework.
- Framework kiểm thử: PHPUnit 10.1 chạy trên môi trường dòng lệnh (
./vendor/bin/phpunit, php artisan test).
- Cấu trúc thư mục kiểm thử: Phân tách thành hai thư mục tiêu chuẩn
tests/Unit (kiểm thử đơn vị các lớp Model, Controller) và tests/Feature (kiểm thử tích hợp, kiểm thử API, kiểm thử HTTP Request và phản hồi giao diện).
Nội dung chính theo từng chương
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG WEBSITE
Chương này trình bày lý do lựa chọn đề tài, mục tiêu tổng quát và ý nghĩa thực tiễn đối với xã hội và cá nhân người thực hiện. Về mặt xã hội, hệ thống hướng tới tạo lập môi trường kinh doanh minh bạch, cung cấp dịch vụ đặt hàng và thanh toán trực tuyến thuận tiện cho khách hàng. Về mặt học thuật và cá nhân, đồ án giúp sinh viên nắm vững kỹ thuật phát triển ứng dụng web trên Laravel và kỹ năng kiểm thử phần mềm bằng PHPUnit. Chương 1 đồng thời phân tích các đặc tính kỹ thuật của Laravel (cú pháp, kiến trúc MVC, Eloquent ORM, Query Builder, Migrations, Blade Template, hệ thống bảo mật) và giới thiệu tổng quan về vai trò của PHPUnit trong việc kiểm tra các phương thức get(), post(), assertStatus(), assertViewIs().
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ XÂY DỰNG HỆ THỐNG
Chương 2 là phân hệ trọng tâm về kỹ thuật phân tích và thiết kế, bao gồm các nội dung chính:
- Đánh giá hiện trạng và thu thập yêu cầu: Trình bày bảng khảo sát yêu cầu hệ thống (Bảng 2-1) xác định mô hình kinh doanh "một nhà cung cấp, nhiều đối tượng khách hàng", cơ chế quản lý giỏ hàng bằng session liên kết
user_id, quy trình chuyển đổi sản phẩm từ Wishlist sang Cart, và quy trình xét duyệt đơn hàng của Admin.
- Yêu cầu chức năng và phi chức năng: Xác định chi tiết 10 nhóm yêu cầu chức năng (Register, Login, Account Information, Search, Shop, Wishlist, Cart, Checkout, Order, Contact, Admin Manager) và 7 yêu cầu phi chức năng (Hiệu suất, Độ tin cậy, Bảo mật, Khả năng mở rộng, Tương thích, Khả năng bảo trì, Tính khả dụng).
- Thiết kế Use Case: Xây dựng sơ đồ Use Case tổng thể và 13 bảng đặc tả ca sử dụng chi tiết (từ Bảng 2-4 đến Bảng 2-16) cho toàn bộ các tác vụ của Khách hàng và Quản trị viên.
- Thiết kế dữ liệu và giao diện: Xây dựng sơ đồ Class Diagram (Bảng 2-17 mô tả danh từ), mô hình ERD, 6 bảng dữ liệu chi tiết, bảng ràng buộc toàn vẹn và bảng tầm ảnh hưởng (Bảng 2-24, 2-25, 2-26). Thiết kế chi tiết luồng website và giao diện người dùng qua 20 cặp sơ đồ phác thảo wireframe và ảnh chụp màn hình thực tế (từ Hình 2-5 đến Hình 2-42), bao gồm trang chủ, đăng ký, đăng nhập, thông tin tài khoản, cửa hàng thực phẩm, giỏ hàng, danh sách yêu thích, tìm kiếm, xem chi tiết món ăn, hóa đơn, thanh toán, liên hệ, cùng các màn hình quản trị (Dashboard, Quản lý thực phẩm, Quản lý đơn hàng, Quản lý tài khoản, Quản lý tin nhắn).
CHƯƠNG 3: KIỂM THỬ HỆ THỐNG
Chương 3 tập trung vào lý thuyết và thực hành kiểm thử phần mềm trên ứng dụng đã xây dựng:
- Cơ sở lý thuyết kiểm thử: Khái quát các định nghĩa kiểm thử tĩnh, kiểm thử động; 4 cấp độ kiểm thử (Unit Testing, Integration Testing, System Testing, Acceptance Testing); và chu trình 6 giai đoạn kiểm thử phần mềm (Requirements Analysis, Test Planning, Test Case Development, Environment Setup, Test Execution, Test Cycle Closure).
- Thực hành kiểm thử trong Laravel:
- Thiết lập môi trường PHPUnit 10.1 và cấu hình tệp
phpunit.xml. Hướng dẫn tạo tệp test bằng lệnh php artisan make:test UserTest và php artisan make:test UserTest --unit.
- Kiểm thử hộp trắng: Thực hiện kiểm thử định tuyến URL (kiểm tra mã phản hồi HTTP 200 khi URL tồn tại và mã lỗi 404 khi URL chưa được định nghĩa trong Router); kiểm tra ràng buộc logic của controller khi đăng ký tài khoản (xác minh hàm xử lý không cho phép trùng lặp tên/email).
- Kiểm thử hộp đen: Xây dựng bảng quyết định kiểm thử chức năng Đăng nhập (Bảng 3-1) gồm 5 ca kiểm thử đại diện cho các điều kiện đầu vào hợp lệ và không hợp lệ (mật khẩu sai, mật khẩu trống, tài khoản không tồn tại, email trống). Thực hiện kiểm thử cơ sở dữ liệu thông qua các phương thức
$this->assertDatabaseHas() và $this->assertDatabaseMissing(), đồng thời kiểm tra tính chính xác của các thao tác truy vấn dữ liệu (select, insert, update, delete) từ Controller.
- Kiểm thử tự động và đánh giá: Tổng quan về các công cụ hỗ trợ như Laravel Dusk, hệ thống tích hợp liên tục (CI: Jenkins, Travis CI, GitLab CI/CD), Laravel Homestead, Laravel Valet. Phân tích các ưu điểm (ổn định, tin cậy, tiết kiệm thời gian, tự động hóa) và hạn chế (đòi hỏi kỹ năng, chi phí bảo trì, rủi ro bỏ sót lỗi logic ngầm của kiểm thử hộp đen, không thay thế hoàn toàn kiểm thử thủ công).
CHƯƠNG 4: KẾT LUẬN
Tác giả tổng kết các kết quả đạt được về xây dựng giao diện, thiết kế cơ sở dữ liệu và xử lý các chức năng cốt lõi. Báo cáo thẳng thắn chỉ ra các hạn chế còn tồn tại về việc chưa tối ưu hóa sâu các luồng xử lý dữ liệu phức tạp do hạn chế thời gian và xuất phát điểm ban đầu của nhóm nghiên cứu, đồng thời đề xuất hướng nghiên cứu tiếp theo để hoàn thiện hệ thống trong tương lai.
Kết quả và đóng góp
Khóa luận đã ghi nhận các kết quả cụ thể thông qua hệ thống thực nghiệm và bộ dữ liệu kiểm thử:
Hạn chế và hướng nghiên cứu tiếp
Khóa luận tự nhận diện các điểm hạn chế trong quá trình thực hiện:
- Kiến thức xử lý luồng website: Các luồng xử lý dữ liệu phức tạp giữa các phân hệ chưa được nghiên cứu chuyên sâu do rào cản về thời gian nghiên cứu và chuyên môn ban đầu của nhóm sinh viên vốn tập trung vào phát triển ứng dụng.
- Phạm vi kiểm thử tự động: Mới chỉ tập trung kiểm thử các chức năng cơ bản (đăng nhập, định tuyến URL, kiểm tra trùng lặp dữ liệu, thao tác CSDL đơn giản); chưa triển khai kiểm thử tự động toàn diện cho giao diện người dùng cấp cao (End-to-End Testing qua Laravel Dusk) hoặc tích hợp đường ống CI/CD tự động trong môi trường triển khai thực tế.
Hướng phát triển tiếp theo được tác giả xác định:
- Tiếp tục nghiên cứu và hoàn thiện toàn bộ các luồng xử lý dữ liệu nâng cao trên website.
- Tối ưu hóa hiệu năng hệ thống và mở rộng các bộ kịch bản kiểm thử tự động cho toàn bộ các ca sử dụng còn lại của đồ án.
Giá trị tham khảo
Báo cáo khóa luận mang lại giá trị tham khảo hữu ích cho các đối tượng:
- Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Cung cấp tài liệu mẫu về cấu trúc một đồ án tốt nghiệp chuyên ngành Kiểm thử phần mềm và Phát triển web, từ khâu khảo sát yêu cầu, vẽ sơ đồ UML (Use Case, Class Diagram), thiết kế cơ sở dữ liệu (ERD, Bảng tầm ảnh hưởng) đến khâu viết mã kiểm thử.
- Người nghiên cứu và lập trình viên Laravel / PHPUnit: Cung cấp hướng dẫn thực hành cụ thể về cách cấu hình tệp
phpunit.xml, cách phân chia thư mục Unit Test và Feature Test, cùng cú pháp viết các ca kiểm thử hộp trắng và hộp đen cho các tác vụ URL, Controller validation và Database assertions.
Câu hỏi thường gặp
1. Hệ thống giải quyết bài toán phân loại và lưu trữ giỏ hàng (Cart) của từng khách hàng như thế nào?
Hệ thống sử dụng cơ chế Session của Laravel. Khi khách hàng đăng ký tài khoản, hệ thống cấp một mã định danh người dùng (user_id / uid). Sau khi đăng nhập thành công, uid này được gán vào session hiện hành để liên kết dữ liệu trong bảng Cart và Wishlist, giúp hệ thống cô lập và hiển thị chính xác các mặt hàng của từng khách hàng riêng biệt.
2. Quy trình luân chuyển dữ liệu giữa Danh sách yêu thích (Wishlist) và Giỏ hàng (Cart) diễn ra như thế nào?
Danh sách mong muốn đóng vai trò như một danh sách ghi chú tạm thời. Khi người dùng chọn chuyển một sản phẩm từ Wishlist sang giỏ hàng, hệ thống sẽ thực hiện đồng thời hai thao tác: chèn (insert) bản ghi sản phẩm đó vào bảng Cart và xóa (delete) bản ghi tương ứng khỏi bảng Wishlist.
3. Bảng quyết định kiểm thử chức năng Đăng nhập (Login) trong đồ án được thiết kế với những trường hợp nào?
Bảng quyết định kiểm thử đăng nhập (Bảng 3-1) gồm 5 ca kiểm thử:
- Ca 1: Email đúng, mật khẩu đúng $\rightarrow$ Đăng nhập thành công, chuyển hướng đến trang chủ (
Adhome / Trang chính).
- Ca 2: Email đúng, mật khẩu sai $\rightarrow$ Báo lỗi mật khẩu không chính xác.
- Ca 3: Email đúng, mật khẩu để trống $\rightarrow$ Báo lỗi mật khẩu không được để trống.
- Ca 4: Email không tồn tại trong hệ thống $\rightarrow$ Báo lỗi tài khoản không tồn tại.
- Ca 5: Tên đăng nhập/email để trống $\rightarrow$ Báo lỗi tên đăng nhập không được để trống.
4. Hai phương thức kiểm thử cơ sở dữ liệu cơ bản được tác giả sử dụng trong Laravel Testing Framework là gì?
Tác giả sử dụng phương thức $this->assertDatabaseHas($table, $data) để kiểm tra và khẳng định sự tồn tại của một bản ghi dữ liệu cụ thể trong bảng CSDL, và phương thức $this->assertDatabaseMissing($table, $data) để khẳng định rằng một bản ghi dữ liệu không tồn tại trong bảng CSDL.
5. Vì sao đồ án thiết kế quy trình bắt buộc Quản trị viên phải xét duyệt đơn hàng (Orders)?
Theo kết quả khảo sát và phân tích yêu cầu tại Bảng 2-1, việc thiết lập bước xét duyệt đơn hàng của Admin nhằm đối soát tính xác thực của các giao dịch thanh toán trực tuyến qua bên thứ ba và kiểm soát các đơn hàng thanh toán tiền mặt khi giao hàng (Cash on Delivery), tránh các trường hợp giả mạo thanh toán hoặc đơn hàng chưa thanh toán nhưng đã xuất kho.
Kết luận
Khóa luận tốt nghiệp của sinh viên Nguyễn Trần Phước Lộc và Ứng Minh Toàn đã hoàn thành việc xây dựng ứng dụng website quản lý cửa hàng thực phẩm trên nền tảng Laravel Framework và cơ sở dữ liệu MySQL. Đề tài thể hiện rõ tính học thuật và kỹ thuật thông qua việc phân tích hệ thống bài bản (Use Case, Class Diagram, ERD, Ràng buộc toàn vẹn) kết hợp với triển khai kiểm thử phần mềm bằng framework PHPUnit 10.1. Mặc dù còn một số hạn chế về độ sâu trong xử lý luồng dữ liệu nâng cao, đồ án là tài liệu tham khảo thực tiễn có giá trị cho sinh viên chuyên ngành Công nghệ Thông tin và Kỹ thuật Phần mềm trong việc phát triển và kiểm thử ứng dụng web.