《Web测试囧事》——2.6 时区不一致造成邮件发送异常

简介:

本节书摘来自华章计算机《Web测试囧事》一书中的第2章,第2.6节,作者 黄勇 雷辉 徐潇 杨雪敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.6 时区不一致造成邮件发送异常

小蔡一直对产品的后台系统测试比较感兴趣,但是自己并没有这方面的测试经验,所以一直不敢向老牛提出自己想去测试后台系统的想法。她虽然没有明说,但是老牛却看在眼里。刚巧最近产品新增了根据用户收藏的商品,定期向用户发送邮件的功能。老牛就指派小蔡去做新功能的测试,也借这个机会锻炼一下她。

小蔡首先根据自己的经验设计了正向测试用例。

1)在用户收藏商品之后,当达到指定条件,系统会向用户发送邮件。

2)她还设计了逆向测试用例,包括邮件系统本身出错时的一些场景,例如:

image

小蔡觉得自己这次设计的测试用例很全面,应该会得到老牛的表扬,就带着这些测试用例去找老牛确认。

老牛首先表扬了小蔡思考的全面性,也夸奖了她这段时间的成长。此外,他告诉小蔡还可以从邮件发送的机制本身考虑是否存在测试点:发送邮件的脚本会每天定时从数据库里找到需要在当天发送的数据,然后根据指定的邮件格式进行发送,并在发送结束后在数据库里进行标记。这里面是否会存在问题呢?

小蔡马上想到可以使用之前学到的5个Why的方式进行追根溯源。

image
image

带着疑问,小蔡登录到执行邮件脚本的服务器,通过使用Linux的date命令,发现服务器使用的是中国标准时间CST(UTC + 8),和UTC可是差着8小时啊!

在脚本执行时,那些UTC~UTC + 8时间之内的数据都会被忽略,这些邮件用户当天接收不到,但是在数据库存储发送标记的时候,却会把这些数据标记成已发送,从而导致用户永远接收不到这些邮件。

小蔡马上把这一发现汇报给老牛,老牛很认可她的这一发现,并带着这个问题和开发人员以及项目经理进行协调,最后决定修改执行邮件脚本的服务器的时区设置。而为了避免以后出现类似问题,通用的服务器配置脚本里,也会增加对于时区的统一设置。

此外小蔡还了解到,有些国家和地区的时区有DST(Daylight Saving Time,也就是俗称的夏令时),而如果产品代码和某些特定时间相关,例如用户设置早上9点接收邮件报告等,就需要考虑到DST。还有如果某些国家或地区修改了自己的默认时区,比如时常变换时区的委内瑞拉,也是需要及时把修改后的时区反映到产品中的。

image
image
image
image

相关文章
|
5天前
|
前端开发 机器人 测试技术
【RF案例】Web自动化测试弹窗处理
在进行Web自动化测试时,常会遇到不同类型的弹窗,如ajax、iframe、新窗口及alert/Confirm等。这些弹窗可通过Selenium进行定位与处理。其中,ajax弹窗直接定位处理;iframe需先选中再操作;新窗口类似iframe处理;而alert/Confirm则需特殊方法应对。在Robot Framework中,需先定义并获取窗口后使用特定关键字处理。此外,还有部分div弹窗需在消失前快速定位。希望本文能帮助大家更好地处理各类弹窗。
16 6
【RF案例】Web自动化测试弹窗处理
|
19天前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
29 4
|
18天前
|
Web App开发 测试技术 API
自动化测试之美:使用Selenium和Python进行Web应用测试
【8月更文挑战第31天】在软件开发的快节奏世界中,自动化测试如同一束明灯,照亮了质量保证之路。本文将引导你通过Selenium和Python的强大组合,探索如何构建高效的Web应用测试框架。我们不仅会讨论理论,还会深入代码,从一个简单的示例开始,逐步扩展至更复杂的场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一同揭开自动化测试的神秘面纱,体验它的魅力所在。
|
24天前
|
人工智能 Java 测试技术
自动化测试之美:如何用Selenium提升Web应用的质量保证
【8月更文挑战第24天】 在软件开发的海洋里,自动化测试如同一艘救生艇,帮助开发团队保持代码质量的同时,还能确保他们不会淹没在功能的迭代和bug修复中。Selenium,作为一个用于Web应用程序测试的工具,它的强大之处在于模拟真实用户操作的能力。本文将通过浅显易懂的语言和实际代码示例,引导读者理解Selenium的魅力所在,以及如何有效利用它来提升Web应用的测试效率和覆盖率。
|
4天前
|
jenkins 测试技术 持续交付
自动化测试的高效之路:如何利用Python进行Web应用测试
【9月更文挑战第13天】在软件开发的快节奏中,自动化测试是确保质量和效率的关键。本文将引导你了解如何使用Python语言及其强大的测试框架来提升Web应用的测试效率。我们将一起探索编写简洁而强大的测试脚本的技巧,以及如何通过持续集成(CI)实现自动化测试流程。准备好让你的测试工作飞一般的感觉!
|
27天前
|
监控 前端开发 Serverless
现代化 Web 应用构建问题之观测站点的PV、UV和API异常等指标如何解决
现代化 Web 应用构建问题之观测站点的PV、UV和API异常等指标如何解决
28 2
|
26天前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
34 1
|
1月前
|
Cloud Native 数据处理
项目环境测试问题之当异步任务在运行过程中抛出非预期的异常会导致后果如何解决
项目环境测试问题之当异步任务在运行过程中抛出非预期的异常会导致后果如何解决
|
17天前
|
测试技术 Java
揭秘Struts 2测试的秘密:如何打造无懈可击的Web应用?
【8月更文挑战第31天】在软件开发中,确保代码质量的关键在于全面测试。对于基于Struts 2框架的应用,结合单元测试与集成测试是一种有效的策略。单元测试聚焦于独立组件的功能验证,如Action类的执行逻辑;而集成测试则关注组件间的交互,确保框架各部分协同工作。使用JUnit进行单元测试,可通过简单示例验证Action类的返回值;利用Struts 2 Testing插件进行集成测试,则可模拟HTTP请求,确保Action方法正确处理请求并返回预期结果。这种结合测试的方法不仅提高了代码质量和可靠性,还保证了系统各部分按需协作。
9 0
|
17天前
|
测试技术 开发者
守护代码质量的利器:揭秘Vaadin单元测试的奥秘,助你打造无懈可击的Web应用
【8月更文挑战第31天】在软件开发中,单元测试是确保代码质量和稳定性的重要手段。对于使用Vaadin框架开发的Web应用,有效的单元测试尤为关键。Vaadin提供了完善的工具链支持,并鼓励测试驱动开发(TDD)。本文详细介绍了如何为Vaadin应用编写单元测试,并通过具体示例展示了测试环境搭建、依赖配置以及对简单`UserForm`组件的测试方法。通过JUnit和Mockito,我们验证了表单字段的变化及有效性,确保组件按预期工作,从而提升应用的整体健壮性和可靠性。这不仅有助于发现潜在问题,还能简化未来的维护工作。
31 0