Menu

Thư điện tử tạm thời miễn phí trong kiểm thử

Thư điện tử tạm thời miễn phí có cái giá ẩn: thời gian lưu ngắn, giới hạn tốc độ và miền dễ vào danh sách chặn. Bài này nói cách thiết kế đường ống kiểm thử thư ổn định với ngân sách bằng không.

Đăng ngày

  • thư điện tử
  • kiểm thử
  • ngân sách

Thư điện tử tạm thời miễn phí là lựa chọn đầu tiên của gần như mọi nhóm khi họ cần một địa chỉ nhận thư để thử luồng đăng ký, bởi nó không tốn tiền, không cần thiết lập và có kết quả trong vài giây. Nhưng chữ miễn phí che khuất một tập hợp các đánh đổi mà chỉ lộ ra sau vài tuần chạy bộ kiểm thử tự động: thời gian lưu thư ngắn, giới hạn số lần tạo, và một miền công khai mà nhiều hệ thống đã đưa vào danh sách chặn từ lâu. Đọc hết bài này, bạn sẽ hiểu miễn phí thật sự nghĩa là gì trong bối cảnh kiểm thử, vì sao miền công khai dễ làm bộ kiểm thử thất bại ngẫu nhiên, và cách một nhóm không có ngân sách vẫn dựng được đường ống thư đủ tin cậy.

Miễn phí thật sự nghĩa là gì trong kiểm thử?

Trong dịch vụ thư tạm thời công khai, miễn phí thường đi kèm bốn giới hạn. Giới hạn thứ nhất là thời gian lưu thư, có thể chỉ vài giờ, nghĩa là nếu bộ kiểm thử chạy qua đêm thì nội dung thư có thể đã biến mất trước khi bạn kịp đọc. Giới hạn thứ hai là giới hạn tốc độ, tức số địa chỉ bạn được tạo trong một khoảng thời gian, và giới hạn này thường chỉ bộc lộ khi bạn chạy kiểm thử song song.

Giới hạn thứ ba là chia sẻ miền. Bạn dùng chung miền với hàng nghìn người khác, nên uy tín của miền đó trong mắt các hệ thống chống thư rác phụ thuộc vào hành vi của những người bạn không quen biết. Giới hạn thứ tư là quyền riêng tư: nội dung thư nằm trên hạ tầng mà bạn không kiểm soát, và trong nhiều dịch vụ, bất kỳ ai biết địa chỉ đều có thể đọc được nội dung trong thời gian lưu.

Không giới hạn nào trong bốn giới hạn này là lỗi của dịch vụ. Chúng là hệ quả tự nhiên của việc cung cấp một tài nguyên miễn phí cho số đông. Vấn đề chỉ nảy sinh khi bạn đặt một đường ống kiểm thử tự động lên trên một tài nguyên được thiết kế cho nhu cầu thử tay ngắn hạn, rồi kỳ vọng nó hoạt động với độ ổn định của một dịch vụ trả tiền.

Cách nghĩ hữu ích là coi dịch vụ miễn phí như một công cụ dùng một lần chứ không phải một phần hạ tầng. Với việc thử tay vài phút, nó hoàn toàn phù hợp và tiết kiệm rất nhiều thời gian. Với một bộ kiểm thử chạy mỗi đêm, bạn cần một thứ khác, và đó chính là lý do bài trình tạo thư tạm thời đặt cạnh nhau các lựa chọn khác nhau thay vì chỉ nói về một lựa chọn duy nhất.

Vì sao miền công khai hay bị đưa vào danh sách chặn?

Các hệ thống chống lạm dụng theo dõi một tập hợp dấu hiệu để nhận diện địa chỉ dùng một lần. Dấu hiệu rõ nhất là tên miền, vì nó tập trung: chỉ cần đưa một miền vào danh sách chặn là vô hiệu hóa hàng triệu địa chỉ cùng lúc. Dấu hiệu thứ hai là tuổi của miền, bởi những miền mới đăng ký rồi được dùng ngay cho hàng loạt đăng ký trông rất giống hành vi tự động.

Dấu hiệu thứ ba là hành vi ở tầng hộp thư. Một miền nhận được thư cho rất nhiều tài khoản khác nhau trong thời gian ngắn, hoặc có tỷ lệ thư bị trả lại cao, sẽ bị các nhà cung cấp thư lớn đánh giá thấp. Khi uy tín của miền giảm, thư gửi tới đó có thể bị đưa vào thư rác thay vì bị từ chối thẳng, và đây là kiểu thất bại khó chẩn đoán nhất vì mọi thứ trông vẫn bình thường.

