Đang tải...

Lửng Lọc Lõi

Đeo kính để soi Bug cho rõ, nhíu mày để nhắc Dev sửa cho kỹ. Với tôi, 'chạy được' thôi là chưa đủ! 🧐💻


0

Localization Testing: Tester cần biết gì khi test ứng dụng đa ngôn ngữ

Lửng Lọc Lõi
Lửng Lọc Lõi

2 tháng trước · 10 phút đọc

Mình từng bỏ sót lỗi vì nghĩ "dịch xong là xong"

Lần đầu test app có tính năng đa ngôn ngữ, mình chỉ chuyển sang tiếng Anh, thấy text hiển thị đúng, tick vào test case rồi done. Kết quả? Sau release, user ở Nhật báo ngày sinh nhật hiển thị ngược - app ghi "31/12/2024" nhưng họ đọc theo định dạng "năm/tháng/ngày". Không crash, không lỗi chức năng, nhưng user khó chịu và mất tin tưởng.

Đó là lần mình học được: test đa ngôn ngữ không phải chỉ kiểm tra chữ có dịch đúng không. Nó còn là định dạng, văn hóa, hình ảnh, thậm chí chiều đọc chữ.

Bài này mình sẽ giải thích localization testing từ đầu - bạn hoàn toàn có thể làm được dù chưa biết gì về ngôn ngữ học hay lập trình.

346695 Một lỗi nhỏ về định dạng ngày có thể làm mất tin tưởng của cả thị trường


Localization testing là gì?

Nói đơn giản: localization testing (kiểm thử bản địa hóa) là quá trình kiểm tra xem ứng dụng có hoạt động đúng và phù hợp với một vùng/ngôn ngữ cụ thể không - không chỉ dịch đúng chữ, mà còn đúng văn hóa, định dạng, và cảm nhận của người dùng địa phương.

Hãy tưởng tượng bạn đang kiểm tra một quán cà phê mở chi nhánh ở Việt Nam. Bạn không chỉ xem menu có dịch tiếng Việt không - bạn còn kiểm tra xem giá có ghi "đồng" không, cách phục vụ có phù hợp không, hình ảnh quảng cáo có gây hiểu lầm không. Localization testing cũng vậy.

Khác gì với internationalization?

Đây là câu hỏi mình hay gặp khi hướng dẫn người mới. Hai khái niệm này hay bị nhầm lẫn:

  • Internationalization (i18n) - quốc tế hóa: đây là phần của dev làm, tức là thiết kế app sao cho có thể hỗ trợ nhiều ngôn ngữ. Ví dụ: dev không hardcode chữ "Xin chào" trong code, mà dùng file ngôn ngữ riêng để dễ thay.
  • Localization (L10n) - bản địa hóa: đây là quá trình điều chỉnh app cho từng thị trường cụ thể - dịch nội dung, thay hình ảnh, định dạng số/ngày phù hợp.
  • Localization testing: phần tester làm - kiểm tra xem localization có được thực hiện đúng không.

346696 i18n là nền móng dev xây, L10n là nội thất trang trí, localization testing là kiểm tra từng góc

Nhớ công thức này: i18n là khả năng hỗ trợ, L10n là thực thi, testing là xác minh. Ba việc khác nhau, ba bên khác nhau phụ trách.

Bạn không cần hiểu sâu code i18n để test. Bạn chỉ cần biết cái gì cần test và test thế nào. Phần còn lại của bài này giải thích đúng điều đó.


Những gì cần test trong localization

Đây là phần quan trọng nhất. Mình chia thành 6 nhóm chính - mỗi nhóm có ví dụ cụ thể để bạn hình dung ngay.

1. Nội dung ngôn ngữ

Kiểm tra bản dịch có tự nhiên không, không chỉ là "dịch máy". Ví dụ: "Submit" dịch thành "Nộp" hay "Gửi" phụ thuộc context - form đăng ký thì "Đăng ký", form liên hệ thì "Gửi tin nhắn".

