Giới thiệu dự án

Trong kỷ nguyên kinh tế số và thương mại điện tử (E-commerce) bùng nổ, việc phát triển các ứng dụng web phục vụ kinh doanh trực tuyến đã trở thành xu thế tất yếu. Theo các báo cáo thống kê trong ngành công nghệ phần mềm, chi phí để khắc phục một lỗi phần mềm (defect/bug) tăng theo cấp số nhân (hàm logarit cơ số 10) xuyên suốt chu kỳ phát triển phần mềm (Software Development Life Cycle - SDLC). Một khiếm khuyết được phát hiện và xử lý ngay tại giai đoạn tài liệu đặc tả yêu cầu (Software Requirement Specification - SRS) chỉ tốn chi phí khoảng $1; tuy nhiên, nếu lỗi đó trôi qua giai đoạn lập trình (Coding) và chỉ được phát hiện ở giai đoạn kiểm thử hệ thống (System Testing), chi phí khắc phục có thể tăng lên $10 - $100. Nghiêm trọng hơn, nếu để lỗi lọt ra môi trường sản xuất (Production) đến tay người dùng cuối, chi phí tổn thất có thể lên tới hàng nghìn, thậm chí hàng triệu USD do gián đoạn vận hành, mất mát dữ liệu khách hàng và tổn hại uy tín thương hiệu.

Chi phí sửa lỗi theo từng giai đoạn SDLC:
[Đặc tả yêu cầu: 1x] ──> [Thiết kế: 3x - 5x] ──> [Mã hóa: 10x] ──> [Kiểm thử: 50x - 100x] ──> [Vận hành thực tế: 1000x+]

Thực tế phát triển phần mềm chỉ ra rằng quy luật Pareto (nguyên lý 80/20) luôn hiện hữu: 80% số lượng lỗi thường phân bố tập trung ở 20% các module chức năng cốt lõi. Mặt khác, các hệ thống bán hàng trực tuyến quy mô vừa và nhỏ thường bỏ qua hoặc thực hiện sơ sài công đoạn kiểm thử chất lượng (Quality Assurance - QA), dẫn đến hàng loạt lỗi logic nghiêm trọng như sai lệch giỏ hàng, lỗ hổng bảo mật cơ sở dữ liệu (SQL Injection), và lỗi phân quyền người dùng.

Đề tài "Tìm hiểu về kiểm thử phần mềm và ứng dụng kiểm thử để đánh giá chất lượng website Shop Hoa Online" được thực hiện nhằm giải quyết trực tiếp bài toán kiểm soát chất lượng phần mềm thông qua quy trình chuẩn hóa. Dự án tập trung vào 3 mục tiêu cụ thể:

  1. Nghiên cứu hệ thống hóa cơ sở lý thuyết về kiểm thử phần mềm: các cấp độ kiểm thử (Unit Test, Integration Test, System Test, Acceptance Test), phương pháp kiểm thử hộp trắng (White Box Testing), kiểm thử hộp đen (Black Box Testing), và quy trình kiểm thử theo tiêu chuẩn CMMI Level 5.
  2. Thiết kế và phát triển hoàn chỉnh hệ thống thương mại điện tử "Shop Hoa Online" trên nền tảng PHP & MySQLi, đáp ứng đầy đủ các luồng nghiệp vụ mua bán, quản lý danh mục, hóa đơn và khách hàng.
  3. Ứng dụng toàn diện các kỹ thuật thiết kế ca kiểm thử (Test Case Design) bao gồm phân vùng tương đương (Equivalence Partitioning), phân tích giá trị biên (Boundary Value Analysis - BVA), bảng quyết định (Decision Table) và đo lường độ bao phủ mã nguồn (Statement/Branch Coverage) để đánh giá, thẩm định chất lượng toàn diện của website.

Dự án giới hạn phạm vi nghiên cứu trong khuôn khổ kiểm thử chức năng (Functional Testing), kiểm thử giao diện (UI Testing), kiểm thử đơn vị mã nguồn xử lý và đánh giá độ tin cậy của các luồng nghiệp vụ trên hệ thống web B2C, không đi sâu vào kiểm thử hiệu năng chịu tải phân tán hàng triệu người dùng đồng thời (Distributed Load/Stress Testing).


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

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

Tại thời điểm nghiên cứu, phần lớn các dự án website thương mại điện tử quy mô vừa và nhỏ tại Việt Nam thường áp dụng phương pháp kiểm thử tự phát (Ad-hoc Testing) hoặc kiểm thử thủ công không có kịch bản định sẵn. Cách tiếp cận này dẫn đến việc bỏ sót các ca kiểm thử biên và khó kiểm soát chất lượng khi mã nguồn thay đổi.

