Mục lục bài họcĐang ở d01-b2
← IB Computer Science
0/32 bài đã học xong
Chương 1 · System Fundamentals · Bài 2/4 của chương · bài 2/32 của IB Computer Science

Human Interaction, Testing and Deployment

Tương tác người dùng, kiểm thử và triển khai
← Mục lục bài học
Lý thuyết · English

Usability and accessibility. A system that works but is hard to use will be worked around, so usability is a functional requirement rather than a decoration. Standard usability principles: make system state visible, match the user's vocabulary rather than the developer's, keep interfaces consistent, prevent errors rather than only reporting them, allow undo, and minimise the load on memory by showing options instead of requiring recall. Accessibility is the design of systems usable by people with visual, hearing, motor or cognitive impairments: screen-reader compatibility, sufficient colour contrast and never using colour alone to carry meaning, keyboard operability, captions, and adjustable text size. Accessible design consistently improves usability for everyone, which is the argument to make when a question asks whether it is worth the cost.

Testing. Test data must be chosen deliberately in three categories. Normal data is within the accepted range and should be processed correctly. Boundary (extreme) data is at the edge of the accepted range and is where off-by-one errors live — if valid marks run from 0 to 100, the boundary cases are 0, 100, and also the values just outside. Abnormal (erroneous) data is outside the range or of the wrong type and must be rejected gracefully. Testing proceeds from unit tests of individual modules, through integration testing of modules working together, to user acceptance testing, which is the only stage that answers whether the system meets the original requirements. A crucial limitation: testing can show the presence of faults, never their absence.

Deployment. Four changeover methods trade cost against risk. Direct changeover switches over at once: cheapest and fastest, but with no fallback. Parallel running operates both systems together and compares outputs: safest and it detects data errors, but it doubles the workload. Phased introduces one module at a time. Pilot deploys the whole system to a small part of the organisation first, limiting damage and allowing lessons to be learned. Data migration is the most under-estimated risk: differences in format and character encoding, incompatible or duplicated codes, missing fields and local conventions all mean data must be cleaned and reconciled, not merely copied.

Documentation and training. User documentation may take the form of manuals, embedded help, online tutorials or live support; training may be self-instruction, formal classes or remote sessions, and the right choice depends on the number of users, how dispersed they are and how complex the task is. Both must be planned as part of the project rather than added at the end.

Giải thích tiếng Việt

Tính khả dụng và khả năng tiếp cận. Một hệ thống chạy đúng nhưng khó dùng sẽ bị người dùng đi vòng qua, nên tính khả dụng là một yêu cầu chức năng chứ không phải phần trang trí. Các nguyên tắc chuẩn: làm cho trạng thái hệ thống hiện rõ, dùng từ vựng của người dùng chứ không của lập trình viên, giữ giao diện nhất quán, ngăn lỗi từ đầu chứ không chỉ báo lỗi, cho phép hoàn tác, và giảm gánh nặng trí nhớ bằng cách hiển thị lựa chọn thay vì bắt người dùng nhớ lại. Khả năng tiếp cận là việc thiết kế hệ thống dùng được cho người khiếm thị, khiếm thính, hạn chế vận động hoặc hạn chế nhận thức: tương thích với trình đọc màn hình, độ tương phản màu đủ và không bao giờ dùng riêng màu sắc để truyền tải ý nghĩa, thao tác được hoàn toàn bằng bàn phím, phụ đề, và cỡ chữ điều chỉnh được. Thiết kế có tính tiếp cận cải thiện tính khả dụng cho tất cả mọi người — đó là lập luận cần nêu khi đề hỏi liệu nó có đáng chi phí không.

Kiểm thử. Dữ liệu kiểm thử phải được chọn có chủ đích theo ba loại. Dữ liệu thường nằm trong khoảng hợp lệ và phải được xử lý đúng. Dữ liệu biên nằm ngay ở rìa khoảng hợp lệ và là nơi trú ngụ của các lỗi lệch một đơn vị — nếu điểm hợp lệ chạy từ 0 tới 100 thì các trường hợp biên là 0, 100, và cả những giá trị vừa vượt ra ngoài. Dữ liệu sai nằm ngoài khoảng hoặc sai kiểu và phải bị từ chối một cách có kiểm soát. Kiểm thử đi từ đơn vị cho từng mô-đun, qua tích hợp khi các mô-đun làm việc cùng nhau, tới nghiệm thu người dùng — giai đoạn duy nhất trả lời được câu hỏi hệ thống có đáp ứng yêu cầu ban đầu hay không. Một giới hạn then chốt: kiểm thử chứng minh được sự CÓ MẶT của lỗi, không bao giờ chứng minh được sự VẮNG MẶT của lỗi.

