Menu
CoddyTech

Kiểm thử và tích hợp

Thuộc phần Lập trình hướng đối tượng trong hành trình PHP của Coddy. Bài học 87 trên 91.

challenge icon

Thử thách

Dễ

Chúc mừng bạn đã xây dựng một Hệ thống quản lý thư viện hoàn chỉnh! Giờ là lúc kết hợp tất cả các thành phần và kiểm tra xem mọi thứ có hoạt động trơn tru hay không. Bạn sẽ tạo một bài kiểm thử tích hợp toàn diện để kiểm tra toàn bộ quy trình hoạt động của thư viện.

Bạn sẽ sắp xếp code trong năm tệp:

  • Book.php: Lớp Book có các thuộc tính chỉ đọc (isbn, title, author), một thuộc tính riêng tư $isAvailable và các phương thức: isAvailable(), markAsBorrowed() và markAsReturned().
  • User.php: Nạp tệp Book. Lớp User có các thuộc tính chỉ đọc (id, name), một mảng riêng tư $borrowedBooks, hằng số MAX_BOOKS có giá trị 3 và tất cả các phương thức của người dùng.
  • Library.php: Nạp tệp User. Lớp Library có chức năng quản lý sách, mượn và trả sách, các phương thức tìm kiếm cùng phương thức removeBook().
  • Admin.php: Nạp tệp Library. Lớp Admin kế thừa User, có các phương thức addBookToLibrary() và removeBookFromLibrary().
  • main.php: Nạp tệp Admin. Đây là nơi bạn chạy bài kiểm thử tích hợp. Bạn sẽ nhận hai đầu vào: tên người dùng và từ khóa tên tác giả cần tìm.

    Thiết lập hệ thống thư viện:

    • Tạo một Library
    • Tạo một Admin có ID 1 và tên "LibraryAdmin"
    • Tạo một User có ID 2 và tên người dùng đã cung cấp

    Yêu cầu admin thêm ba cuốn sách sau:

    • ISBN: "978-0", Tên sách: "PHP Fundamentals", Tác giả: "Sarah Johnson"
    • ISBN: "978-1", Tên sách: "OOP Patterns", Tác giả: "Mike Chen"
    • ISBN: "978-2", Tên sách: "Web Security", Tác giả: "Sarah Johnson"

    Sau đó chạy lần lượt các bước kiểm thử tích hợp sau, in mỗi kết quả trên một dòng mới:

    1. Yêu cầu người dùng mượn "978-0"
    2. Yêu cầu người dùng mượn "978-1"
    3. Tìm theo tác giả bằng đầu vào thứ hai và in số lượng: "Books by author: [count]"
    4. Lấy danh sách sách có thể mượn và in: "Available: [count]"
    5. Yêu cầu người dùng trả "978-0"
    6. Lấy lại danh sách sách có thể mượn và in: "Available after return: [count]"
    7. Yêu cầu admin xóa "978-0"
    8. Yêu cầu admin thử xóa lại "978-0"

Thử thách cuối cùng này kiểm tra xem toàn bộ hệ thống có hoạt động cùng nhau hay không: admin quản lý kho sách, người dùng mượn sách trong giới hạn, các lượt tìm kiếm trả về kết quả chính xác và tình trạng sách được cập nhật đúng trong suốt quy trình.

Tự làm thử

<?php

require_once 'Admin.php';

// Đọc dữ liệu đầu vào
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Tạo một Library

// TODO: Tạo một Admin có ID 1 và tên "LibraryAdmin"

// TODO: Tạo một User có ID 2 và tên người dùng đã cung cấp

// TODO: Cho quản trị viên thêm ba cuốn sách:
// - ISBN: "978-0", Tiêu đề: "PHP Fundamentals", Tác giả: "Sarah Johnson"
// - ISBN: "978-1", Tiêu đề: "OOP Patterns", Tác giả: "Mike Chen"
// - ISBN: "978-2", Tiêu đề: "Web Security", Tác giả: "Sarah Johnson"

// TODO: Trình tự kiểm thử tích hợp:
// 1. Cho người dùng mượn "978-0"
// 2. Cho người dùng mượn "978-1"
// 3. Tìm sách theo tác giả bằng $searchAuthor và in ra: "Books by author: [count]"
// 4. Lấy danh sách sách còn sẵn và in ra: "Available: [count]"
// 5. Cho người dùng trả sách "978-0"
// 6. Lấy lại danh sách sách còn sẵn và in ra: "Available after return: [count]"
// 7. Cho admin xóa sách "978-0"
// 8. Cho admin thử xóa sách "978-0" lần nữa

?>

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch PHP online