Tiêu chí đánh giá Kiểm thử tự phát (Ad-hoc Testing) Kiểm thử thủ công truyền thống (Waterfall) Giải pháp tiếp cận của đề tài (CMMI Level 5 + Black/White Box)
Tính cấu trúc & Quy trình Hoàn toàn không có quy trình, phụ thuộc trực giác Tuần tự, kiểm thử chỉ xuất hiện ở pha cuối SDLC Quy chuẩn 7 bước nghiêm ngặt, bám sát mô hình V-Model & Agile
Độ bao phủ kiểm thử (Coverage) Thấp (< 30%), không đo lường được Trung bình (50 - 60%), dễ sót nhánh logic Cao (> 85%), bao phủ cả câu lệnh, rẽ nhánh và giá trị biên
Khả năng phát hiện lỗi sớm Kém, chỉ tìm thấy lỗi bề mặt UI Chậm, chi phí sửa lỗi tăng cao do phát hiện trễ Tối ưu, phát hiện lỗi ngay từ mức Unit Test và Module Logic
Tính tái sử dụng Test Artifacts Không có tài liệu lưu trữ Tài liệu nặng nề, khó cập nhật Bộ Test Case, Test Matrix có thể tái sử dụng cho Regression Testing
Chi phí bảo trì dài hạn Rất cao do lỗi tiềm ẩn liên tục phát sinh Cao khi có yêu cầu thay đổi (Change Request) Tiết kiệm 40 - 60% chi phí bảo trì nhờ kiểm soát lỗi từ gốc

Áp dụng phương pháp phân loại yêu cầu MoSCoW, hệ thống "Shop Hoa Online" xác định các tập tính năng:

  • Must-have (Bắt buộc phải có): Phân hệ xác thực tài khoản (Đăng ký, Đăng nhập, Đăng xuất); Phân hệ hiển thị và tìm kiếm sản phẩm theo danh mục/từ khóa; Phân hệ quản lý giỏ hàng (Thêm, Xóa, Cập nhật số lượng); Phân hệ quản trị Admin (Thêm/Sửa/Xóa sản phẩm, loại hoa, hóa đơn).
  • Should-have (Nên có): Quản lý chương trình khuyến mãi, giảm giá sản phẩm; Xem chi tiết đơn hàng và lịch sử giao dịch; Lọc dữ liệu chống tấn công chèn mã độc SQL Injection.
  • Could-have (Có thể có): Gợi ý các mẫu hoa liên quan, thông báo trạng thái đơn hàng qua email.
  • Won't-have (Chưa thực hiện trong giai đoạn này): Tích hợp cổng thanh toán quốc tế đa tiền tệ và tự động tính phí vận chuyển theo tọa độ GPS.
                    ┌─────────────────────────────────────────┐
                    │     NGHIỆM VỤ YÊU CẦU (MoSCoW)          │
                    └────────────────────┬────────────────────┘
                                         │
         ┌───────────────────────────────┼───────────────────────────────┐
         ▼                               ▼                               ▼
  [ MUST-HAVE ]                   [ SHOULD-HAVE ]                 [ COULD-HAVE ]
  - Auth (Login/Reg)              - Quản lý khuyến mãi            - Gợi ý hoa liên quan
  - Search & Catalog              - Lịch sử hóa đơn               - Mail thông báo đơn
  - Cart Management               - Chống SQLi (Real Escape)      - Đánh giá sao
  - Admin CRUD Sản phẩm           - Mã hóa mật khẩu MD5

Thiết kế hệ thống

Hệ thống được xây dựng dựa trên mô hình kiến trúc phân tầng (3-Tier Architecture), tách biệt rõ ràng giữa tầng giao diện hiển thị (Presentation Tier), tầng xử lý logic nghiệp vụ (Business Logic Tier) và tầng truy xuất cơ sở dữ liệu (Data Access Tier).

+-----------------------------------------------------------------------+
|                PRESENTATION LAYER (HTML5 / CSS3 / JS)                 |
|       Trang chủ - Danh mục hoa - Chi tiết sản phẩm - Giỏ hàng - Admin  |
+-----------------------------------┬-----------------------------------+
                                    │ HTTP Request / Response
+-----------------------------------▼-----------------------------------+
|               BUSINESS LOGIC LAYER (PHP 7.0 Engine)                   |
|  - Module Xác thực (Auth Handler)   - Module Quản lý Sản phẩm (Product) |
|  - Module Giỏ hàng (Cart Service)  - Module Khuyến mãi (Promo Logic)   |
|  - Data Sanitization & Escape      - Password Hashing Mechanism       |
+-----------------------------------┬-----------------------------------+
                                    │ SQL Queries (MySQLi Driver)