Triển khai. Bốn phương pháp chuyển đổi đánh đổi giữa chi phí và rủi ro. Chuyển thẳng chuyển sang cùng lúc: rẻ và nhanh nhất nhưng không có đường lui. Chạy song song vận hành cả hai hệ thống rồi đối chiếu kết quả: an toàn nhất và phát hiện được sai lệch dữ liệu, nhưng nhân đôi khối lượng công việc. Chuyển theo giai đoạn đưa từng phân hệ vào lần lượt. Chuyển thí điểm triển khai toàn bộ hệ thống nhưng chỉ cho một bộ phận nhỏ trước, giới hạn thiệt hại và cho phép rút kinh nghiệm. Chuyển đổi dữ liệu là rủi ro bị đánh giá thấp nhất: khác biệt về định dạng và bảng mã ký tự, mã trùng hoặc không tương thích, trường bỏ trống và các quy ước riêng của từng bộ phận đều có nghĩa là dữ liệu phải được làm sạch và đối soát chứ không chỉ được sao chép.

Tài liệu và đào tạo. Tài liệu người dùng có thể ở dạng sổ tay, trợ giúp tích hợp, hướng dẫn trực tuyến hoặc hỗ trợ trực tiếp; đào tạo có thể là tự học, lớp học chính thức hoặc buổi học từ xa, và lựa chọn đúng phụ thuộc số lượng người dùng, mức độ phân tán về địa lý và độ phức tạp của công việc. Cả hai đều phải được hoạch định như một phần của dự án chứ không phải bổ sung vào cuối.

SƠ ĐỒ LUỒNG DỮ LIỆU MỨC 0 — HỆ THỐNG MƯỢN SÁCH ĐỘC GIẢ thực thể ngoài THỦ THƯ thực thể ngoài 1.0 XỬ LÝ MƯỢN TRẢ yêu cầu mượn xác nhận · hạn trả báo cáo quá hạn cập nhật kho sách D1 KHO SÁCH D2 GIAO DỊCH MƯỢN tra tình trạng ghi giao dịch Ô vuông = thực thể NGOÀI hệ thống · Vòng tròn = QUÁ TRÌNH · Hộp mở = KHO DỮ LIỆU Mọi luồng phải có TÊN. Không có luồng nào nối trực tiếp hai kho dữ liệu, hay hai thực thể ngoài Sơ đồ này mô tả hệ thống LÀM GÌ, không mô tả nó được lập trình như thế nào
Sơ đồ luồng dữ liệu bị chấm rất chặt theo ký hiệu, nên hãy nhớ ba hình và ba quy tắc. Ô vuông là thực thể NGOÀI hệ thống — người hoặc hệ thống khác gửi dữ liệu vào hoặc nhận dữ liệu ra, nhưng nằm ngoài phạm vi ta xây dựng. Vòng tròn là một quá trình biến đổi dữ liệu, và tên của nó phải là một ĐỘNG TỪ cộng tân ngữ như "xử lý mượn trả", không được đặt tên kiểu "hệ thống". Hộp mở một đầu là kho dữ liệu, tức nơi dữ liệu nằm lại giữa các lần dùng. Ba quy tắc bị bắt lỗi nhiều nhất. Một, mọi mũi tên phải có nhãn nêu rõ dữ liệu gì đang chảy; mũi tên không tên là mất điểm. Hai, không nối trực tiếp hai kho dữ liệu với nhau, cũng không nối trực tiếp hai thực thể ngoài — dữ liệu chỉ di chuyển được khi có một quá trình làm việc đó. Ba, không có quá trình nào chỉ có đầu vào mà không có đầu ra, và ngược lại. Điều quan trọng nhất về mặt khái niệm. Sơ đồ luồng dữ liệu mô tả hệ thống làm gì chứ không mô tả nó được hiện thực ra sao — không có vòng lặp, không có câu lệnh điều kiện, không có tên biến. Đây chính là lý do nó hữu ích ở giai đoạn phân tích: nó đủ đơn giản để người dùng không biết lập trình vẫn đọc được và chỉ ra chỗ bạn hiểu sai quy trình của họ, trong khi lưu đồ hay mã giả thì họ không đọc được.
Ví dụ — Chọn dữ liệu kiểm thử cho một hàm nhỏ mà không bỏ sót trường hợp

