Checklist kiểm thử email giao dịch là thứ nên được lập ra trước khi phát hành, vì loại thư này được gửi tự động và hiếm khi có ai xem lại trước khi nó tới tay người dùng. Một biến chưa được thay, một liên kết sai, hay một thư bị gửi hai lần đều là lỗi người dùng nhìn thấy ngay. Bài này liệt kê những gì cần kiểm tra, và chỉ ra chỗ mà phần lớn nhóm hay bỏ sót nhất.
Email giao dịch gồm những loại nào?
Thư giao dịch là thư được sinh ra để phục vụ một hành động cụ thể của người dùng, chứ không phải để quảng cáo. Nhóm phổ biến nhất gồm thư xác nhận đăng ký, thư đặt lại mật khẩu, thư xác nhận thay đổi địa chỉ hoặc số điện thoại, thư xác nhận đơn hàng, thư thông báo trạng thái vận chuyển, và thư kèm hoá đơn hoặc biên nhận.
Điểm chung của nhóm này là mỗi lá thư đều gắn với một sự kiện đã xảy ra trong hệ thống. Nếu sự kiện đó xảy ra hai lần, hệ thống có thể gửi hai lá thư, và người dùng sẽ thấy kỳ lạ. Nếu sự kiện đó không được ghi nhận, hệ thống không gửi gì cả và người dùng ngồi chờ một lá thư không bao giờ tới.
Cũng cần phân biệt với thư tiếp thị, vì quy tắc dành cho hai loại không giống nhau. Thư tiếp thị thường phải có cách từ chối nhận thư rõ ràng và dễ dùng, còn thư giao dịch thì gắn với một giao dịch người dùng đã thực hiện. Nhầm lẫn giữa hai loại là nguồn gốc của nhiều khiếu nại.
Danh sách kiểm thử trước khi phát hành
Bảng dưới đây là những mục nên kiểm tra ít nhất một lần cho mỗi mẫu thư, và kiểm tra lại mỗi khi mẫu thư hoặc luồng nghiệp vụ thay đổi.
| Nhóm kiểm tra | Câu hỏi cần trả lời |
|---|---|
| Điểm kích hoạt | Mọi hành động cần gửi thư đều có sinh thư chưa, kể cả những hành động ít dùng |
| Người nhận | Thư có đi đúng tới địa chỉ của người vừa thực hiện hành động không |
| Biến mẫu | Mọi chỗ trống trong mẫu đều được thay bằng giá trị thật, không còn dấu hiệu chưa thay |
| Liên kết | Liên kết trong thư trỏ đúng địa chỉ, mở được, và còn hiệu lực khi người dùng bấm |
| Nội dung | Số tiền, ngày tháng, đơn vị, và cách viết ngày đúng với ngôn ngữ của người nhận |
| Từ chối nhận thư | Thư tiếp thị có cách từ chối rõ ràng; thư giao dịch không gây hiểu nhầm là thư quảng cáo |
| Gửi trùng | Cùng một sự kiện xảy ra hai lần có sinh ra hai lá thư không |
| Tiêu đề thư | Tiêu đề đọc được trên điện thoại và không bị cắt mất phần quan trọng |
Hai dòng đáng chú ý nhất là biến mẫu và gửi trùng. Biến mẫu vì lỗi này chỉ lộ ra khi có dữ liệu thật đi qua, còn gửi trùng vì nó phụ thuộc vào cách hệ thống xử lý sự kiện lặp, chứ không phụ thuộc vào bản thân mẫu thư.
Với dòng nội dung, hãy kiểm tra riêng phần định dạng theo ngôn ngữ. Cùng một ngày có thể được viết theo thứ tự ngày trước hoặc tháng trước, và cùng một số tiền có thể dùng dấu phân cách hàng nghìn khác nhau. Nếu sản phẩm của bạn phục vụ nhiều quốc gia, đây là nhóm lỗi xuất hiện thường xuyên nhất sau khi ra mắt. Trang dữ liệu theo quốc gia như trang Việt Nam cho thấy mỗi nơi có quy ước riêng về địa chỉ và định dạng, và thư gửi cho người dùng cũng phải theo quy ước đó.
Vì sao phải thử cả khi gửi thất bại?
Vì gửi thất bại là chuyện bình thường, không phải ngoại lệ hiếm gặp. Địa chỉ có thể sai, hộp thư có thể đầy, máy chủ nhận có thể tạm thời từ chối. Nếu bạn chưa từng thử những trường hợp này, bạn sẽ không biết hệ thống phản ứng ra sao: nó có thử lại, nó có báo cho người vận hành, hay nó im lặng bỏ qua.
Điều cần kiểm tra là hệ thống có phân biệt được lỗi tạm thời và lỗi vĩnh viễn hay không. Lỗi tạm thời nên dẫn tới việc thử lại, còn lỗi vĩnh viễn thì thử lại chỉ tạo thêm tải và có thể làm hỏng uy tín tên miền gửi thư của bạn. Rất nhiều hệ thống bỏ qua sự khác biệt này và thử lại mọi thứ.
Cũng cần kiểm tra xem lần thử lại có tạo ra thư trùng hay không. Nếu hệ thống thử lại sau khi bên nhận đã nhận được thư nhưng chưa kịp xác nhận, người dùng có thể nhận hai bản. Đây là trường hợp khó thấy khi thử thủ công, nên nó càng cần được phủ trong bộ kiểm thử.
Sau khi phát hành, hãy có cách biết được tình trạng gửi thư. Bạn cần thấy được số thư trả lại và lý do trả lại, chứ không chỉ thấy rằng hệ thống đã gọi lệnh gửi mà không báo lỗi.
Biến mẫu cần kiểm tra những gì?
Mỗi mẫu thư đều có những chỗ trống, và mỗi chỗ trống là một cơ hội để lộ dữ liệu mẫu cho người dùng. Hãy kiểm tra ba tình huống cho từng biến.
Tình huống thứ nhất là biến có giá trị bình thường. Thư phải hiển thị đúng giá trị, đúng vị trí, và đúng định dạng. Tình huống thứ hai là biến rỗng. Bạn cần quyết định trước rằng khi thiếu giá trị thì thư sẽ bỏ cả câu chứa nó, hay hiển thị một giá trị thay thế. Cả hai đều chấp nhận được, nhưng không được để lộ dấu hiệu chưa thay hoặc để lại một câu cụt.
Tình huống thứ ba là biến có giá trị rất dài hoặc chứa ký tự đặc biệt. Tên người dùng dài, tên sản phẩm có dấu ngoặc, địa chỉ nhiều dòng: đây là những giá trị làm vỡ bố cục thư. Với thư gửi cho người dùng ở nhiều quốc gia, bạn còn cần thử cả tên có dấu và tên viết bằng bảng chữ cái khác.
Một điểm nữa là đừng đưa dữ liệu nhạy cảm vào thư nếu không cần. Mật khẩu, mã khôi phục, số giấy tờ, hay số thẻ đầy đủ đều không nên xuất hiện trong nội dung thư. Nếu bạn cần người dùng quay lại một bước nào đó, hãy dùng một liên kết có thời hạn thay vì in dữ liệu nhạy cảm ra.
Dùng hộp thư tạm thời trên trang này để kiểm tra mẫu thư
Khi bạn cần xem một mẫu thư hiển thị ra sao mà không muốn làm phiền hộp thư thật của ai, công cụ email tạm thời của trang này cấp một địa chỉ trong vài giây và hiển thị nội dung thư ngay trên trang. Bạn có thể tạo vài địa chỉ khác nhau để tách riêng từng mẫu: một địa chỉ cho thư xác nhận đăng ký, một cho thư đặt lại mật khẩu, một cho thư đơn hàng.
Những hộp thư ở đây chỉ dùng cho kiểm thử và cho việc xem trước mẫu thư, không phải danh tính thật và không dùng để mạo danh bất kỳ ai. Với những ca cần thư gửi thật qua một hộp thư có thể đăng nhập lại, hãy dùng hộp thư của chính bạn.
Phần dành cho nhà phát triển
Phần khó nhất của thư giao dịch không nằm ở mẫu thư mà nằm ở việc gửi. Vài điểm nên chốt trước khi phát hành:
- Việc gửi thư phải chịu được sự kiện lặp lại. Nếu một sự kiện được xử lý hai lần, người dùng không nên nhận hai lá thư giống nhau.
- Tách việc sinh thư khỏi việc gửi thư. Sinh thư là một quyết định nghiệp vụ, còn gửi thư là một công việc kỹ thuật có thể thất bại và cần thử lại.
- Xử lý biến thiếu giá trị một cách có chủ đích, và viết một ca kiểm thử cho trường hợp đó. Đừng để mẫu thư tự quyết định.
- Giữ nguyên bản thư đã gửi ở dạng thô để khi có khiếu nại bạn biết chính xác người dùng đã nhận gì. Nhưng đừng ghi nội dung nhạy cảm vào nhật ký, và hãy đặt thời hạn lưu cho phần nội dung đó.
- Không thử lại một cách mù quáng. Hãy phân biệt lỗi tạm thời và lỗi vĩnh viễn, và đặt giới hạn cho số lần thử.
- Với thư có liên kết, hãy kiểm tra rằng liên kết còn hiệu lực khi người dùng bấm, kể cả khi họ mở thư muộn.
- Nếu bạn có nhiều ngôn ngữ, hãy kiểm tra rằng mẫu thư được chọn theo ngôn ngữ của người nhận chứ không theo ngôn ngữ của người vận hành đang xem hệ thống.
- Chạy thử toàn bộ danh sách trong môi trường thử trước, rồi gửi thật một lần cho chính bạn trước khi phát hành. Bước cuối này thường phát hiện ra những thứ mà môi trường thử che mất, ví dụ cách thư hiển thị trên ứng dụng thư phổ biến. Nếu ca kiểm thử của bạn cần đọc một dãy số trong thư, bài mã OTP trong kiểm thử nói riêng về phần đó.
Cuối cùng, hãy biến bảng kiểm tra ở trên thành một tệp trong kho mã nguồn và cập nhật nó mỗi khi bạn thêm một mẫu thư mới. Một bảng kiểm tra nằm trong đầu sẽ bị quên; một bảng nằm trong kho mã nguồn thì có người nhìn thấy.
Bước tiếp theo
Hãy chọn một mẫu thư bạn đang có và chạy hết bảng kiểm tra ở trên cho riêng mẫu đó, ghi lại kết quả vào một chỗ mà nhóm đọc được. Nếu bạn cần một địa chỉ để nhận thư thử ngay bây giờ, mở công cụ email tạm thời, tạo một hộp thư, và kích hoạt mẫu thư đầu tiên trong danh sách của bạn.