Vì ba dấu hiệu này thay đổi liên tục, danh sách chặn cũng thay đổi. Một miền được chấp nhận hôm nay có thể bị chặn vào tuần sau, và ngược lại. Với một bộ kiểm thử tự động, điều đó có nghĩa là kết quả kiểm thử phụ thuộc vào một biến số nằm ngoài mã nguồn của bạn, và bạn sẽ mất rất nhiều thời gian để tìm ra rằng nguyên nhân không nằm trong sản phẩm của mình. Bài vì sao các trang chặn miền dùng một lần mô tả chi tiết các dấu hiệu này trong bối cảnh sản phẩm thật.

Một hệ quả ít được chú ý là tính không tái lập. Khi một phép kiểm thử thất bại vì miền bị chặn, chạy lại có thể cho kết quả khác nếu danh sách chặn đã được cập nhật ở giữa hai lần chạy. Bạn sẽ có một bộ kiểm thử vừa chập chờn vừa không tái lập được, và đó là tổ hợp tệ nhất cho một đường ống chạy tự động.

Điều gì thay đổi khi chuyển sang miền bắt tất cả của riêng bạn?

Khi bạn dùng một miền riêng có cấu hình bắt tất cả, ba biến số biến mất cùng lúc. Bạn kiểm soát thời gian lưu thư nên không còn lo thư biến mất qua đêm. Bạn kiểm soát tốc độ nên không còn bị giới hạn số địa chỉ tạo ra trong một phút. Và bạn sở hữu uy tín của miền nên kết quả kiểm thử không còn phụ thuộc vào hành vi của người dùng chung.

Có một lợi ích nữa mà ít người nghĩ tới lúc đầu: khả năng đặt quy ước cho địa chỉ. Với miền bắt tất cả, bộ kiểm thử có thể tự sinh một địa chỉ mới cho mỗi lần chạy, chẳng hạn ghép mã của lần chạy với một hậu tố cố định, và mọi thư gửi tới địa chỉ đó đều được nhận. Nhờ vậy, các lần chạy song song không giẫm lên nhau, và bạn luôn biết thư nào thuộc lần chạy nào. Bài miền bắt tất cả cho môi trường thử trình bày cách cấu hình và những điểm cần lưu ý về bảo mật.

Chi phí của cách này không nằm ở tiền mua miền, vốn thường rất nhỏ, mà ở công sức thiết lập và bảo trì. Bạn cần thêm bản ghi thư, cần quản lý chứng chỉ, cần xử lý việc gia hạn, và cần một nơi lưu thư mà bộ kiểm thử đọc được. Với một nhóm nhỏ, khoản công sức này thường chỉ mất vài giờ ban đầu, và nó trả lại bằng việc bộ kiểm thử không còn thất bại ngẫu nhiên.

Nếu tổ chức của bạn chưa thể dựng miền riêng, vẫn còn một bước trung gian rẻ hơn: chặn hoàn toàn việc gửi thư ra ngoài trong môi trường thử và chỉ giữ thư trong một máy chủ nội bộ. Cách này loại bỏ cả vấn đề danh sách chặn lẫn vấn đề thời gian chờ của mạng, đổi lại bạn phải chấp nhận rằng mình không kiểm thử được đường đi thật của thư qua nhà cung cấp dịch vụ. Bài bắt thư bằng máy chủ nội bộ trong đường ống kiểm thử đi sâu vào cách làm này.

Nhóm không có ngân sách nên thiết kế đường ống thư thế nào?

Nguyên tắc đầu tiên là tách hai nhu cầu. Nhu cầu thử tay cần tốc độ và sự tiện lợi, nên dùng dịch vụ công khai là hợp lý. Nhu cầu thử tự động cần tính tái lập, nên cần một đường ống ổn định. Trộn hai nhu cầu vào cùng một công cụ là nguyên nhân phổ biến nhất khiến nhóm nhỏ gặp bộ kiểm thử chập chờn.

Nguyên tắc thứ hai là chỉ kiểm thử đường đi thật ở nơi thật sự cần. Phần lớn các phép kiểm thử không cần thư đi qua mạng công cộng; chúng chỉ cần nội dung thư. Với những phép kiểm thử đó, hãy bắt thư ngay trong môi trường thử và đọc nội dung tại chỗ. Chỉ một vài phép kiểm thử ở tầng cao nhất mới cần chứng minh rằng thư thật sự đi ra ngoài và tới được hộp thư, và với nhóm nhỏ thì việc chạy những phép kiểm thử đó ít thường xuyên hơn là hợp lý.