Một hàm nhận vào điểm số nguyên và trả về xếp loại: từ 0 tới 39 là Trượt, từ 40 tới 69 là Đạt, từ 70 tới 100 là Giỏi. Điểm ngoài khoảng 0 tới 100 phải bị từ chối. Hãy liệt kê bộ dữ liệu kiểm thử và giải thích vì sao mỗi giá trị được chọn.

Giải.

Nguyên tắc chọn: mỗi ranh giới sinh ra BA giá trị cần thử — ngay dưới, đúng tại, và ngay trên. Trong bài này có bốn ranh giới: 0, 40, 70 và 100.

Dữ liệu thường — một giá trị nằm giữa mỗi khoảng. Chọn 20 phải cho Trượt, 55 phải cho Đạt, 85 phải cho Giỏi. Ba giá trị này chứng minh logic chính hoạt động, nhưng chúng gần như không bao giờ phát hiện được lỗi.

Dữ liệu biên — đây mới là phần tìm ra lỗi. Tại ranh giới 0: thử 0 phải là Trượt, và thử âm 1 phải bị từ chối. Tại ranh giới 40: thử 39 phải là Trượt, thử 40 phải là Đạt. Tại ranh giới 70: thử 69 phải là Đạt, thử 70 phải là Giỏi. Tại ranh giới 100: thử 100 phải là Giỏi, thử 101 phải bị từ chối. Cặp 39 và 40 cùng cặp 69 và 70 là hai cặp quan trọng nhất, vì lỗi lệch một đơn vị — dùng dấu bé hơn thay vì bé hơn hoặc bằng — chỉ lộ ra ở đúng hai cặp này và không lộ ra ở bất kỳ giá trị nào khác.

Dữ liệu sai — phải phủ nhiều kiểu sai khác nhau, không chỉ số ngoài khoảng. Số âm lớn như âm 20 và số lớn như 150 để thử chặn khoảng. Chuỗi ký tự như "bảy mươi" để thử kiểm tra kiểu. Số thực như 70,5 để buộc chương trình quyết định rõ ràng: làm tròn, cắt phần thập phân, hay từ chối — và điều quan trọng là quyết định đó phải nhất quán với đặc tả. Giá trị rỗng hoặc bỏ trống để thử trường hợp không nhập gì.

Kết luận về phương pháp. Một bộ kiểm thử tốt không phải là bộ nhiều giá trị nhất mà là bộ trong đó mỗi giá trị được chọn vì một lý do. Nếu không giải thích được vì sao một giá trị nằm trong bộ, giá trị đó không đóng góp gì. Và nhớ giới hạn nền tảng: bộ kiểm thử này chỉ chứng minh được rằng chưa tìm thấy lỗi, chứ không chứng minh được hàm đúng.

Ví dụ — Chọn phương pháp chuyển đổi cho ba tình huống khác nhau

Hãy chọn phương pháp chuyển đổi cho từng trường hợp và biện minh: (a) hệ thống tính lương của một công ty 2 000 nhân viên; (b) hệ thống bán hàng của một chuỗi 80 cửa hàng; (c) hệ thống quản lý mượn sách của một thư viện trường học 600 học sinh.

Giải.

(a) Hệ thống tính lương — chạy song song. Đặc điểm quyết định là chi phí của một sai sót cực kỳ cao và không thể giấu: trả lương sai gây hậu quả pháp lý, mất lòng tin và phải khắc phục thủ công cho từng người. Chạy song song cho phép chạy cả hai hệ thống trong hai tới ba kỳ lương rồi đối chiếu từng bảng lương; mọi chênh lệch phải được giải thích trước khi tắt hệ thống cũ. Chi phí là nhân đôi công nhập liệu trong vài kỳ, nhưng đó là cái giá hợp lý. Ngoài ra tính lương chạy theo chu kỳ tháng nên việc đối chiếu có điểm mốc tự nhiên.