Cũng kiểm tra text overflow - chữ tiếng Đức thường dài hơn tiếng Anh 30-40%, nên button "Save" dịch thành "Speichern" có thể làm vỡ layout.

2. Định dạng ngày, giờ, số

Bảng này mình hay dán lên bàn làm việc:

Định dạng Việt Nam Mỹ Nhật
Ngày 31/12/2024 12/31/2024 2024/12/31
Giờ 14:30 2:30 PM 14時30分
Số 1.000.000 1,000,000 1,000,000
Tiền tệ 100.000 ₫ $100 ¥100

Test bằng cách đặt ngày/số thật vào app và xem kết quả hiển thị.

3. Tiền tệ và đơn vị đo lường

Không chỉ ký hiệu tiền tệ - còn là vị trí ký hiệu ("$100" vs "100 ₫"), số chữ số thập phân, và cách làm tròn. Đơn vị đo: người Mỹ dùng miles/pounds, phần còn lại dùng km/kg.

4. Hình ảnh và biểu tượng văn hóa

Icon "ngón tay cái lên" là OK ở phương Tây nhưng có thể bị hiểu khác ở một số nước Trung Đông. Màu đỏ = may mắn ở Việt Nam/Trung Quốc, nhưng = nguy hiểm/lỗi ở phương Tây. Đây là thứ dev thường không nghĩ tới nhưng tester cần bắt.

5. Character encoding (mã hóa ký tự)

Kiểm tra ký tự đặc biệt có hiển thị đúng không: chữ có dấu tiếng Việt (ă, ơ, ị), ký tự tiếng Trung, tiếng Ả Rập. Lỗi encoding thường ra dạng "?????" hoặc ký tự lạ thay vì chữ đúng.

6. Layout cho RTL languages

RTL (Right-to-Left) là ngôn ngữ đọc từ phải sang trái, như tiếng Ả Rập và tiếng Hebrew. Khi test RTL, toàn bộ layout cần đảo ngược: menu bên phải thay vì trái, text align phải, icon mũi tên "quay lại" cũng cần đổi chiều.

346697 6 nhóm yếu tố localization - bỏ sót 1 nhóm là bỏ sót cả thị trường


Cách test localization từng bước

Bạn không cần biết tiếng Ả Rập để test RTL, không cần biết tiếng Trung để test tiếng Trung. Đây là cách mình thường làm:

Bước 1: Thay đổi language setting

Cách đơn giản nhất - vào Settings của thiết bị hoặc trong app, đổi ngôn ngữ/region.

  • Trên điện thoại Android: Settings → General Management → Language and Input → chọn ngôn ngữ muốn test
  • Trên iOS: Settings → General → Language & Region
  • Trong app: nếu app có tính năng đổi ngôn ngữ nội bộ, test từ đây trước

Sau khi đổi, đi qua toàn bộ user flow: đăng nhập, xem danh sách, tạo mới, thanh toán, nhận thông báo. Mình hay dùng checklist để không bỏ sót màn hình nào.

Bước 2: Test character encoding

Nhập thử ký tự đặc biệt vào các ô input: tên có dấu tiếng Việt như "Nguyễn Thị Ánh", địa chỉ có ký tự đặc biệt, emoji trong comment. Lưu rồi xem lại - nếu chữ bị thay thế bằng "??" hoặc ký tự lạ thì đây là bug encoding.

Bước 3: Test RTL languages

Đổi ngôn ngữ sang Arabic hoặc Hebrew. Bạn không cần đọc được - chỉ cần quan sát:

  • Toàn bộ layout có đảo ngược không?
  • Icon mũi tên "Quay lại" có hướng sang phải không?
  • Text có align-right không?
  • Các element như dropdown, menu có mở đúng hướng không?

Bước 4: Kiểm tra định dạng ngày/giờ/số

Thay region (không nhất thiết phải đổi ngôn ngữ) và xem app hiển thị ngày tháng thế nào. Test cả các trường hợp edge case:

  • Ngày cuối tháng (28, 29, 30, 31)
  • Đầu năm/cuối năm
  • Số lớn (có separator đúng format không?)