Nguyên tắc thứ ba là đặt một lớp trừu tượng trước nguồn thư. Bộ kiểm thử nên hỏi một hàm duy nhất rằng có thư mới cho địa chỉ này hay chưa, thay vì gọi trực tiếp vào giao diện của một dịch vụ cụ thể. Khi bạn đổi từ dịch vụ công khai sang miền riêng, chỉ có phần cài đặt của hàm đó thay đổi, còn toàn bộ kịch bản kiểm thử giữ nguyên.

Nguyên tắc thứ tư là luôn có đường lui. Hãy để bộ kiểm thử phân biệt rõ giữa thất bại do sản phẩm và thất bại do hạ tầng thư, và ghi lại thông báo đủ rõ để người đọc biết mình cần sửa gì. Nếu một phép kiểm thử bị đánh dấu là không ổn định mà không ai biết vì sao, nó sẽ bị bỏ qua, và một phép kiểm thử bị bỏ qua thì không bảo vệ được gì.

Làm sao biết một bộ kiểm thử thư đang chập chờn?

Dấu hiệu đầu tiên là cùng một mã nguồn cho kết quả khác nhau trên cùng một môi trường. Hãy chạy lại bộ kiểm thử vài lần liên tiếp mà không sửa gì; nếu kết quả thay đổi, biến số nằm ở dữ liệu hoặc hạ tầng chứ không nằm ở mã nguồn. Đây là phép chẩn đoán rẻ nhất và nên làm trước khi đọc log.

Dấu hiệu thứ hai là thời gian chờ tăng dần theo thời gian. Nếu một phép kiểm thử trước đây mất vài giây nay mất vài chục giây, có thể thư đang bị giữ lại hoặc bị đưa vào thư rác, và hệ thống của bạn chỉ nhận được sau khi thử lại nhiều lần. Bài kiểm thử luồng xác minh thư điện tử bàn về cách đặt ngưỡng chờ hợp lý để phát hiện sớm kiểu suy giảm này.

Dấu hiệu thứ ba là tỷ lệ thất bại khác nhau giữa các lần chạy song song. Nếu chạy một luồng thì ổn nhưng chạy mười luồng cùng lúc thì hỏng, nguyên nhân thường là giới hạn tốc độ hoặc va chạm địa chỉ. Cả hai nguyên nhân này đều biến mất khi bạn chuyển sang miền riêng có quy ước địa chỉ riêng cho từng lần chạy.

Những giới hạn nào không nên vượt qua?

Đừng dùng địa chỉ thư tạm thời để nhận thư của người khác hoặc để mạo danh một địa chỉ mà bạn không sở hữu. Đây không phải một kỹ thuật kiểm thử mà là một hành vi gây hại, và hậu quả của nó không nằm trong phạm vi công việc kỹ thuật.

Đừng dùng nó để vượt qua các hạn mức mà bên thứ ba đặt ra, chẳng hạn tạo thêm tài khoản miễn phí để dùng quá số lượng cho phép. Với mục đích kiểm thử, một tài khoản thử trên môi trường thử là đủ; nếu bạn cần nhiều tài khoản, hãy dùng môi trường thử của chính mình.

Đừng để thư chứa thông tin nhạy cảm đi qua một hộp thư mà bạn không kiểm soát, và đừng để bộ kiểm thử phụ thuộc vào việc một dịch vụ miễn phí phải luôn sẵn sàng. Một đường ống kiểm thử tốt không nên có điểm hỏng nằm ngoài tầm kiểm soát của nhóm bạn khi vẫn còn lựa chọn khác.

Bước tiếp theo

Hãy liệt kê những phép kiểm thử hiện tại của bạn có dùng thư, rồi đánh dấu phép nào thật sự cần thư đi qua mạng công cộng và phép nào chỉ cần nội dung thư. Với nhóm thứ hai, chuyển sang bắt thư trong môi trường thử; với nhóm thứ nhất, hãy thử trình tạo thư tạm thời của trang này cho công việc thử tay, và tính tới việc dựng một miền riêng cho những lần chạy tự động.

Toàn bộ địa chỉ do trang này sinh ra là dữ liệu kiểm thử tổng hợp: chúng đúng cú pháp và dùng được trong môi trường thử, nhưng không thuộc về người nào, không nhận thư của người thật, và không nên dùng cho tài khoản thật hay luồng nghiệp vụ thật.

Đọc tiếp

Công cụ phổ biến và bài hướng dẫn sử dụng