Trắc nghiệm Công nghệ Phần mềm Bài: CASE STUDY CHO PHA CÀI ĐẶT là một trong những đề thi thuộc Chương 9: PHA CÀI ĐẶT VÀ TÍCH HỢP trong học phần Công nghệ Phần mềm chuyên ngành Công Nghệ Thông Tin cấp độ Đại học. Đây là phần kiến thức ứng dụng thực tiễn, giúp sinh viên củng cố hiểu biết về pha cài đặt và tích hợp bằng cách áp dụng các nguyên tắc, kỹ thuật và công cụ vào một tình huống cụ thể, ví dụ như phát triển tính năng tìm kiếm nâng cao cho ứng dụng mua sắm trực tuyến.
Trong bài học này, người học cần nắm vững các nội dung cốt lõi như: cách lập trình mã nguồn theo thiết kế, thực hiện gỡ lỗi và kiểm thử đơn vị hiệu quả, lựa chọn chiến lược tích hợp phù hợp (tích hợp tăng dần, tích hợp liên tục), quản lý các xung đột mã nguồn, và giải quyết các vấn đề tương thích giữa các module. Việc phân tích case study trong pha cài đặt sẽ trang bị cho sinh viên khả năng chuyển đổi bản thiết kế thành một sản phẩm phần mềm hoạt động, đảm bảo chất lượng và tính ổn định.
Hãy cùng Dethitracnghiem.vn tìm hiểu về đề thi này và tham gia làm kiểm tra ngay lập tức!
Trắc nghiệm Công nghệ Phần mềm Bài: CASE STUDY CHO PHA CÀI ĐẶT
Câu 1.Trong dự án phát triển tính năng tìm kiếm nâng cao cho ứng dụng mua sắm, lập trình viên An đang viết mã cho module `SearchAlgorithm` (Thuật toán tìm kiếm). Hoạt động này thuộc pha nào của vòng đời phát triển phần mềm?
A. Pha Thiết kế.
B. Pha Kiểm thử hệ thống.
C. Pha Triển khai.
D. Pha Cài đặt (Implementation).
Câu 2.Lập trình viên Bình đã viết xong module `ProductFilter` (Bộ lọc sản phẩm). Trước khi tích hợp, Bình tự viết các đoạn mã nhỏ để kiểm tra từng hàm và phương thức trong module của mình có chạy đúng không. Đây là loại kiểm thử nào?
A. Kiểm thử tích hợp.
B. Kiểm thử hệ thống.
C. Kiểm thử chấp nhận.
D. Kiểm thử đơn vị (Unit Testing).
Câu 3.Khi lập trình viên Cường kết hợp module `SearchAlgorithm` của An với module `ProductFilter` của Bình để kiểm tra xem chúng có hoạt động cùng nhau như mong đợi hay không, đây là hoạt động nào?
A. Gỡ lỗi.
B. Kiểm thử đơn vị.
C. Biên dịch.
D. Tích hợp (Integration).
Câu 4.Nhóm phát triển tính năng tìm kiếm quyết định sẽ tích hợp các module theo thứ tự: đầu tiên là `DatabaseAccess` (Truy cập CSDL), sau đó `SearchAlgorithm`, rồi `ProductFilter`, và cuối cùng là `UserInterface`. Đây là chiến lược tích hợp nào?
A. Tích hợp Big Bang.
B. Tích hợp từ trên xuống (Top-down).
C. Tích hợp Sandwich.
D. Tích hợp từ dưới lên (Bottom-up).
Câu 5.Trong quá trình phát triển tính năng tìm kiếm, lập trình viên Mai gặp một lỗi khi chạy chương trình: kết quả tìm kiếm không được hiển thị. Mai dùng một công cụ cho phép cô ấy chạy từng dòng mã và xem giá trị của các biến để tìm ra nguyên nhân. Công cụ này được gọi là gì?
A. Trình biên dịch.
B. Hệ thống kiểm soát phiên bản.
C. Công cụ xây dựng tự động.
D. Trình gỡ lỗi (Debugger).
Câu 6.Để đảm bảo mã nguồn của tính năng tìm kiếm dễ đọc và dễ bảo trì bởi các lập trình viên khác trong nhóm, điều gì cần được tuân thủ trong pha cài đặt?
A. Viết code càng dài càng tốt.
B. Bỏ qua các nhận xét trong code.
C. Chỉ tập trung vào tốc độ thực thi.
D. Tuân thủ các chuẩn mã hóa (Coding Standards) của công ty.
Câu 7.Nhóm phát triển tính năng tìm kiếm quyết định sẽ tự động biên dịch, chạy kiểm thử đơn vị và tích hợp mỗi khi có mã mới được đẩy lên kho lưu trữ chung. Đây là ví dụ của phương pháp nào?
A. Lập trình cặp.
B. Đánh giá mã.
C. Kiểm thử hồi quy thủ công.
D. Tích hợp liên tục (Continuous Integration).
Câu 8.Module `ProductDisplay` (Hiển thị sản phẩm) cần sử dụng module `ImageProcessor` (Xử lý hình ảnh) nhưng `ImageProcessor` chưa hoàn thành. Để `ProductDisplay` vẫn có thể được kiểm thử tích hợp, nhóm cần tạo một thành phần giả lập nào cho `ImageProcessor`?
A. Driver.
B. Controller.
C. Service.
D. Stub.
Câu 9.Một lập trình viên đang cố gắng tìm hiểu lý do tại sao một trường hợp đặc biệt của bộ lọc sản phẩm lại không hoạt động. Anh ta xem xét luồng dữ liệu và logic bên trong hàm lọc. Đây là một ví dụ của loại kiểm thử nào?
A. Kiểm thử hộp đen.
B. Kiểm thử chấp nhận.
C. Kiểm thử hiệu suất.
D. Kiểm thử hộp trắng (White-box Testing).
Câu 10.Trong quá trình cài đặt, lập trình viên Hùng phát hiện rằng một đoạn mã của tính năng tìm kiếm hoạt động không hiệu quả khi xử lý hàng triệu sản phẩm. Hùng quyết định viết lại đoạn mã đó để cải thiện hiệu suất mà không thay đổi chức năng. Hoạt động này được gọi là gì?
A. Thêm tính năng mới.
B. Sửa lỗi chức năng.
C. Tích hợp.
D. Tái cấu trúc (Refactoring).
Câu 11.Khi hai lập trình viên cùng làm việc trên cùng một tệp mã nguồn và đẩy thay đổi lên hệ thống kiểm soát phiên bản, có thể xảy ra “xung đột mã nguồn” (merge conflict). Công cụ nào giúp giải quyết vấn đề này?
A. Trình biên dịch.
B. Trình gỡ lỗi.
C. Công cụ xây dựng tự động.
D. Hệ thống kiểm soát phiên bản (Version Control System – VCS) như Git.
Câu 12.Để đảm bảo tính năng tìm kiếm nâng cao có thể hoạt động hiệu quả khi triển khai, việc lập trình cần tuân thủ nguyên tắc “Low Coupling” (Tính phụ thuộc thấp). Điều này có nghĩa là gì?
A. Các module nên có ít lỗi.
B. Các module nên được thiết kế độc lập.
C. Các module nên có khả năng tái sử dụng cao.
D. Các module trong hệ thống tìm kiếm nên ít phụ thuộc vào nhau, giảm thiểu ảnh hưởng khi có thay đổi.
Câu 13.Nếu tính năng tìm kiếm mới được cài đặt mà không có kiểm thử đơn vị và tích hợp đầy đủ, hậu quả có thể là gì?
A. Giảm chi phí phát triển.
B. Dự án hoàn thành sớm hơn.
C. Chất lượng sản phẩm cao hơn.
D. Nhiều lỗi nghiêm trọng bị phát hiện sau khi triển khai cho người dùng.
Câu 14.Trong môi trường phát triển tích hợp (IDE), chức năng nào giúp lập trình viên nhanh chóng kiểm tra xem mã nguồn của họ có lỗi cú pháp hoặc ngữ pháp hay không trước khi chạy?
A. Trình gỡ lỗi.
B. Kiểm thử đơn vị.
C. Tích hợp liên tục.
D. Biên dịch (Compilation).
Câu 15.Khi một lập trình viên viết mã cho tính năng tìm kiếm, anh ta nên áp dụng nguyên tắc “Modularity” (Tính mô-đun) như thế nào?
A. Viết tất cả code vào một tệp.
B. Không chia nhỏ chức năng.
C. Làm cho các thành phần phụ thuộc chặt chẽ.
D. Chia tính năng tìm kiếm thành các thành phần nhỏ, độc lập (ví dụ: module tìm kiếm, module lọc, module hiển thị).
Câu 16.Nhóm phát triển đang tích hợp module `PaymentGateway` (Cổng thanh toán) vào ứng dụng mua sắm. Để kiểm tra sự tương tác giữa `PaymentGateway` và module `OrderProcessing` (Xử lý đơn hàng), họ nên tập trung vào loại trường hợp kiểm thử nào?
A. Kiểm thử đơn vị cho `PaymentGateway`.
B. Kiểm thử hiệu suất toàn hệ thống.
C. Kiểm thử giao diện người dùng.
D. Kiểm thử giao diện (Interface Testing) giữa hai module.
Câu 17.Lập trình viên Linh đang cố gắng tái tạo một lỗi trong tính năng tìm kiếm chỉ xảy ra “thỉnh thoảng” và rất khó bắt. Lỗi này thuộc loại nào và là một thách thức trong pha cài đặt?
A. Lỗi cú pháp.
B. Lỗi logic dễ.
C. Lỗi chức năng.
D. Lỗi điều kiện tranh chấp (Race Condition) hoặc lỗi thời gian (Timing Bug).
Câu 18.Để đảm bảo tính năng tìm kiếm được tích hợp liên tục và chất lượng, công cụ “Build Automation” (Xây dựng tự động) như Maven hoặc Gradle có vai trò gì?
A. Chỉ để viết code.
B. Chỉ để gỡ lỗi.
C. Chỉ để quản lý dự án.
D. Tự động biên dịch mã, chạy các kiểm thử tự động, và tạo ra các bản dựng (builds).
Câu 19.Một “Test Harness” (Hệ thống kiểm thử) trong kiểm thử đơn vị có chức năng chính là gì?
A. Để triển khai phần mềm.
B. Để làm cho code phức tạp hơn.
C. Để gỡ lỗi trực tiếp.
D. Cung cấp môi trường để chạy và kiểm tra một đơn vị mã độc lập, bao gồm các driver và stub.
Câu 20.Nếu tính năng tìm kiếm mới gây ra lỗi trong các phần khác của ứng dụng mua sắm đã hoạt động đúng trước đây, đây là loại lỗi gì?
A. Lỗi cú pháp.
B. Lỗi hiệu suất.
C. Lỗi bảo mật.
D. Lỗi hồi quy (Regression Bug).
Câu 21.Trong Pha Cài đặt, việc sử dụng các “Framework” (Khung làm việc) như Spring Boot (Java) hoặc Django (Python) mang lại lợi ích gì cho việc phát triển tính năng tìm kiếm?
A. Chúng làm cho code dài hơn và khó hiểu hơn.
B. Chúng chỉ hữu ích cho các dự án nhỏ.
C. Chúng loại bỏ hoàn toàn nhu cầu viết code.
D. Cung cấp cấu trúc sẵn có, các thư viện và quy tắc giúp tăng tốc độ phát triển và đảm bảo tính nhất quán.
Câu 22.Mục tiêu của việc “Code Review” (Đánh giá mã) trong pha cài đặt là gì?
A. Chỉ để tìm lỗi cú pháp.
B. Để kiểm tra hiệu suất.
C. Để xác định người mắc lỗi.
D. Cải thiện chất lượng mã, chia sẻ kiến thức giữa các lập trình viên và phát hiện lỗi sớm.
Câu 23.Khi các lập trình viên làm việc trên các module của tính năng tìm kiếm, việc giữ cho các module có “High Cohesion” (Tính liên kết cao) có nghĩa là gì?
A. Các module nên phụ thuộc chặt chẽ vào nhau.
B. Các module nên được đặt trong cùng một thư mục.
C. Các module nên có nhiều giao diện.
D. Các phần tử bên trong mỗi module (ví dụ: các hàm, biến) đều tập trung vào một mục đích duy nhất và liên quan chặt chẽ với nhau.
Câu 24.Để đảm bảo tính năng tìm kiếm hoạt động ổn định trên nhiều thiết bị (PC, điện thoại, máy tính bảng), điều gì cần được xem xét trong cài đặt và kiểm thử tích hợp?
A. Chỉ kiểm thử trên một thiết bị duy nhất.
B. Bỏ qua các yêu cầu về tương thích.
C. Chỉ tập trung vào hiệu suất.
D. Khả năng tương thích (Compatibility) và thiết kế đáp ứng (Responsive Design).
Câu 25.Khi một lập trình viên hoàn thành việc viết mã cho một phần nhỏ của tính năng tìm kiếm và xác nhận nó hoạt động đúng, anh ấy sẽ “Commit” mã của mình vào hệ thống kiểm soát phiên bản. Hành động này có ý nghĩa gì trong quy trình phát triển?
A. Triển khai code trực tiếp lên môi trường sản phẩm.
B. Hoàn thành toàn bộ tính năng.
C. Bắt đầu giai đoạn kiểm thử hệ thống.
D. Lưu lại các thay đổi vào kho lưu trữ chung, sẵn sàng cho việc tích hợp và kiểm thử tiếp theo.