我必须在Web应用程序中添加新用户。用户需要有效的电子邮件地址,并且通过单击发送到其电子邮件的激活链接来激活用户。由于必须添加数十个用户,因此无法添加这么多的电子邮件地址。我知道像yopmail这样的网站会生成电子邮件地址,但它并不安全,任何人都可以访问这些电子邮件链接。我需要一个安全的电子邮件地址,以便其他任何人都无法访问它们。

评论

只需添加到@ user246的答案中,相对于Hotmail或Outlook,Gmail是更好的选择。以前的雇主对Microsoft的电子邮件客户端尝试了相同的方法,并很快发现他们被列入垃圾邮件黑名单(公平地说,他们每天发送1000封电子邮件)。我还没有听说过Gmail将发件人列入黑名单。

#1 楼

这是一种方法。如果您有一个地址为abdullah@gmail.com的Gmail帐户,我可以通过abdullah+ARBITRARY-STRING@gmail.com向您发送电子邮件。

每个用户都可以有一个不同的Gmail地址,例如abdullah + 1 @ gmail.com,abdullah + 2 @ gmail.com和adbdullah+3@gmail.com,但它们都对应于同一个Gmail帐户。

评论


很棒的把戏!很高兴知道。 +1希望电子邮件验证程序允许加号。

–Peter M.-代表莫妮卡(Monica)
18-2-7在17:38



它还可以验证您的应用程序是否正确支持email+identifier@example.com样式地址。我可以看到一些激进但不正确的电子邮件“验证程序”阻止了此类事件。

–corsiKa♦
18年2月7日在18:02

使用真实的SMTP(或任何真实的消息传递基础结构)不是一个很好的做法。您总是有使测试数据泄漏给真实人员的风险。

– Alexey R.
18年2月7日在20:31

我同意这是一种风险,但是不测试您的电子邮件逻辑也是一种风险。此Gmail技巧可供无法部署自己的SMTP服务器,重新配置DNS记录或重新配置应用程序的质量检查小组使用。您可能会争辩说,质量保证团队应该能够完成所有这些事情,但是现实是,他们经常被无情的系统管理员所左右。

–user246
18年2月7日在21:50

@PeterMasiar不幸的是,尽管RFC 5322对其进行了标准化,但仍有太多人感到需要编写自己的(糟糕的)电子邮件验证正则表达式。

–亚历山大
18年2月8日在2:50

#2 楼

在您的应用程序确实可以访问该服务器的本地网络中部署测试SMTP服务器,而外部网络则不能。配置您的DNS(MX记录)或应用程序(测试实例通常允许覆盖正常的邮件配置),以便通过该SMTP服务器发送邮件。

有许多免费的邮件服务器存根。可用。例如hMailServer或GreenMail。

还有类似MailTrap的SAAS解决方案(感谢亚当·巴恩斯的发言)。在测试电子邮件时避免使用真实的消息传递基础结构。这可能会导致机密数据泄露,从而使公司的财务和声誉损失可能超过了如何设置邮件服务器存根的成本。这也可能会使gmail或其他选定的邮件服务禁止您的IP或IP范围,因为它们可能会认为您的流量可疑。


评论


我们使用邮寄陷阱这是一项很好的专业服务。

–亚当·巴恩斯(Adam Barnes)
18年2月7日在17:36

@AdamBarnes谢谢,在回答中加了您的评论。

– Alexey R.
18-2-7在20:27

#3 楼

您可以使用本地系统,例如mailcatcher或mailhog。 MailHog具有Web界面和SMTP端口,您可以将其用作SMTP目标,并且将在其中“接收”所有邮件。

如果您的应用程序不是使用SMTP,而是使用API​​和邮件服务(例如sendgrid或mailchimp),但这并不是最好的选择,因为它不会测试API访问权限。在这种情况下,最好的办法是添加测试凭据并使用非发送端点进行测试。

然后,使用随机生成的地址,您可以执行任何您喜欢的端到端测试,而无需暴露任何内容。这应该与测试电子邮件地址的有效性分开,因为它很可能接受任何地址。

评论


Papercut是另一个类似的应用程序。

– molnarm
18年2月9日在10:21

#4 楼

在我们的软件测试服务公司中,我们添加了不同的用户后,我们将按照此步骤进行操作。

您可以在电子邮件地址中添加+。

假设您拥有一个有效的电子邮件地址
,然后通过添加,test+2@gmail.com创建尽可能多的用户。

所有电子邮件都将发送到test@gmail.com。

评论


AFAIK,这是一个仅限Gmail的技巧。我不知道哪个供应商允许。我敢肯定有些人不会。可以通过明确提及此技巧应与gmail一起使用来改善此答案。

–xDaizu
18年2月8日在11:19

您能否解释一下此test@gmail.com问题。

– ChathatD
18年8月29日在3:40

#5 楼

如果仅用于测试,则可以使用一种称为“模拟”或“猴子修补”的编程技术:您的单元或功能测试可以使用“ a”替换“功能”调用或第三方API的对象,而不是发送真实的电子邮件。样机,这样就您而言,您实际上不会发送电子邮件,而是模拟了发送电子邮件的行为。

这给您带来的好处是,实际上没有数据发送,但是您仍然可以测试您需要的所有方面,例如创建电子邮件,创建激活链接,测试,如果用户单击有效链接,无效链接或过期的链接会发生什么,或者...无限的可能性。如果您的测试使用的是专用的测试数据库,那么您可以一次又一次地进行这些测试,每次启动测试时都会对其进行初始化。这样一来,您就不会在垃圾邮件中填充开发数据库,​​而无需进行测试。

有一本不错的书,介绍了在开发Web应用程序时进行测试的过程,即“用Python进行测试驱动的开发” (昵称:“测试山羊!”)在第19章中很好地解释了模拟技术。尽管有问题的Web应用程序是基于Python / Django的,但是如果您使用其他环境,则仍应遵循基本原则。您只需要使它们适应您的需求即可。

#6 楼

在我们的测试中,我们清除了用户邮箱作为第一步,因此我们只需要使用一个邮箱。执行此操作的代码已放入测试中,而不是应用程序中。