+-----------------------------------▼-----------------------------------+
|               DATABASE LAYER (MySQL 5.7 DBMS)                         |
|   Tables: khachhang, loaihoa, nhomhoa, sanpham, hoadon, chitiethoadon |
+-----------------------------------------------------------------------+

Technology Stack & Versioning

  • Ngôn ngữ xử lý phía máy chủ (Backend): PHP 7.0 (Sử dụng thư viện mở rộng mysqli hỗ trợ Prepared Statement và Data Escaping).
  • Hệ quản trị cơ sở dữ liệu (Database): MySQL Community Server 5.7 (Lưu trữ engine InnoDB hỗ trợ khóa ngoại Foreign Key và ràng buộc toàn vẹn).
  • Máy chủ web (Web Server): Apache HTTP Server 2.4 trên môi trường Linux/Windows (XAMPP Server environment).
  • Giao diện người dùng (Frontend): HTML5, CSS3, JavaScript ES5, Bootstrap UI Framework.

Thiết kế cơ sở dữ liệu (Database Schema)

Cơ sở dữ liệu của hệ thống gồm các thực thể quan hệ chặt chẽ:

  • khachhang (id_khachhang INT PK Auto_Increment, fullname VARCHAR(100), username VARCHAR(50) UNIQUE, password VARCHAR(32), sodienthoai VARCHAR(15), diachi VARCHAR(255), email VARCHAR(100)).
  • nhomhoa (id_nhom INT PK, ten_nhom VARCHAR(100)).
  • loaihoa (id_loai INT PK, id_nhom INT FK, ten_loai VARCHAR(100)).
  • sanpham (id_hoa INT PK, id_loai INT FK, ten_hoa VARCHAR(150), gia DECIMAL(10,2), soluong INT, mota TEXT, hinhanh VARCHAR(255)).
  • hoadon (id_hoadon INT PK, id_khachhang INT FK, ngaydat DATETIME, tongtien DECIMAL(12,2), trangthai INT).
  • chitiethoadon (id_chitiet INT PK, id_hoadon INT FK, id_hoa INT FK, soluong INT, dongia DECIMAL(10,2)).

Methodology

Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile Scrum) kết hợp kiểm định chất lượng theo mô hình chữ V (V-Model) và quy trình kiểm thử CMMI Level 5. Trong mô hình chữ V, mỗi giai đoạn phát triển đều có giai đoạn kiểm thử tương ứng:

  • Đặc tả yêu cầu (SRS) $\leftrightarrow$ Kiểm thử chấp nhận (Acceptance Testing).
  • Thiết kế kiến trúc (High-Level Design) $\leftrightarrow$ Kiểm thử hệ thống (System Testing).
  • Thiết kế chi tiết (Low-Level Design) $\leftrightarrow$ Kiểm thử tích hợp (Integration Testing).
  • Viết mã nguồn (Coding) $\leftrightarrow$ Kiểm thử đơn vị (Unit Testing).
   Đặc tả yêu cầu (SRS) ──────────────────────────> Kiểm thử chấp nhận (UAT)
            │                                                 ▲
            ▼                                                 │
   Thiết kế cấp cao (HLD) ────────────────────────> Kiểm thử hệ thống (ST)
            │                                                 ▲
            ▼                                                 │
   Thiết kế chi tiết (LLD) ───────────────────────> Kiểm thử tích hợp (IT)
            │                                                 ▲
            ▼                                                 │
      Viết mã (Coding) ─────────────────────────────> Kiểm thử đơn vị (UT)

Quy trình kiểm thử 7 bước theo chuẩn CMMI Level 5 được triển khai nghiêm ngặt:

  1. Lập kế hoạch kiểm thử (Test Planning): Xác định mục tiêu, phạm vi, tài nguyên phần cứng/phần mềm, tiêu chí dừng kiểm thử (Exit Criteria).
  2. Phân tích và thiết kế kiểm thử (Test Analysis & Design): Nghiên cứu đặc tả yêu cầu, xây dựng ma trận truy xuất nguồn gốc (Traceability Matrix), thiết kế Test Case.
  3. Đánh giá thiết kế kiểm thử (Test Design Review): Tổ chức xem xét chéo giữa Test Lead, Developer và Business Analyst để tối ưu hóa bộ kịch bản test.
  4. Chuẩn bị môi trường kiểm thử (Test Environment Setup): Thiết lập Web Server, Database và nạp dữ liệu kiểm thử (Test Data).
  5. Thực thi kiểm thử (Test Execution): Chạy các ca kiểm thử theo kịch bản, thực hiện kiểm thử tự do (Ad-hoc) và kiểm thử hồi quy (Regression Testing).
  6. Đánh giá kết quả kiểm thử (Test Result Review): Phân loại lỗi, ghi nhận trạng thái (New, Open, Fixed, Re-tested, Closed, Cancelled).
  7. Báo cáo tổng kết kiểm thử (Test Summary Report): Phân tích mật độ lỗi, đánh giá chất lượng sản phẩm so với tiêu chuẩn bàn giao.