Bước 5: Review hình ảnh và màu sắc

Đây là bước cần người bản địa review hoặc checklist văn hóa. Nếu không có, mình thường tham khảo guide về màu sắc và biểu tượng theo vùng.

Test theo thứ tự: language setting → encoding → RTL → định dạng → hình ảnh


Ví dụ thực tế: Test app bán hàng hỗ trợ 3 ngôn ngữ

Mình lấy ví dụ app e-commerce hỗ trợ tiếng Việt, tiếng Anh, tiếng Trung. Bạn cần test trang "Chi tiết sản phẩm" khi đổi qua 3 ngôn ngữ này.

Kịch bản test tiếng Việt (baseline):

  • Giá hiển thị: 150.000 ₫ (đúng format)
  • Ngày giao hàng dự kiến: 25/12/2024 (ngày/tháng/năm)
  • Tên sản phẩm: "Áo thun nam cổ tròn" - không bị vỡ dấu
  • Nút "Thêm vào giỏ" - text vừa với button

Chuyển sang tiếng Anh:

  • Giá: $5.99 hay $6.00? (currency conversion là app logic, nhưng format phải đúng)
  • Ngày: 12/25/2024 (tháng/ngày/năm - khác Việt Nam)
  • Tên sản phẩm: "Men's Round Neck T-Shirt" - text có bị overflow button không?
  • Nút: "Add to Cart" - chiều dài text có vừa không?

Chuyển sang tiếng Trung:

  • Ký tự "男款圆领T恤" có hiển thị đúng không? Hay ra ký tự lạ?
  • Giá: ¥ hay CNY? Vị trí ký hiệu tiền tệ?
  • Font có hỗ trợ CJK characters không?
  • Nút: "加入购物车" - text ngắn hơn tiếng Anh, button có bị kéo giãn kỳ lạ không?

346698 Cùng 1 màn hình, 3 ngôn ngữ - mỗi ngôn ngữ cần check point khác nhau

Mỗi trường hợp mình viết thành test case riêng, không gộp chung "test 3 ngôn ngữ" vào một test case. Lý do: khi có bug, cần biết chính xác bug xảy ra ở ngôn ngữ nào, màn hình nào. Gộp chung thì khó reproduce, dev không fix được.

Không biết đọc tiếng Trung không sao. Bạn chỉ cần biết: ký tự có hiển thị đúng dạng chữ Hán không, hay ra ký hiệu lạ? Điều đó bạn hoàn toàn nhận ra bằng mắt dù không đọc được.


Công cụ hỗ trợ localization testing

Bạn không cần tool phức tạp để bắt đầu. Mình list theo mức độ từ đơn giản đến nâng cao:

Không cần cài gì:

  • Thay đổi language/region trong Settings của thiết bị
  • Google Translate để verify bản dịch cơ bản (không tin 100%, nhưng phát hiện lỗi dịch ngược nghĩa)
  • DevTools của browser: tab Application → Storage xem có file ngôn ngữ không

Công cụ kiểm tra encoding:

Công cụ test RTL:

  • Cài Arabic keyboard trên điện thoại - đổi ngôn ngữ hệ thống là cách nhanh nhất
  • BrowserStack hoặc Sauce Labs: test trên thiết bị thật ở nhiều locale (nhưng tốn tiền)

Quản lý test case:

  • Excel/Google Sheets: đủ dùng cho manual localization testing
  • TestRail hoặc Jira nếu team có sẵn

346699 Bắt đầu với công cụ miễn phí - bạn không cần BrowserStack ngay từ đầu

Lời khuyên thực tế: mình hay dùng thiết bị thật thay vì giả lập (emulator) khi test localization. Lý do - font rendering và layout đôi khi khác nhau giữa giả lập và thiết bị thật, nhất là với ký tự CJK (tiếng Trung/Nhật/Hàn).

Trang web dùng cookie để hoạt động và đo hiệu quả quảng cáo. Xem chính sách bảo mật