Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh ngành công nghệ thông tin phát triển mạnh mẽ, số lượng và quy mô của các hệ thống mạng cũng như phần mềm ứng dụng gia tăng nhanh chóng theo cả chiều rộng lẫn chiều sâu. Tuy nhiên, sự gia tăng này đi kèm với nguy cơ phát sinh nhiều lỗi kỹ thuật và sự cố phần mềm ngoài ý muốn, gây tổn hại trực tiếp đến kinh tế và xã hội. Các lỗi phần mềm có thể xuất phát từ việc hệ thống không được kiểm tra kỹ lưỡng trước khi bàn giao cho người dùng, hoặc phát sinh từ các lỗ hổng bảo mật bị khai thác nhằm đánh cắp thông tin cá nhân như tài khoản ngân hàng, danh bạ, số điện thoại hay tin nhắn. Do đó, công tác kiểm thử phần mềm đóng vai trò quyết định trong việc ngăn chặn các khiếm khuyết tiềm ẩn và đảm bảo chất lượng vận hành của sản phẩm.
Song song với vấn đề kiểm định phần mềm, nhu cầu mua sắm trực tuyến trong đời sống hiện đại ngày càng trở nên phổ biến. Nhịp sống bận rộn khiến nhu cầu đặt hoa tươi tặng người thân vào các dịp lễ, sinh nhật đòi hỏi một giải pháp tiện lợi, không tốn thời gian đến trực tiếp cửa hàng. Xuất phát từ thực tiễn đó, đề tài khóa luận "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 tác giả lựa chọn nhằm nghiên cứu lý thuyết kiểm thử và áp dụng vào đánh giá một ứng dụng thương mại điện tử cụ thể.
Mục tiêu nghiên cứu của đề tài được tác giả xác định gồm 3 nhiệm vụ cụ thể:
- Tìm hiểu rõ hơn về kiểm thử phần mềm.
- Xây dựng một Website “Shop Hoa Online” hoàn chỉnh bao gồm các chức năng cần thiết trong thương mại điện tử.
- Sử dụng kiểm thử để đánh giá website vừa xây dựng.
Đối tượng và phạm vi nghiên cứu của khóa luận được phân định như sau:
- Đối tượng nghiên cứu: Kiểm thử phần mềm.
- Phạm vi nội dung: Áp dụng các kỹ thuật kiểm thử vào website “Shop hoa online”.
- Phạm vi không gian: Lĩnh vực kiểm thử phần mềm trong kỹ thuật phần mềm.
- Phạm vi thời gian: Đề tài được triển khai trong thời gian 5 tháng, bắt đầu từ tháng 11 năm 2016 đến tháng 4 năm 2017.
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 thông qua việc hệ thống hóa các khái niệm, quy trình và kỹ thuật kiểm thử phần mềm chuẩn mực, kết hợp với các phương pháp tiếp cận trong kỹ thuật phần mềm:
Khung lý thuyết và mô hình ứng dụng
- Khái niệm và mục tiêu kiểm thử: Kiểm thử phần mềm được định nghĩa là cuộc kiểm tra nhằm cung cấp thông tin về chất lượng sản phẩm cho các bên liên quan (khách hàng, nhóm phát triển), xác nhận phần mềm thực hiện đúng chức năng mong muốn, thiết lập sự tin cậy và tìm kiếm lỗi. Lỗi phần mềm được định nghĩa là những hành vi hoạt động không đúng theo mong đợi của khách hàng hoặc nhà sản xuất. Nguyên nhân gây lỗi được phân tích từ khâu đặc tả yêu cầu (thiếu cụ thể, thay đổi liên tục, thiếu phối hợp), khâu thiết kế (dồn ép, giao tiếp kém) và khâu viết mã (áp lực lịch trình, mã nguồn phức tạp, sao chép mã nhưng quên chỉnh sửa).
- Quy luật chi phí sửa lỗi: Chi phí khắc phục sai sót tăng theo hàm số logarit (tăng gấp 10 lần qua mỗi giai đoạn phát triển). Lỗi phát hiện ở giai đoạn đặc tả có chi phí rất thấp (khoảng 1 USD), khi chuyển sang giai đoạn lập trình và kiểm thử có thể tăng lên 10 đến 100 USD, và nếu để người dùng phát hiện khi phần mềm đã vận hành thực tế thì chi phí có thể lên đến hàng nghìn hoặc hàng triệu USD.
- Bảy nguyên tắc kiểm tra lỗi chung: (1) Kiểm thử chứng minh sự hiện diện của lỗi, không chứng minh sản phẩm hết lỗi; (2) Kiểm thử toàn bộ là không khả thi do hạn chế về thời gian và chi phí; (3) Kiểm thử càng sớm càng tốt nhằm giảm thiểu chi phí sửa lỗi; (4) Lỗi phân bố tập trung (80% số lỗi thường nằm trong 20% tính năng); (5) Nghịch lý thuốc trừ sâu (lặp lại một bộ test case cũ sẽ khó tìm ra lỗi mới, đòi hỏi kiểm thử hồi quy - regression test và cập nhật test case); (6) Kiểm thử phụ thuộc vào ngữ cảnh (phần mềm y tế yêu cầu kiểm thử khắt khe hơn trò chơi điện tử, website lớn cần kiểm thử hiệu năng lẫn chức năng); (7) Quan niệm sai lầm về việc hết lỗi (không tìm thấy lỗi không đồng nghĩa với việc sản phẩm đã hoàn hảo).
- Mô hình vòng đời phát triển: Tác giả phân tích 3 mô hình chính gồm mô hình Thác nước (Waterfall), mô hình Chữ V (V-Shape) gắn kết các pha phát triển với các mức kiểm thử tương ứng, và phương pháp luận Agile Scrum với 4 tuyên ngôn cốt lõi, 3 giá trị nền tảng (Minh bạch, Thanh tra, Thích nghi), 3 vai trò (Product Owner, Scrum Master, Development Team) và 4 sự kiện chính (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective).
- Quy trình kiểm thử theo tiêu chuẩn CMMI cấp độ 5 (CMMI5): Bao gồm 7 bước tuần tự: Lập kế hoạch test (Test Plan), Phân tích và thiết kế test, Review thiết kế test, Chuẩn bị môi trường test, Thực hiện test, Review kết quả test, và Báo cáo kết quả test (Test Summary Report).
- Các kỹ thuật và mức độ kiểm thử: Phân loại kiểm thử hộp đen (Black Box testing) bao gồm Phân vùng tương đương (Equivalence partitioning), Phân tích giá trị biên (Boundary value analysis), Bảng quyết định (Decision Table), Đồ thị nguyên nhân - kết quả và Kiểm thử dựa trên đặc tả (Specification-based testing); kiểm thử hộp trắng (White Box testing) bao gồm kiểm thử câu lệnh (Statement), kiểm thử nhánh/đường dẫn (Branch) và kiểm thử điểm quyết định (Decision). Bốn cấp độ kiểm thử 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).
Phương pháp nghiên cứu
- Phương pháp nghiên cứu tự luận: Thu thập tài liệu chuyên ngành, nghiên cứu lý thuyết kiểm thử và các vấn đề liên quan từ các diễn đàn kỹ thuật trên internet.
- Phương pháp tổng kết kinh nghiệm: Rút tỉa bài học thực tế từ quá trình làm việc tại một số công ty phần mềm.
- Phương pháp lấy ý kiến chuyên gia: Tiếp thu ý kiến góp ý của giảng viên hướng dẫn và các giảng viên bộ môn để hoàn thiện nội dung, cấu trúc khóa luận.
- Phương pháp phân tích và thiết kế hệ thống: Sử dụng phương pháp hướng đối tượng, thực hiện khảo sát nghiệp vụ, phân tích ca sử dụng và thiết kế cơ sở dữ liệu.
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết về kiểm thử phần mềm
Chương này đóng vai trò thiết lập khung lý thuyết tổng thể về kiểm định chất lượng phần mềm. Nội dung chương đi sâu vào bản chất của kiểm thử, cấu trúc thành phần của một ca kiểm thử (Test Case bao gồm mã, tên, mục tiêu, điều kiện tiên quyết, dữ liệu đầu vào, các bước thực hiện và kết quả mong đợi). Tác giả so sánh các mô hình quy trình và chỉ ra ưu, nhược điểm của từng mô hình phát triển trong mối liên hệ với hoạt động kiểm thử:
| Tiêu chí |
Mô hình Thác nước (Waterfall) |
Mô hình Chữ V (V-Shape) |
Mô hình Agile Scrum |
| Đặc điểm quy trình |
Thực hiện tuần tự qua 5 pha; pha trước kết thúc mới bắt đầu pha sau |
Gắn kết từng bước phát triển với một mức kiểm thử tương ứng |
Phát triển linh hoạt, lặp đi lặp lại theo từng Sprint |
| Thời điểm kiểm thử |
Thường tập trung ở giai đoạn cuối chu kỳ phát triển |
Lên kế hoạch và chuẩn bị kiểm thử song song từ các bước đầu |
Kiểm thử liên tục trong suốt quá trình phát triển tính năng |
| Ưu điểm |
Cấu trúc rõ ràng, dễ quản lý khi yêu cầu cố định |
Phát hiện lỗi sớm, tiết kiệm thời gian hơn Waterfall |
Thích nghi cao với thay đổi, phản hồi nhanh, giảm tải tài liệu thừa |
| Nhược điểm |
Khó thay đổi yêu cầu, phát hiện lỗi muộn, chi phí sửa cao |
Kém linh hoạt, sản phẩm chỉ hoàn chỉnh ở cuối quy trình |
Đòi hỏi tính tự giác cao, phụ thuộc lớn vào năng lực giao tiếp |
Bên cạnh đó, chương 1 cung cấp các ví dụ minh họa bằng số liệu cụ thể cho các kỹ thuật kiểm thử hộp đen:
- Kỹ thuật phân vùng tương đương áp dụng cho bài toán đặt vé theo khung giờ phân chia miền dữ liệu thành 4 vùng kiểm thử: (0 – 9h30), (9h31 – 16h00), (16h01 – 19h30), và (19h31 – 23h59).
- Kỹ thuật phân tích giá trị biên cho bài toán trên xác định 6 giá trị biên cần kiểm tra: 9h29, 9h31, 15h59 (hoặc 5h59), 16h01, 19h29, và 19h31.
- Kỹ thuật bảng quyết định áp dụng cho bài toán giảm giá vé xem phim dựa trên 3 điều kiện (thẻ Over 60s, thẻ Family Rail Card, đi cùng trẻ em) để xác định tỷ lệ giảm giá tương ứng (50%, 34%, 15%, hoặc 0%) qua 6 cột kết hợp điều kiện.
Về cấu trúc nhân sự, chương 1 sơ đồ hóa đội ngũ kiểm thử gồm 5 vị trí: Test Manager (Quản lý kiểm thử), Test Leader (Nhóm trưởng), Test Analyst (Chuyên viên phân tích), Test Designer (Chuyên viên thiết kế ca kiểm thử) và Tester (Kiểm thử viên thực thi). Đồng thời, tác giả khái quát ba loại hình kiểm thử ứng dụng phổ biến hiện nay: kiểm thử phần mềm trên máy tính cá nhân (Desktop), kiểm thử ứng dụng Web/đám mây và kiểm thử ứng dụng trên thiết bị di động (Mobile).
Chương 2: Xây dựng website “Shop Hoa Online”
Chương 2 trình bày toàn bộ quá trình đặc tả yêu cầu, phân tích ca sử dụng và thiết kế cấu trúc dữ liệu cho website bán hoa trực tuyến. Hệ thống được xây dựng nhằm giải quyết bài toán đặt hoa và giao hàng tận nơi cho người dùng.
Hệ thống phân định 2 tác nhân (actors) chính với phạm vi quyền hạn cụ thể:
- Khách hàng: Xem thông tin sản phẩm, tìm kiếm hoa, thực hiện đăng ký tài khoản, đăng nhập hệ thống và thực hiện đặt hàng.
- Quản trị viên (Admin): Quản lý đơn đặt hoa, thông tin khách hàng, quản lý danh mục hoa, quản lý hóa đơn, quản lý chương trình khuyến mãi và phân loại hoa.
Tác giả chi tiết hóa các yêu cầu chức năng (Functional Requirements - REQ) cho từng module:
| Tên chức năng |
Mã yêu cầu |
Nội dung đặc tả yêu cầu chức năng |
| Tìm sản phẩm bằng thanh công cụ |
REQ-1 REQ-2 REQ-3 REQ-4 |
Hiển thị thanh tìm kiếm và nút "Tìm Kiếm" trên trang chủ. Người dùng nhập từ khóa vào ô văn bản và nhấn nút "Tìm Kiếm". Hiển thị danh sách sản phẩm phù hợp với điều kiện tìm kiếm. Cho phép người dùng xem chi tiết sản phẩm từ danh sách kết quả. |
| Xem chi tiết sản phẩm |
REQ-1 REQ-2 |
Hình ảnh sản phẩm được gắn liên kết, nhấp vào để mở thông tin chi tiết. Trang chi tiết sản phẩm được mở ra trên một cửa sổ mới. |
| Cập nhật giỏ hàng |
REQ-1 REQ-2 |
Cập nhật giỏ hàng khi người dùng nhấn nút "Thêm vào giỏ hàng". Xóa sản phẩm khỏi giỏ hàng khi nhấp nút "Xóa" trên trang mua hàng. |
| Quản lý phiên: Đăng ký |
REQ-1 REQ-2 REQ-3 |
Nhập đầy đủ thông tin vào biểu mẫu và nhấn nút "Đăng ký". Kiểm tra tính bắt buộc và định dạng của Email, Mật khẩu, Tên đăng nhập, Số điện thoại. Hiển thị thông báo lỗi nếu thất bại; chuyển hướng sang trang đăng nhập nếu thành công. |
| Quản lý phiên: Đăng nhập |
REQ-1 REQ-2 REQ-3 |
Hiển thị ô nhập "Tên đăng nhập", "Mật khẩu" và nút "Đăng nhập". Chuyển hướng về trang chủ khi đăng nhập thành công. Hiển thị thông báo lỗi khi thông tin đăng nhập không chính xác. |
| Quản lý phiên: Đăng xuất |
REQ-1 REQ-2 |
Người dùng nhấp vào nút "Đăng xuất". Hệ thống điều hướng về trang đăng nhập sau khi hoàn tất đăng xuất. |
| Quản trị: Thêm/Xóa/Sửa hoa |
REQ-1 REQ-2 |
Yêu cầu đăng nhập với quyền Admin; kiểm tra tránh trùng lặp dữ liệu trong hệ thống. Admin được phép thêm, sửa, xóa sản phẩm nhưng không có quyền mua hàng. |
| Quản trị: Tìm kiếm sản phẩm |
REQ-1 REQ-2 |
Yêu cầu đăng nhập với quyền Admin; cho phép tìm kiếm sản phẩm theo loại hoa. Danh sách trả về cho phép lựa chọn để chỉnh sửa hoặc xóa trong trang quản trị. |
Các gói ca sử dụng (Use case) được thiết lập gồm: Gói đăng nhập (Uc1: Đăng nhập), Gói đăng ký (Uc1: Đăng ký), Gói đăng xuất (Uc1: Đăng xuất), Gói QL TT Khách (Uc1: Xóa thông tin khách hàng), Gói Quản lý Hoa (Uc1: Thêm hoa, Uc2: Xóa hoa, Uc3: Sửa hoa), Gói Quản lý Khuyến Mãi (Uc1: Thêm, Uc2: Xóa, Uc3: Sửa khuyến mãi), Gói quản lý hóa đơn (Uc1: Xóa hóa đơn), Gói quản lý loại hoa (Uc1: Thêm, Uc2: Xóa, Uc3: Sửa loại hoa) và Gói Đặt hoa (Uc1: Xem thông tin hoa, Uc2: Tìm kiếm hoa). Cấu trúc cơ sở dữ liệu được tổ chức thành các bảng thực thể: bảng Nhóm hoa, bảng Loại hoa, bảng Khách hàng, bảng Chi tiết hóa đơn và bảng Hình ảnh. Giao diện chương trình được minh chứng qua các màn hình demo: Trang chủ, Danh mục sản phẩm, Giao diện Admin và Trang khuyến mãi.
Chương 3: Thiết kế test case và thực thi test
Chương 3 tập trung vào công tác thực nghiệm kiểm thử trên ứng dụng đã xây dựng, áp dụng quy trình kiểm thử đơn vị (Unit test) và kiểm thử hộp đen (Black-box testing).
Quy trình thực hiện Unit test được tác giả chuẩn hóa qua 4 bước:
- Đọc hiểu mã lệnh (source code).
- Viết các ca kiểm thử (test cases).
- Thực thi kiểm thử (execute test).
- Ghi nhận và đưa lỗi lên hệ thống theo dõi (nếu có phát sinh lỗi).
Đối tượng kiểm thử đơn vị là đoạn mã nguồn PHP xử lý chức năng "Đăng ký tài khoản" của website:
<?php
if(isset($_POST['submit'])){
$Fullname=trim($mysqli->real_escape_string($_POST["Fullname"]));
$Username=trim($mysqli->real_escape_string($_POST['Username']));
$Password=trim($mysqli->real_escape_string($_POST['Password']));
$repassword_encode = md5($Password);
$Email = trim($mysqli->real_escape_string($_POST['Email']));
$Phone = trim($mysqli->real_escape_string($_POST['Phone']));
$insertquery="insert into khachhang(fullname, username, password, sodienthoai,diachi,email)values('{$Fullname}','{$Username}','{$repassword_encode}','{$Phone}','{$diachi}','{$Email}')";
$result=$mysqli->query($insertquery);
if($result) {
header("LOCATION:index.php?kt=Đăngkýthànhcông¤t=1");
exit();
} else{
header("LOCATION:dangky.php?kt=Đăngkýthấtbại¤t=1");
}
}
?>
Dựa trên đoạn mã nguồn và yêu cầu đặc tả, tác giả xây dựng bảng kịch bản test case chi tiết cho các trường dữ liệu biểu mẫu đăng ký, tiến hành nhập liệu thử nghiệm và đối chiếu kết quả phản hồi của hệ thống với kết quả mong đợi, đồng thời triển khai kiểm thử hộp đen dựa trên đặc tả chức năng của toàn bộ website.
Thiết kế và triển khai
Căn cứ vào nội dung kỹ thuật được công bố trong văn bản, hệ thống "Shop Hoa Online" được thiết kế và triển khai theo các thông số cấu trúc sau:
Kiến trúc phần mềm và cơ sở dữ liệu
Hệ thống hoạt động trên nền tảng ứng dụng web sử dụng ngôn ngữ lập trình PHP và hệ quản trị cơ sở dữ liệu MySQL ($mysqli). Cơ sở dữ liệu quan hệ được thiết kế để lưu trữ và xử lý các thực thể thương mại điện tử, bao gồm:
- Bảng Khách hàng (
khachhang): Lưu trữ thông tin tài khoản người dùng với các trường dữ liệu: họ tên (fullname), tên đăng nhập (username), mật khẩu đã mã hóa một chiều qua hàm băm MD5 (password), số điện thoại (sodienthoai), địa chỉ (diachi), và thư điện tử (email).
- Các bảng danh mục và nghiệp vụ: Bảng Nhóm hoa, bảng Loại hoa, bảng Chi tiết hóa đơn và bảng Hình ảnh nhằm phục vụ quản lý sản phẩm hoa tươi và các giao dịch đặt hàng.
Kiểm thử và xử lý mã nguồn
Quá trình kiểm thử đơn vị cho thấy việc xử lý dữ liệu biểu mẫu đăng ký sử dụng phương thức POST, lọc ký tự đặc biệt bằng hàm real_escape_string và loại bỏ khoảng trắng bằng hàm trim để phòng ngừa lỗi dữ liệu đầu vào. Tuy nhiên, việc rà soát mã nguồn (code review) kết hợp thiết kế test case trong chương 3 giúp bộc lộ những điểm cần lưu ý trong câu lệnh SQL: câu lệnh chèn dữ liệu tham chiếu đến biến {$diachi}, nhưng biến này chưa được khởi tạo từ mảng $_POST trong đoạn mã tiếp nhận, cho thấy giá trị thực tiễn của quy trình kiểm thử đơn vị trong việc phát hiện khiếm khuyết lập trình.
Kết quả và đóng góp
Qua quá trình nghiên cứu lý thuyết và thực nghiệm triển khai, khóa luận đạt được các kết quả cụ thể:
Kết quả chính
- Hệ thống hóa toàn diện cơ sở lý luận về kiểm thử phần mềm: làm rõ 7 nguyên tắc kiểm thử, bản chất lỗi và cơ chế chi phí sửa lỗi tăng theo hàm logarit; so sánh ưu nhược điểm của các mô hình phát triển phần mềm (Thác nước, Chữ V, Agile Scrum); chi tiết hóa 7 bước trong quy trình kiểm thử chuẩn CMMI cấp độ 5.
- Hoàn thành thiết kế và xây dựng website thương mại điện tử "Shop Hoa Online" với đầy đủ 2 phân hệ người dùng (Khách hàng và Quản trị viên), phân tích chi tiết các yêu cầu chức năng (REQ-1 đến REQ-4 cho tìm kiếm, các REQ cho giỏ hàng, đăng ký, đăng nhập, quản lý sản phẩm) và hoàn thiện 9 nhóm ca sử dụng.
- Xây dựng thành công bộ kịch bản ca kiểm thử (test case) cho chức năng đăng ký tài khoản từ mã nguồn PHP thực tế, áp dụng kiểm thử hộp đen theo đặc tả yêu cầu và thực thi kiểm thử để xác định trạng thái phản hồi của hệ thống.
Đóng góp của đề tài
Tác giả tự xác định đóng góp của khóa luận là giúp người đọc hiểu rõ hơn về kiểm định chất lượng phần mềm, nắm bắt sâu sắc các định nghĩa, quy trình chuẩn mực (tiêu chuẩn CMMI5) cũng như phương thức, kỹ thuật thiết kế test case trong thực tế phát triển dự án công nghệ thông tin.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận được hoàn thành trong khuôn khổ nghiên cứu tốt nghiệp đại học nên tồn tại một số giới hạn do chính tác giả nêu rõ:
- Hạn chế: Tác giả tự đánh giá do trình độ bản thân còn hạn hẹp, phạm vi đề tài rộng và thời gian thực hiện có hạn (kéo dài trong hơn 4 đến 5 tháng từ cuối năm 2016 đến tháng 4 năm 2017) nên báo cáo không tránh khỏi những thiếu sót về nội dung và hình thức.
- Phạm vi thực tế: Về mặt kiểm thử thực nghiệm, báo cáo chủ yếu dừng lại ở việc kiểm thử đơn vị cho một đoạn mã nguồn cụ thể thuộc chức năng đăng ký và kiểm thử chức năng hộp đen ở mức cơ bản; chưa triển khai kiểm thử tự động (automation test), kiểm thử tải/hiệu năng hệ thống hoặc đánh giá an toàn thông tin chuyên sâu dù phần lý thuyết có đề cập đến các tiêu chuẩn này.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo hữu ích cho các đối tượng sau:
- Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Tài liệu cung cấp bản tổng hợp lý thuyết có cấu trúc mạch lạc về kiểm định chất lượng, đặc biệt là quy trình kiểm thử 7 bước theo CMMI5 và các kỹ thuật thiết kế test case hộp đen (phân vùng tương đương, giá trị biên, bảng quyết định).
- Người thực hiện đề tài tốt nghiệp về ứng dụng thương mại điện tử: Báo cáo cung cấp biểu mẫu đặc tả yêu cầu chức năng theo mã chuẩn (REQ), cách lập sơ đồ phân rã ca sử dụng (Use case) cho website bán hàng quy mô vừa và nhỏ, cùng phương pháp lập bảng kịch bản kiểm thử đơn vị trên mã nguồn PHP thực tế.
Câu hỏi thường gặp
1. Đề tài áp dụng quy trình kiểm thử phần mềm theo tiêu chuẩn nào và gồm những bước nào?
Khóa luận áp dụng quy trình kiểm thử phần mềm theo tiêu chuẩn CMMI cấp độ 5 (CMMI5) gồm 7 bước: (1) Lập kế hoạch test; (2) Phân tích và thiết kế test; (3) Review thiết kế test; (4) Chuẩn bị môi trường test; (5) Thực hiện test; (6) Review kết quả test; và (7) Báo cáo kết quả test thông qua Test Summary Report.
2. Các kỹ thuật kiểm thử hộp đen nào được tác giả phân tích kèm bài toán minh họa cụ thể?
Tác giả phân tích 5 kỹ thuật kiểm thử hộp đen, trong đó có 3 kỹ thuật có bài toán minh họa cụ thể:
- Kỹ thuật phân vùng tương đương: minh họa bằng bài toán đặt vé theo khung giờ (chia thành 4 test case).
- Kỹ thuật phân tích giá trị biên: minh họa bằng bài toán đặt vé theo khung giờ (chọn ra 6 giá trị biên: 9h29, 9h31, 15h59/5h59, 16h01, 19h29, 19h31).
- Kỹ thuật bảng quyết định: minh họa qua bài toán đặt vé xem phim với các điều kiện giảm giá dựa trên độ tuổi trên 60, thẻ gia đình và trẻ em đi cùng (tạo thành bảng ma trận 6 trường hợp).
3. Hệ thống website "Shop Hoa Online" có những tác nhân nào và bao gồm những chức năng quản trị nào?
Hệ thống gồm 2 tác nhân chính: Khách hàng và Quản trị viên. Trong đó, Quản trị viên có các quyền: quản lý đơn đặt hoa, quản lý thông tin khách hàng (xóa thông tin khách hàng), quản lý sản phẩm hoa (thêm, xóa, sửa hoa), quản lý khuyến mãi (thêm, xóa, sửa), quản lý hóa đơn (xóa hóa đơn) và quản lý loại hoa (thêm, xóa, sửa loại hoa).
4. Chi phí sửa lỗi phần mềm biến thiên như thế nào theo thời gian phát triển được nêu trong văn bản?
Chi phí sửa lỗi tăng theo hàm số logarit, gấp 10 lần qua mỗi giai đoạn. Nếu lỗi được tìm thấy và sửa ngay từ khi viết bản đặc tả thì chi phí chỉ khoảng 1 USD; nếu để đến giai đoạn lập trình và kiểm thử thì chi phí tăng lên 10 đến 100 USD; và nếu để khách hàng phát hiện khi phần mềm đã vận hành thực tế thì chi phí có thể lên tới hàng nghìn hoặc hàng triệu USD.
5. Đoạn mã nguồn nào được lựa chọn để thực hiện kiểm thử đơn vị (Unit test) trong Chương 3?
Đoạn mã nguồn được lựa chọn để làm Unit test là khối mã xử lý nhận dữ liệu POST từ biểu mẫu chức năng "Đăng ký" tài khoản người dùng viết bằng PHP, bao gồm việc tiếp nhận các trường họ tên, tên đăng nhập, mật khẩu (mã hóa MD5), email, số điện thoại và thực hiện câu lệnh chèn dữ liệu vào bảng khachhang.
Kết luận
Khóa luận tốt nghiệp của sinh viên Lê Thị Thảo đã tổng hợp tương đối có hệ thống nền tảng lý thuyết về kiểm định chất lượng phần mềm, từ các nguyên tắc cơ bản, mô hình phát triển đến quy trình kiểm thử CMMI5 và các kỹ thuật thiết kế test case. Song song đó, đề tài đã phân tích yêu cầu và xây dựng hoàn chỉnh ứng dụng website "Shop Hoa Online" phục vụ nghiệp vụ bán hoa trực tuyến. Thông qua việc kiểm thử đơn vị trên mã nguồn PHP và kiểm thử hộp đen theo đặc tả chức năng, khóa luận đã minh chứng tính ứng dụng của các kỹ thuật kiểm thử trong việc đánh giá và kiểm soát chất lượng phần mềm thực tế.