Đáp án đúng: B. Mã hoá thông tin xác thực - dùng HTTPS khi truyền, băm mật khẩu phía máy chủ, lưu token trong kho an toàn của hệ điều hành như flutter_secure_storage - là thực hành cốt lõi để bảo vệ danh tính người dùng. Ngược lại, lưu mật khẩu ở dạng thô trên thiết bị (A) tạo ra điểm rò rỉ trực tiếp; dùng HTTP không mã hoá (C) khiến thông tin bị nghe lén trên đường truyền; và nhúng cứng token vào mã nguồn (D) là lỗi nghiêm trọng vì token sẽ lộ ngay khi ứng dụng bị dịch ngược.
Tất cả câu hỏi
Ngân hàng câu hỏi trắc nghiệm có đáp án và giải thích chi tiết.
Đáp án đúng: C. Nguyên tắc thiết kế nâng cao trải nghiệm biểu mẫu là nhãn rõ ràng và phản hồi tức thời: mỗi trường có nhãn dễ hiểu, gợi ý định dạng, và khi nhập sai thì thông báo lỗi hiện ngay cạnh trường với hướng dẫn cách sửa. Trong Flutter, InputDecoration cùng validator của TextFormField phục vụ đúng mục đích này. Biểu mẫu quá dài (A) làm người dùng bỏ cuộc; kiểm tra dữ liệu sơ sài (B) đẩy lỗi xuống phía sau; ẩn thông báo lỗi (D) khiến người dùng không biết phải sửa gì - cả ba đều làm giảm tính khả dụng.
Đáp án đúng: C. SharedPreferences chỉ được thiết kế để lưu các cặp khoá - giá trị nhỏ, kiểu nguyên thuỷ như cờ đã đăng nhập, chế độ sáng tối, ngôn ngữ đã chọn. Toàn bộ nội dung được nạp vào bộ nhớ và ghi ra một tệp phẳng, nên nó KHÔNG phù hợp với dữ liệu lớn, có cấu trúc phức tạp hay cần truy vấn - những trường hợp đó phải dùng sqflite hoặc Hive. Phương án A sai vì dữ liệu vẫn được lưu bền qua các lần mở ứng dụng; phương án B sai vì gói hoạt động trên mọi nền tảng; phương án D sai vì SharedPreferences không dùng SQL.
Đáp án đúng: B. Navigator quản lý các màn hình theo cấu trúc NGĂN XẾP: Navigator.push đặt một route mới lên đỉnh ngăn xếp, Navigator.pop lấy route trên cùng ra và quay lại màn hình trước đó. Chính mô hình này khiến nút Back của hệ thống hoạt động đúng như người dùng kỳ vọng, và cho phép truyền dữ liệu trả về khi pop. Phương án A nhầm sang cách bố trí widget dạng lưới; phương án C mô tả hành vi ngẫu nhiên không tồn tại; phương án D sai vì lập trình viên hoàn toàn kiểm soát việc đẩy và gỡ route.
Đáp án đúng: C. JSON là định dạng trao đổi dữ liệu phổ biến nhất trong các REST API hiện nay vì gọn nhẹ, dễ đọc với con người, ánh xạ tự nhiên sang cấu trúc đối tượng của hầu hết ngôn ngữ và được hỗ trợ sẵn ở cả trình duyệt lẫn máy chủ. Trong Flutter, dữ liệu JSON được xử lý bằng dart:convert với jsonDecode và jsonEncode. XML (A) từng thống trị thời SOAP nhưng nay ít dùng vì dài dòng; CSV (B) chỉ phù hợp dữ liệu bảng phẳng; còn định dạng nhị phân (D) chỉ dùng trong các trường hợp đặc thù cần hiệu năng cao như gRPC hay Protobuf.
Đáp án đúng: C. Ưu thế lớn nhất của Flutter là cho phép xây dựng ứng dụng từ MỘT bộ mã nguồn duy nhất rồi biên dịch ra nhiều nền tảng: Android, iOS, web, Windows, macOS và Linux, nhờ engine tự vẽ giao diện nên hiển thị nhất quán giữa các nền tảng. Phương án A mô tả cách phát triển native truyền thống, đúng là điều Flutter khắc phục; phương án B sai vì Flutter dùng Dart chứ không phải JavaScript; phương án D sai vì từ phiên bản 2 trở đi Flutter đã hỗ trợ chính thức cả web và desktop, không giới hạn ở di động.
Đáp án đúng: B. Firebase Authentication là dịch vụ xác thực sẵn có, hỗ trợ đăng nhập bằng email/mật khẩu, số điện thoại và các nhà cung cấp như Google, Facebook, Apple; nó quản lý token, làm mới phiên và trạng thái đăng nhập giúp lập trình viên, nên đơn giản hoá đáng kể việc triển khai xác thực trong Flutter. Các phương án còn lại là những gói phục vụ mục đích khác: sqflite (A) là cơ sở dữ liệu SQLite cục bộ, Provider (C) là giải pháp quản lý trạng thái, http (D) là thư viện gọi API - không gói nào tự thân cung cấp cơ chế xác thực.
Đáp án đúng: B. Từ khoá await tạm dừng việc thực thi hàm hiện tại cho tới khi Future hoàn tất rồi trả về giá trị của Future đó, giúp viết mã bất đồng bộ theo phong cách tuần tự dễ đọc. Nó chỉ dùng được bên trong hàm đã được đánh dấu async, và đó chính là vai trò của từ khoá async (A): đánh dấu hàm trả về Future chứ bản thân nó không tạm dừng gì cả. Future (C) là KIỂU dữ liệu biểu diễn một giá trị sẽ có trong tương lai, không phải từ khoá điều khiển; còn delay (D) không phải từ khoá của Dart - liên quan là hàm Future.delayed.
Đáp án đúng: B. Chức năng đăng xuất tồn tại vì lý do BẢO MẬT: nó kết thúc phiên làm việc một cách an toàn, xoá token đang lưu, xoá thông tin nhạy cảm khỏi bộ nhớ và bộ nhớ cục bộ, đồng thời báo cho máy chủ thu hồi phiên. Nếu thiếu, người dùng tiếp theo trên cùng thiết bị vẫn truy cập được tài khoản cũ. Giải phóng bộ nhớ (A) chỉ là hệ quả phụ không đáng kể; cải thiện giao diện (C) và đổi giao diện màu sắc (D) hoàn toàn không liên quan tới mục đích của thao tác đăng xuất.
Đáp án đúng: B. Flutter SDK là bộ công cụ phát triển gồm framework widget, công cụ dòng lệnh (flutter run, flutter build), trình biên dịch Dart, engine kết xuất và các thư viện hỗ trợ. Nói ngắn gọn, nó cung cấp CÔNG CỤ VÀ THƯ VIỆN để lập trình viên xây dựng ứng dụng Flutter. Phương án A nhầm sang vai trò của các giải pháp lưu trữ như shared_preferences, Hive hay sqflite; phương án C sai vì việc phát hành lên cửa hàng ứng dụng do các công cụ và quy trình riêng của Google Play hoặc App Store đảm nhiệm; phương án D vô lý vì SDK chạy trên hệ điều hành chứ không thay thế nó.
Đáp án đúng: C. Trong Flutter, gói shared_preferences cung cấp các phương thức đặt giá trị theo kiểu dữ liệu: setInt, setString, setBool, setDouble và setStringList, đi kèm các phương thức đọc getInt, getString... Vì vậy để lưu một số nguyên ta gọi prefs.setInt('key', value). Cần phân biệt với SharedPreferences NATIVE của Android, nơi API là editor.putInt() - đó chính là bẫy của phương án B. Các phương án saveInt() (A) và writeInt() (D) không tồn tại trong cả hai nền tảng. Lưu ý các phương thức set này trả về Future<bool> nên thường được await.
Đáp án đúng: A. Nhiệm vụ của Test Lead / Test Leader mang tính quản lý và định hướng: làm việc với nhà cung cấp công cụ để tận dụng công cụ cho dự án (i), viết báo cáo tổng kết kiểm thử từ dữ liệu thu thập được (ii), và quyết định cái gì nên tự động hoá, tự động tới mức nào và bằng cách nào (iii). Riêng việc soạn đặc tả kiểm thử, tức thiết kế chi tiết các ca kiểm thử (iv), là công việc của người kiểm thử (tester) chứ không phải của trưởng nhóm. Vậy i, ii, iii đúng và iv sai, đúng như phương án A.
Đáp án đúng: C. Giá trị cốt lõi mà công cụ và tự động hoá mang lại nằm ở cả hai nhóm thuộc tính. Thứ nhất là tốc độ và hiệu suất: máy chạy hàng nghìn ca kiểm thử trong thời gian con người chỉ chạy được vài chục, cho phép hồi quy sau mỗi lần build. Thứ hai là độ chính xác và tính nhất quán: công cụ lặp lại đúng từng bước, không mệt mỏi, không bỏ sót, nên kết quả có thể tái lập. Vì cả (1) và (2) đều đúng nên phải chọn phương án gộp; chọn riêng A hoặc B đều bỏ mất một nửa lợi ích, còn D phủ định cả hai nên sai.
Đáp án đúng: D. Công cụ quản lý kiểm thử (test management tool) là nơi lưu ca kiểm thử, lập lịch thực thi, ghi nhận sự cố phát hiện được và duy trì liên kết truy vết giữa yêu cầu - ca kiểm thử - kết quả. Đúng ba việc mà câu hỏi nêu. Công cụ phân tích động (A) theo dõi hành vi chương trình lúc chạy; công cụ thực thi kiểm thử (B) chỉ chạy kịch bản và so sánh kết quả; công cụ gỡ lỗi (C) hỗ trợ lập trình viên khoanh vùng lỗi; công cụ quản lý cấu hình (E) quản lý phiên bản và thay đổi của các hạng mục, không phụ trách lập lịch kiểm thử hay ghi nhận sự cố.
Đáp án đúng: B. Kiểm thử hồi quy là chạy lại nhiều lần cùng một bộ ca kiểm thử sau mỗi lần phần mềm thay đổi, nên nó là ứng viên số một cho tự động hoá bằng công cụ ghi và phát lại (Record/Playback, còn gọi là capture-replay): thao tác của người kiểm thử được ghi thành kịch bản rồi phát lại tự động ở các phiên bản sau. Công cụ hiệu năng (1) phục vụ đo thời gian đáp ứng và khả năng chịu tải, không phải mục đích của hồi quy. Vì chỉ (2) đúng nên phương án gộp C và phương án phủ định D đều bị loại.
Đáp án đúng: B. Quản lý cấu hình bao gồm: định danh các hạng mục cấu hình và phiên bản kiểm thử (C), ghi nhận trạng thái của các hạng mục cấu hình (A), lưu vết mọi thay đổi tài liệu theo thời gian (D) và quản lý một thư viện được kiểm soát để truy cập có phép (E). Riêng việc đánh giá sự phù hợp với tiêu chuẩn ISO 9001 (B) là hoạt động ĐÁNH GIÁ CHẤT LƯỢNG của tổ chức, thuộc phạm vi bảo đảm chất lượng và kiểm toán chất lượng, không nằm trong quản lý cấu hình.
Đáp án đúng: A. Ma trận Chức năng/Kiểm thử (Function/Test Matrix) đối chiếu từng chức năng của hệ thống với các ca kiểm thử tương ứng và trạng thái thực hiện của chúng, cho thấy tiến độ và mức bao phủ TẠI THỜI ĐIỂM đang kiểm thử. Vì được lập và cập nhật trong lúc kiểm thử còn diễn ra, nó được xếp vào nhóm báo cáo kiểm thử tạm thời (interim test report). Báo cáo kiểm thử cuối cùng (B) chỉ lập khi kết thúc; báo cáo trạng thái dự án (C) và báo cáo quản lý (D) có phạm vi rộng hơn, không phải phân loại của tài liệu này.
Đáp án đúng: A. Testware gồm ca kiểm thử, dữ liệu kiểm thử, kịch bản, công cụ và tài liệu kiểm thử; chúng phải được quản lý cấu hình đúng như yêu cầu, thiết kế và mã nguồn, để luôn biết phiên bản testware nào tương ứng với phiên bản phần mềm nào. Phương án B sai vì testware cần được tái sử dụng và bảo trì chứ không dựng lại từ đầu cho mỗi phiên bản; phương án C sai vì testware vẫn cần cho kiểm thử bảo trì sau khi phát hành; phương án D sai vì testware càng phải được tài liệu hoá tốt để người khác dùng lại được.
Đáp án đúng: A. Ghép đúng là 1Y, 2Z, 3X, 4W. Decision Table Testing (1) dựng bảng tổ hợp các điều kiện đầu vào, nhờ đó kiểm thử được những tổ hợp mà lẽ thường sẽ bị bỏ sót - khớp với Y. Decision Testing (2) là một dạng kiểm thử luồng điều khiển dựa trên kết quả của các quyết định, tức bao phủ nhánh - khớp với Z. State Transition Testing (3) kiểm tra phản ứng khác nhau của hệ thống tuỳ theo trạng thái hiện tại và lịch sử trước đó - khớp với X. Exploratory Testing (4) là kiểm thử theo phiên có mục tiêu, bổ trợ cho kiểm thử có cấu trúc - khớp với W.
Đáp án đúng: A. Kiểm thử hộp xám (Gray Box Testing) kết hợp đặc điểm của cả hai: người kiểm thử thiết kế ca kiểm thử chủ yếu theo đặc tả như hộp đen, nhưng có hiểu biết một phần về cấu trúc bên trong - cấu trúc dữ liệu, thuật toán, lược đồ cơ sở dữ liệu - như hộp trắng, nhờ đó chọn được dữ liệu kiểm thử sắc bén hơn. "Hybrid Testing" (B) không phải thuật ngữ chuẩn trong phân loại kỹ thuật kiểm thử, nên phương án C gộp cả hai và phương án D phủ định đều không đúng.