🚜 Khi kiểm thử các chức năng liên quan đến File Uploader hay File Management, mình thấy nhiều tester thường tập trung vào các trường hợp như tên file dài ngắn, định dạng được cho phép, giới hạn dung lượng, upload trùng lặp hoặc timeout khi upload file có dung lượng lớn. Đây đều là những trường hợp cơ bản và luôn cần phải test. Nhưng, bạn có tự hỏi câu này không: “Nếu người dùng tải lên một file chứa virus/malware thì sao?”
Trong giai đoạn phân tích yêu cầu, nếu không hỏi câu này, nhóm của bạn có thể quên nghĩ tới việc tích hợp một cơ chế quét virus và malware cho các file đã được tải lên trên hệ thống. Có thể quét ngay sau khi file được tải lên, hoặc quét định kỳ (ví dụ 5 phút 1 lần), hoặc quét khi người dùng tải xuống (như Google Drive hay làm). Điều này có thể dẫn đến thiếu task và việc ước lượng thời gian hoàn thành chức năng này sẽ không chính xác.
Trong giai đoạn kiểm thử, đây là một trường hợp “ít tốn công sức nhưng hiệu quả cao”. Chỉ cần vài phút chuẩn bị dữ liệu test, thì có thể giúp phát hiện các vấn đề (nếu có) trong cả chuỗi xử lý từ việc quét virus định kỳ, xử lý ngay (ví dụ di chuyển file vào một thư mục riêng hay gọi là ‘khu vực cô lập’), và thông báo cho nhóm phụ trách (ví dụ devops) qua email hay một dashboard chung.
Cách giả lập file nhiễm virus để kiểm thử
Nếu tìm được một file nhiễm virus thật, bạn có được phép sử dụng nó để kiểm thử tính năng File Management của bạn không?
Mình không khuyến khích dùng malware thật, kể cả trên môi trường dev. Thay vào đó, bạn nên chuẩn bị một tập tin nhiễm virus giả. Lúc đầu mình cũng từng nghi ngờ liệu dùng file giả có đáng tin không. Nhưng sau khi tìm hiểu thì nếu sử dụng đúng vẫn đáng tin cậy.
Mình thường dùng tập tin nhiễm virus giả do EICAR cung cấp, đây là một tập tin đặc biệt được cộng đồng chống virus sử dụng để kiểm tra xem chương trình quét virus và malware của họ có hoạt động đúng hay không.
Đây không phải là file nhiễm virus thật, vì thế không gây hại cho hệ thống của mình. Hiểu đơn giản, nó giống như nút TEST trên thiết bị báo cháy: mục tiêu là để kiểm tra cơ chế cảnh báo có hoạt động hay không. Tương tự, file nhiễm virus giả này sẽ giúp kích hoạt cơ chế phát hiện của các chương trình chống virus, tương tự như khi gặp malware thật.
Cách mình làm khá đơn giản. Nếu hệ thống hỗ trợ upload file .txt, mình sẽ tạo một file text bình thường, ví dụ “tap tin bi nhiem virus.txt”, sau đó copy nội dung theo hướng dẫn trên trang EICAR chính thức vào file này rồi upload lên hệ thống để kiểm tra cơ chế phát hiện virus. Đây là phần nội dung file:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Lưu ý: Nếu bạn sử dụng định dạng file không được hỗ trợ thì file này sẽ bị chặn ngay từ bước tải lên, vì thế sẽ không kiểm tra được tính năng quét virus.

Sau đó, mình sẽ kiểm tra cách hệ thống xử lý file bị nhiễm virus. Xem nó có chạy đúng theo yêu cầu không. Bên mình thì áp dụng cơ chế “hậu kiểm”, giúp phát hiện vấn đề trong cả chuỗi xử lý. Ví dụ hệ thống có thực sự quét virus đúng cách không, file có được chuyển sang khu vực cô lập (quarantine) hay không, và nhóm phụ trách có nhận được cảnh báo đầy đủ qua email, Slack hoặc dashboard không.
Một điều mình thường kiểm tra thêm ở bước này là luồng thông báo: qua kênh nào, báo cho ai, ai có quyền xem thông tin này, bước tiếp theo cần làm là gì, v.v…
Ngoài file bình thường như trên, mình cũng hay test thêm các biến thể như file .zip, nén nhiều tầng (nén file đã nén thêm vài lần nữa) hoặc đổi đuôi file nén thành định dạng khác để xem hệ thống quét virus sâu tới mức nào.
Một số vấn đề liên quan đến kiểm thử file hình ảnh .PNG
Có thể bạn đang thắc mắc, “file ảnh .png có chứa virus không?”
Mình cũng từng nghĩ khá đơn giản là: “file ảnh png thì có gì phải lo, nó đâu thực thi được như file exe, dll, hay file jar.”
Trên thực tế, đúng là file png không tự chạy mã độc vì bên trong chứa một đoạn mã độc nào đó. Nếu mở bằng chương trình xem ảnh bình thường thì hệ điều hành không thực thi nội dung bên trong file ảnh. Nhưng, điều đáng chú ý nằm ở cách hệ thống của bạn xử lý file ảnh sau khi upload.
Lúc này, mình thường hỏi thêm team hoặc dev về luồng xử lý ảnh phía backend để biết thêm, ví dụ, sau khi upload file thành công, hệ thống có thực hiện việc thay đổi kích thước ảnh không? Có tạo các phiên bản thumbnail không? Có thực hiện hành động OCR hay đọc chuyển đổi file sang định dạng khác không?
Vì nếu câu trả lời là CÓ, thì hãy hỏi tiếp để kiểm tra xem các thư viện xử lý ảnh có vấn đề gì với các hành động trên không. Vì một file png được tạo đặc biệt vẫn có thể gây sự cố trong quá trình hệ thống của bạn đọc hoặc xử lý ảnh đó. Vì vậy, khi test chức năng upload ảnh, mình thường hỏi: Nếu có một file bất thường hoặc bị “xào nấu” đặc biệt, thì hệ thống mình có upload, quét định kỳ, xử lý, và lưu trữ nó an toàn không?
Điều này cũng có nghĩa là đôi khi bug không nằm ở chức năng upload file, mà nằm ở bước thay đổi kích thước ảnh, tạo thumbnail, hoặc bước đọc nội dung OCR ở phía backend.
Cuối cùng, theo kinh nghiệm của mình, một chức năng upload file tưởng như đơn giản thực tế lại kéo theo khá nhiều câu hỏi về bảo mật, vận hành và UX. Chỉ cần dành thêm vài phút để kiểm tra luồng quét virus và cảnh báo, đôi khi bạn có thể phát hiện ra những khoảng trống mà cả team chưa từng nghĩ tới.
P/S: Phạm vi bài viết này không đề cập đến việc kiểm thử chức năng xử lý nội dung của file. Ví dụ phân tích file MS Excel để tạo dữ liệu trong cơ sở dữ liệu. Lúc này bạn cần quan tâm đến cấu trúc nội dung phù hợp theo yêu cầu.





nếu mk dùng file excel thì mk sẽ làm như nào ạ
Hi Hang,
Bạn thử tạo file MS Excel và cho nội dung TEXT trong bài viết vào file excel đó rồi upload thử nha.