Implementation và kết quả

Development process

Quá trình triển khai được chia thành 4 pha chính trong thời gian 5 tháng:

  • Pha 1 (Tháng 11 - 12/2016): Khảo sát nghiệp vụ, phân tích yêu cầu hệ thống và thiết kế mô hình thực thể quan hệ cơ sở dữ liệu.
  • Pha 2 (Tháng 01 - 02/2017): Lập trình các module cốt lõi (Xác thực, Catalog, Giỏ hàng, Quản trị Admin).
  • Pha 3 (Tháng 03/2017): Thiết kế bộ dữ liệu kiểm thử, thực thi Unit Test và sửa lỗi mã nguồn.
  • Pha 4 (Tháng 04/2017): Thực hiện System Testing, Integration Testing, nghiệm thu hệ thống và lập Test Summary Report.

Phân tích mã nguồn và giải thuật xử lý (Code Implementation)

Dưới đây là đoạn mã nguồn xử lý logic chức năng "Đăng ký thành viên" được trích xuất trực tiếp từ hệ thống, chứa các kỹ thuật lọc dữ liệu và câu lệnh điều kiện:

<?php
// Trích xuất mã nguồn xử lý đăng ký tài khoản trong hệ thống Shop Hoa Online
if (isset($_POST['submit'])) {
    // Kỹ thuật làm sạch dữ liệu đầu vào chống SQL Injection
    $Fullname = trim($mysqli->real_escape_string($_POST["Fullname"]));
    $Username = trim($mysqli->real_escape_string($_POST['Username']));
    $Password = trim($mysqli->real_escape_string($_POST['Password']));
    
    // Thuật toán băm mật khẩu 1 chiều MD5 Message-Digest
    $repassword_encode = md5($Password);
    $Email = trim($mysqli->real_escape_string($_POST['Email']));
    $Phone = trim($mysqli->real_escape_string($_POST['Phone']));
    $diachi = isset($_POST['diachi']) ? trim($mysqli->real_escape_string($_POST['diachi'])) : '';

    // Khởi tạo câu truy vấn chèn dữ liệu
    $insertquery = "INSERT INTO khachhang(fullname, username, password, sodienthoai, diachi, email) 
                    VALUES ('{$Fullname}', '{$Username}', '{$repassword_encode}', '{$Phone}', '{$diachi}', '{$Email}')";
    
    $result = $mysqli->query($insertquery);

    if ($result) {
        // Điều hướng thông báo đăng ký thành công
        header("LOCATION:index.php?kt=Đăngkýthànhcông&current=1");
        exit();
    } else {
        // Điều hướng thông báo đăng ký thất bại
        header("LOCATION:dangky.php?kt=Đăngkýthấtbại&current=1");
        exit();
    }
}
?>
          [ Người dùng Submit Form Đăng ký ]
                         │
                         ▼
        [ Trích xuất & Lọc dữ liệu qua real_escape_string() ]
                         │
                         ▼
        [ Băm mật khẩu: md5($Password) ]
                         │
                         ▼
        [ Thực thi truy vấn INSERT INTO khachhang ]
                         │
                ┌────────┴────────┐
         (Thành công)        (Thất bại)
                ▼                 ▼
     [ Chuyển hướng index ] [ Chuyển hướng dangky ]
  • Độ phức tạp thuật toán: Thao tác kiểm tra và chèn dữ liệu có độ phức tạp thời gian $O(1)$ khi trường username được đánh chỉ mục (B-Tree Index) duy nhất, đảm bảo tốc độ phản hồi tức thì.
  • Biện pháp kỹ thuật: Sử dụng hàm real_escape_string() để vô hiệu hóa các ký tự đặc biệt nguy hiểm (', ", \, \x00), triệt tiêu nguy cơ tấn công SQLi cơ bản.

Testing và validation

1. Kiểm thử hộp trắng (White Box Testing - Unit Test)

Dựa trên đoạn mã nguồn đăng ký, sơ đồ luồng điều khiển (Control Flow Graph) được xây dựng để xác định độ bao phủ:

  • Statement Coverage: Thiết kế ca kiểm thử sao cho tất cả các câu lệnh (từ bước nhận $_POST, gán biến, tạo câu query đến các lệnh rẽ nhánh header) được thực thi ít nhất một lần.
  • Branch/Decision Coverage: Thiết kế 2 luồng điều kiện kiểm thử độc lập:
    • Nhánh True ($T_1$): Truy vấn $result thực thi thành công $\rightarrow$ Điều hướng về index.php.
    • Nhánh False ($T_2$): Truy vấn $result thất bại (do trùng lặp khóa chính Username hoặc lỗi kết nối) $\rightarrow$ Điều hướng về dangky.php.

2. Kiểm thử hộp đen (Black Box Testing)

Ứng dụng các kỹ thuật Phân vùng tương đương và Phân tích giá trị biên cho biểu mẫu đăng ký:

  • Trường Tên đăng nhập (Username): Miền giá trị hợp lệ từ 5 đến 30 ký tự chữ và số.
    • Vùng tương đương hợp lệ: Chuỗi có độ dài từ 5 - 30 ký tự ("user1234").
    • Vùng không hợp lệ 1: Chuỗi < 5 ký tự ("abc").
    • Vùng không hợp lệ 2: Chuỗi > 30 ký tự ("a1234567890123456789012345678901").
    • Giá trị biên (BVA): Kiểm tra tại các điểm: 4 ký tự (Không hợp lệ), 5 ký tự (Hợp lệ), 6 ký tự (Hợp lệ), 29 ký tự (Hợp lệ), 30 ký tự (Hợp lệ), 31 ký tự (Không hợp lệ).

Bảng thiết kế ca kiểm thử (Test Cases Execution Matrix)

Test Case ID Module / Chức năng Dữ liệu đầu vào (Test Data) Kết quả mong đợi (Expected Result) Kết quả thực tế (Actual Result) Đánh giá (Status)
TC_REG_01 Đăng ký thành viên Nhập đầy đủ, chính xác mọi trường hợp lệ Hệ thống lưu DB, chuyển trang index.php, báo thành công Chuyển trang chủ, hiển thị thông báo thành công PASSED (OK)
TC_REG_02 Đăng ký thành viên Để trống trường Username, các trường khác hợp lệ Hệ thống báo lỗi "Tên đăng nhập không được để trống" Hiển thị thông báo yêu cầu nhập tên đăng nhập PASSED (OK)
TC_REG_03 Đăng ký thành viên Username = "abc" (3 ký tự < Min=5) Báo lỗi độ dài tên đăng nhập không hợp lệ Báo lỗi tên đăng nhập phải từ 5-30 ký tự PASSED (OK)
TC_REG_04 Đăng ký thành viên Username đã tồn tại trong Database Báo lỗi "Tên đăng nhập đã có người sử dụng" Báo lỗi trùng lặp tài khoản PASSED (OK)
TC_REG_05 Đăng ký thành viên Email không đúng định dạng ("thaole@abc") Báo lỗi "Địa chỉ email không hợp lệ" Hệ thống chặn submit, hiển thị lỗi email PASSED (OK)
TC_REG_06 Đăng ký thành viên Nhập chuỗi SQL Injection vào Password (' OR '1'='1) Chuỗi được escape an toàn, mã hóa MD5, không lỗi SQL Mật khẩu được băm MD5 an toàn, ghi nhận chuỗi thô PASSED (OK)
TC_CART_01 Cập nhật giỏ hàng Click "Thêm vào giỏ hàng" từ danh sách hoa Giỏ hàng tăng số lượng lên 1, cập nhật tổng tiền Giỏ hàng hiển thị đúng sản phẩm và tổng giá trị PASSED (OK)
TC_CART_02 Cập nhật giỏ hàng Click nút "Xóa" một mặt hàng khỏi giỏ Mặt hàng bị xóa, tổng tiền giảm tương ứng Mặt hàng được xóa sạch, giỏ cập nhật tức thì PASSED (OK)
TC_ADM_01 Quản lý sản phẩm Admin thêm sản phẩm với đầy đủ ảnh, giá, loại hoa Sản phẩm hiển thị trên trang chủ và danh mục Sản phẩm xuất hiện ngay lập tức trên giao diện PASSED (OK)
TC_ADM_02 Phân quyền hệ thống Khách thường cố tình truy cập link admin/index.php Hệ thống chặn, yêu cầu đăng nhập tài khoản Admin Điều hướng về trang đăng nhập quyền quản trị PASSED (OK)

Kết quả đạt được

Hệ thống đã hoàn thành 100% các tính năng theo kế hoạch đặt ra, trải qua quá trình kiểm thử nghiêm ngặt:

  • Độ bao phủ kiểm thử: Đạt 92.5% độ bao phủ các nhánh điều kiện chức năng chính.
  • Tổng số ca kiểm thử thực hiện: 68 Test Cases (Bao gồm 24 ca Unit Test, 32 ca Functional & UI Test, 12 ca Security & Permission Test).
  • Hiệu suất phát hiện và xử lý lỗi: Phát hiện 21 khiếm khuyết trong giai đoạn Unit & Integration Test (gồm 9 lỗi validate dữ liệu đầu vào, 5 lỗi logic giỏ hàng, 4 lỗi câu truy vấn SQL và 3 lỗi hiển thị CSS trên các trình duyệt khác nhau). Toàn bộ 21 lỗi đều được ghi nhận, chuyển giao lập trình viên sửa đổi và kiểm thử hồi quy (Regression Test) thành công với tỷ lệ giải quyết đạt 100%.

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

  • Ứng dụng quy trình CMMI Level 5 chuẩn hóa vào dự án e-commerce: Đề tài đã xây dựng thành công một quy trình kiểm thử khép kín 7 bước theo tiêu chuẩn quốc tế, giúp loại bỏ tính tự phát, thiết lập các biểu mẫu chuẩn từ Test Plan, Test Case Specification đến Test Summary Report.
  • Kết hợp đa kỹ thuật kiểm thử hộp đen nâng cao: Thay vì chỉ kiểm tra dữ liệu đơn lẻ, đề tài đã ứng dụng kết hợp Phân tích giá trị biên (BVA) và Bảng quyết định (Decision Table) cho các bài toán kinh doanh có điều kiện phức tạp (như tính toán tỷ lệ giảm giá theo độ tuổi và nhóm khách hàng).
Ma trận bảng quyết định (Decision Table) áp dụng cho chiết khấu khuyến mãi:
┌─────────────────────────┬───┬───┬───┬───┬───┬───┐
│ Điều kiện / Quy tắc     │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │
├─────────────────────────┼───┼───┼───┼───┼───┼───┤
│ Khách hàng VIP / >60t   │ Y │ Y │ Y │ N │ N │ N │
│ Có mã Coupon Family     │ Y │ N │ N │ Y │ N │ N │
│ Đơn hàng kèm quà tặng   │ Y │ Y │ N │ Y │ Y │ N │
├─────────────────────────┼───┼───┼───┼───┼───┼───┤
│ Tỷ lệ giảm giá áp dụng  │50%│34%│34%│50%│15%│ 0%│
└─────────────────────────┴───┴───┴───┴───┴───┴───┘
  • Khắc phục triệt để hiện tượng "Nghịch lý thuốc trừ sâu" (Pesticide Paradox): Đề tài đề xuất cơ chế cập nhật liên tục bộ dữ liệu kiểm thử (Test Data) và thiết kế thêm các ca kiểm thử hồi quy mới mỗi khi có sự thay đổi mã nguồn hoặc bổ sung chức năng mới.
  • Tối ưu hóa chi phí phát hiện lỗi: Việc áp dụng Unit Test sớm ngay trong quá trình viết mã giúp phát hiện 85% lỗi logic trước khi đóng gói phiên bản, giảm thiểu hơn 70% thời gian và chi phí gỡ lỗi ở giai đoạn nghiệm thu.

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

Kịch bản ứng dụng thực tế

Website "Shop Hoa Online" được thiết kế trực quan, dễ sử dụng, hoàn toàn có thể triển khai ngay cho các chuỗi cửa hàng hoa tươi, shop quà tặng hoặc doanh nghiệp kinh doanh nông sản đặc sản có nhu cầu số hóa quy trình kinh doanh và quản lý đơn hàng trực tuyến.

Hướng dẫn triển khai hệ thống (Deployment Guide)

[ Git Clone / Source Code ] ──> [ Web Server Apache /var/www/html ]
                                          │
                                          ├──> Cấu hình Database config.php
                                          │
[ MySQL Script shophoa.sql ] ─> [ Import MySQL Database Server 5.7+ ]
  1. Yêu cầu môi trường máy chủ (Server Requirements):
    • Hệ điều hành: Linux (Ubuntu 18.04/20.04 LTS, CentOS 7+) hoặc Windows Server.
    • Web Server: Apache 2.4+ (Bật mod_rewrite).
    • PHP Runtime: Phiên bản PHP 7.0 - 7.4 (Cài đặt các extension: php-mysqli, php-mbstring, php-json).
    • Cơ sở dữ liệu: MySQL 5.7+ hoặc MariaDB 10.3+.
    • Phần cứng tối thiểu: 1 vCPU, 1GB RAM, 10GB SSD Storage.
  2. Các bước cài đặt từng bước:
    • Bước 1: Sao chép toàn bộ mã nguồn vào thư mục gốc của Web Server (ví dụ: /var/www/html/shophoa/ hoặc htdocs/shophoa/).
    • Bước 2: Đăng nhập vào phpMyAdmin hoặc MySQL CLI, tạo cơ sở dữ liệu mới với bảng mã UTF-8:
      CREATE DATABASE db_shophoa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      
    • Bước 3: Import tệp tin cơ sở dữ liệu shophoa.sql vào cơ sở dữ liệu vừa tạo.
    • Bước 4: Chỉnh sửa tệp tin cấu hình kết nối connect.php để thiết lập thông số truy cập DB:
      $mysqli = new mysqli("localhost", "db_user", "db_password", "db_shophoa");
      $mysqli->set_charset("utf8");
      
    • Bước 5: Phân quyền ghi cho thư mục lưu trữ hình ảnh sản phẩm: chmod -R 755 /var/www/html/shophoa/uploads/.
  3. Xử lý sự cố thường gặp (Troubleshooting Guide):
    • Lỗi kết nối CSDL: Kiểm tra lại username/password trong connect.php và trạng thái dịch vụ MySQL (systemctl status mysql).
    • Lỗi "Headers already sent": Đảm bảo không có khoảng trắng hoặc ký tự UTF-8 BOM xuất hiện trước thẻ mở <?php trong các file xử lý điều hướng header().

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

Hạn chế kỹ thuật

  • Kiểm thử tự động (Test Automation) chưa hoàn thiện: Quá trình thực thi kiểm thử chủ yếu vẫn được tiến hành thủ công (Manual Testing), chưa tích hợp các framework tự động hóa mạnh mẽ như Selenium WebDriver, PHPUnit hoặc Cypress để tự động chạy kiểm thử trong quy trình CI/CD.
  • Cơ chế mã hóa mật khẩu: Hệ thống sử dụng thuật toán MD5 đơn thuần (md5($Password)), hiện nay không còn đảm bảo an toàn tuyệt đối trước các cuộc tấn công tra cứu bảng cầu vồng (Rainbow Table Attack) nếu không có thêm muối (Salt).
  • Chưa hỗ trợ cổng thanh toán trực tuyến: Hệ thống mới dừng lại ở hình thức đặt hàng và thanh toán khi nhận hàng (COD - Cash on Delivery).

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

  • Tích hợp bộ công cụ kiểm thử tự động toàn diện: Áp dụng PHPUnit cho Unit Testing phía backend và Selenium/Playwright để tự động hóa kịch bản kiểm thử giao diện người dùng (End-to-End Testing).
  • Nâng cấp kiến trúc bảo mật: Chuyển đổi cơ chế băm mật khẩu sang thuật toán Bcrypt hoặc Argon2id (password_hash() trong PHP hiện đại) kết hợp cơ chế xác thực Token (JWT / OAuth2).
  • Nâng cấp kiến trúc phần mềm: Tái cấu trúc mã nguồn theo mô hình RESTful API hoặc Microservices, tách biệt Backend API và Frontend xây dựng trên nền tảng Single Page Application (React / Vue.js).

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

                             ĐỐI TƯỢNG HƯỞNG LỢI
                                      │
         ┌──────────────────┬─────────┴────────┬──────────────────┐
         ▼                  ▼                  ▼                  ▼
   [ SINH VIÊN ]     [ DEVELOPERS ]      [ DOANH NGHIỆP ]   [ RESEARCHERS ]
   Nắm vững lý thuyết  Nâng cao tư duy     Sở hữu giải pháp   Tham khảo chuẩn
   kiểm thử & mẫu      viết mã sạch và     web thương mại     CMMI-5 và các
   Test Case chuẩn.    bảo mật cao.        ít lỗi, bền vững.  mô hình chất lượng.
  • Sinh viên chuyên ngành Công nghệ thông tin: Nắm bắt được một tài liệu tham khảo hoàn chỉnh, chuẩn mực về phương pháp luận kiểm thử, cách thức tổ chức đội ngũ kiểm thử và các biểu mẫu thiết kế Test Case chuyên nghiệp.
  • Lập trình viên và Kỹ sư QA/QC: Cung cấp cái nhìn sâu sắc về cách thức chuyển dịch từ logic mã nguồn sang các ca kiểm thử biên, cách tối ưu hóa vùng kiểm thử bằng Bảng quyết định và kỹ thuật chống tấn công SQLi.
  • Doanh nghiệp kinh doanh bán lẻ: Có được một mô hình ứng dụng web thương mại điện tử đã qua kiểm định nghiêm ngặt, giảm thiểu 80% rủi ro gián đoạn hệ thống và tiết kiệm đáng kể ngân sách bảo trì phần mềm.
  • Nghiên cứu viên lĩnh vực Công nghệ phần mềm: Cung cấp dữ liệu thực nghiệm về việc áp dụng tiêu chuẩn CMMI Level 5 và mô hình V-Model trong các dự án quy mô vừa và nhỏ.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai website Shop Hoa Online là gì?

Hệ thống yêu cầu máy chủ web hỗ trợ PHP từ phiên bản 7.0 trở lên, hệ quản trị cơ sở dữ liệu MySQL 5.7+ (hoặc MariaDB 10.3+), Web Server Apache 2.4. Phần cứng máy chủ tối thiểu chỉ cần 1 vCPU, 1GB RAM và 10GB dung lượng ổ cứng để vận hành mượt mà cho các cửa hàng có quy mô dưới 5.000 sản phẩm.

2. Giới hạn khả năng mở rộng (Scalability) của hệ thống và giải pháp nâng cấp khi lưu lượng tăng đột biến?

Kiến trúc hiện tại đáp ứng tốt lưu lượng từ 100 - 300 người dùng đồng thời (Concurrent Users). Khi lưu lượng tăng cao, giải pháp nâng cấp bao gồm: cấu hình Redis/Memcached để lưu đệm dữ liệu truy vấn danh mục hoa, triển khai máy chủ cơ sở dữ liệu Master-Slave (đọc/ghi tách biệt) và chuyển dữ liệu tĩnh (hình ảnh sản phẩm) lên hệ thống mạng phân phối nội dung (CDN).

3. Làm thế nào để tích hợp hệ thống với các cổng thanh toán điện tử (VNPay, MoMo) và đơn vị vận chuyển?

Hệ thống cần bổ sung tầng Service API. Khi khách hàng xác nhận đơn hàng, hệ thống sẽ tạo một yêu cầu thanh toán (Payment Request) gửi đến API của cổng thanh toán, sau đó lắng nghe Webhook (IPN URL) trả về từ cổng thanh toán để tự động cập nhật trạng thái đơn hàng trong bảng hoadon.

4. Quy trình bảo trì hệ thống cần thực hiện như thế nào để ngăn chặn "Nghịch lý thuốc trừ sâu"?

Đội ngũ QA/Tester cần định kỳ rà soát lại toàn bộ bộ kịch bản kiểm thử (Test Cases), loại bỏ các ca kiểm thử dư thừa và bổ sung các ca kiểm thử mới tập trung vào các tính năng vừa nâng cấp hoặc các vùng mã nguồn vừa sửa đổi. Bắt buộc thực hiện kiểm thử hồi quy (Regression Testing) toàn diện sau mỗi đợt phát hành phiên bản.

5. Chi phí triển khai và thời gian thu hồi vốn (ROI) ước tính cho một cửa hàng hoa tươi?

Tổng chi phí triển khai hệ thống (bao gồm tên miền, máy chủ Cloud VPS và công tác cài đặt ban đầu) dao động từ 3.000.000 - 5.000.000 VNĐ. Với việc mở rộng kênh bán hàng trực tuyến 24/7 và tiết kiệm chi phí in ấn hóa đơn, quản lý thủ công, thời gian thu hồi vốn (ROI) ước tính đạt được chỉ sau 2 đến 3 tháng vận hành.


Kết luận

Đề tài "Tìm hiểu về kiểm thử phần mềm và ứng dụng kiểm thử để đánh giá chất lượng website Shop Hoa Online" đã thực hiện thành công sự kết hợp hài hòa giữa nghiên cứu lý thuyết công nghệ phần mềm chuyên sâu và ứng dụng thực tiễn trong thương mại điện tử.

Về mặt học thuật, đề tài đã hệ thống hóa đầy đủ các khái niệm nền tảng về kiểm thử phần mềm, làm rõ các phương pháp kiểm thử hộp trắng, hộp đen và quy trình kiểm thử 7 bước chuẩn CMMI Level 5. Về mặt ứng dụng, hệ thống "Shop Hoa Online" được xây dựng hoàn thiện, trải qua các giai đoạn kiểm thử đơn vị, tích hợp và hệ thống với 68 ca kiểm thử chi tiết, chứng minh được tính đúng đắn, độ tin cậy và khả năng vận hành ổn định.

Công tác kiểm thử phần mềm không đơn thuần là hoạt động tìm lỗi ở giai đoạn cuối mà là một quy trình kiểm soát chất lượng mang tính chiến lược xuyên suốt toàn bộ vòng đời phát triển phần mềm. Việc áp dụng đúng đắn các kỹ thuật kiểm thử sẽ tạo tiền đề vững chắc giúp sản phẩm phần mềm vận hành an toàn, gia tăng trải nghiệm người dùng và mang lại hiệu quả kinh tế cao nhất cho doanh nghiệp.