(b) Chuỗi 80 cửa hàng — chuyển thí điểm. Đặc điểm quyết định là tổ chức gồm nhiều đơn vị giống nhau, nên hoàn toàn có thể triển khai đầy đủ ở một nhóm nhỏ rồi mở rộng. Chọn khoảng năm cửa hàng đại diện đủ khác nhau — một cửa hàng lớn, một nhỏ, một ở vùng có đường truyền kém — chạy trong vài tuần, sửa những vấn đề lộ ra, rồi triển khai theo đợt. Ưu điểm là thiệt hại nếu hỏng chỉ giới hạn ở năm cửa hàng, và đội triển khai học được rất nhiều trước khi nhân rộng. Chạy song song ở đây không hợp lý vì nhập đơn hàng hai lần tại quầy là bất khả thi trong giờ bán.

(c) Thư viện trường — chuyển thẳng, vào kỳ nghỉ. Đặc điểm quyết định là hậu quả của sai sót thấp và có cửa sổ thời gian ngừng hoạt động. Nếu hệ thống mới trục trặc, thư viện có thể ghi mượn trả bằng giấy vài ngày mà không gây thiệt hại đáng kể. Chuyển thẳng vào kỳ nghỉ cho phép chuyển dữ liệu và kiểm tra khi không có giao dịch phát sinh, và nó rẻ nhất — điều đáng kể với ngân sách của một trường học. Điều kiện đi kèm là phải sao lưu đầy đủ dữ liệu cũ và có phương án quay lại.

Nguyên tắc rút ra để trả lời mọi câu hỏi dạng này. Đừng học thuộc bốn phương pháp rồi chọn bừa. Hãy hỏi ba câu: hậu quả của một sai sót nghiêm trọng tới đâu, có thể vận hành hai hệ thống cùng lúc không, và tổ chức có gồm nhiều đơn vị giống nhau để làm thí điểm không. Ba câu hỏi này gần như luôn chỉ thẳng tới một phương pháp duy nhất.

Bẫy hay mất điểm — Bẫy 1 — coi kiểm thử là bằng chứng chương trình đúng. Kiểm thử chứng minh sự CÓ MẶT của lỗi, không bao giờ chứng minh sự VẮNG MẶT. Nêu được giới hạn này là một điểm dễ lấy trong câu hỏi đánh giá.
Bẫy 2 — nhầm dữ liệu biên với dữ liệu sai. Dữ liệu biên nằm ngay ở RÌA khoảng hợp lệ và PHẢI được chấp nhận hoặc từ chối đúng theo đặc tả; dữ liệu sai nằm ngoài khoảng hoặc sai kiểu và phải bị từ chối. Với mỗi ranh giới hãy thử ba giá trị: ngay dưới, đúng tại, ngay trên.
Bẫy 3 — coi chuyển đổi dữ liệu là thao tác sao chép. Định dạng khác nhau, bảng mã ký tự khác nhau, mã trùng, trường bỏ trống và quy ước riêng của từng bộ phận đều phải được làm sạch và đối soát; bỏ qua khâu này khiến hệ thống mới khởi động với dữ liệu sai và mọi con số sau đó đều sai theo.
Phải nhớ — Chốt bài 2. Bốn thứ mang vào phòng thi. Một, ba loại dữ liệu kiểm thử và quy tắc mỗi ranh giới sinh ba giá trị cần thử; nêu kèm giới hạn nền tảng của kiểm thử. Hai, ba cấp kiểm thử — đơn vị, tích hợp, nghiệm thu — và nhớ rằng chỉ nghiệm thu người dùng mới trả lời được câu hỏi hệ thống có đáp ứng yêu cầu ban đầu. Ba, ba câu hỏi để chọn phương pháp chuyển đổi: hậu quả sai sót, khả năng vận hành song song, và có đơn vị để thí điểm không. Bốn, khả năng tiếp cận cải thiện tính khả dụng cho tất cả — đây là lập luận chuẩn khi đề hỏi nó có đáng chi phí không.

Đọc xong rồi — làm thử ngay

Bài tập của chương System Fundamentals gồm 14 câu trắc nghiệm và 5 đề tự luận. Đáp án hiện ngay khi chọn, miễn phí.

Làm bài tập chương →