夏令时(DST)测试
- 夏令时(1:00 -> 3:00 AM)
- 往后拨一个小时,直接从1点变到3点,也就是说我们要比原来提前一个小时和美国佬开会。
- 冬令时(1:00 -> 1:00 -> 2:00 AM)
- 往前拨一个小时,要过两个1点,这时比平常晚一个小时。

- 白盒测试
- 代码走查以找出和时间操作相关的模块,进行合理的时间转换(本地时间转换为UTC时间)。这里需要关注的是和时间有关的部分,如果模块只和日期有关,可以忽略。
- 并不是所有和时间有关的模块都要转换为UTC时间,这由业务决定(比如说打印log和界面时间显示,这时就需要用本地时间,而非UTC)
- UI 测试
- 时间输入:对于需要输入起始时间的控件,在夏令时当天需要注意对输入的检查,比如夏令时当天没有2:00AM。(对于冬令时,如果选择1:00 AM代表的是第一个一点)
- 时间显示(输出): 产品时间的显示规则是与本地时间一致。对于需要显示时间段的部分,需要注意夏令时没有2:00AM,冬令时包含第二个1:00AM
- 报表展示:首先大部分报表的数据都来源于数据库,而数据库一般保存的是UTC时间,所以需要转化成本地时间展示,这时在报表上可能出现的状况是:有些有起始时间的项的结束时间<开始时间,如果没有特别的要求,这种报表结果是可以接受的,但是要注意检查时间转换的准确性。
- 数据存储
- 文件的存储:这里分为日志和数据文件
- 日志文件需要用本地时间存储,主要是问了方便查看。
- 数据文件需要用UTC或者时间戳进行存储,防止造成数据不准确。
- 数据库
- 需要用UTC时间或者时间戳存储。
- 进行查询操作,观察是否返回正确结果
- 在夏令时转换点附近进行数据表的操作,检查数据时间显示(UTC或者时间戳)
- 对于数据库中需要定期定时执行的任务,需要格外注意在夏令时当天的执行时间。
- 文件的存储:这里分为日志和数据文件
- 功能性测试
- 跨时间段任务
- 常常会有一些任务会跨时间段,例如:一个Job计划执行的时间是2:00AM,在夏令时当天因为没有2:00AM,job会不会执行?或者是在冬令时的1:59AM执行,第二个1:00AM执行完毕,job会不会报错?以下时间段是需要我们在测试功能中需要特别关注的,以这些时间段作指导,执行用例,可以覆盖大部分场景。
- 跨时间段任务

- 需要注意的点:
- 夏令时没有2:00AM
- 任务消耗时间区间需要特别注意,如果一个任务1:50执行到3:10,其实只用了20分钟,而不是1小时20分钟
- 冬令时有两个一点,预先计划好的任务中说的1:00AM,指的都是第一个1:00AM
- 冬令时有图中5中比较典型的时间段,需要特别注意。
- 和其他模块的交互
- 模块之间的交互需要遵循一致的规则,最好都能用UTC或者时间戳进行传输
- 如果其他模块未遵循规则,需要对时间的传入和传出进行转换检查
总结:
DST测试的关注点更多的是夏令时、冬令时当天时间转换的处理逻辑,这就需要我们定义出来哪些时间段是容易出问题的,然后结合我们平时的用例,也会比较容易的把DST测试做好。
夏令时(DST)测试的更多相关文章
- 夏令时 DST (Daylight Saving Time) java中的夏令时【转】
1916年,德国首先实行夏令时,英国因为怕德国会从中得到更大的效益,因此紧跟着也采取了夏令时 1986年至1991年,中华人民共和国在全国范围实行了六年夏令时 サマータイム 夏時間(日本现在没有实行夏 ...
- 彻底弄懂GMT、UTC、时区和夏令时
前言 格林威治时间.世界时.祖鲁时间.GMT.UTC.跨时区.夏令时,这些眼花缭乱的时间术语,我们可能都不陌生,但是真正遇到问题,可能又不那么确定,不得不再去查一查,处理完可能过段时间又忘记.今天,我 ...
- GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?
目录 ✍前言 本文提纲 版本约定 ✍正文 GMT:格林威治时间 凭什么格林威治作为标准时间? 地球自转 中国有哪几个时区? 美国有哪几个时区? GMT和Http协议的渊源 UTC:世界标准时间 UTC ...
- Carbon中文使用手册
Introduction Carbon 继承了PHP的 Datetime 类和JsonSerialiable.所以 Carbon 中没有涉及到的,但在 Datetime 和JsonSerializab ...
- CentOS 7 设置日期和时间
现代操作系统分为以下两种类型的时钟: 实时时钟(Real-Time Clock,RTC),通常称为硬件时钟(一般是系统主板上的集成电路),它完全独立于操作系统的当前状态,即使在计算机关闭时也能运行. ...
- ntp时间同步,各种配置方法
1 Windows xp NTP服务器的配置(2003配置方式一样) 1) 首先需要关闭作为NTP服务器的windows系统自带的防火墙,否则将同步不成功. 2) 单击“开始”,单击“运行”,键入 r ...
- SQL Server全时区转换
SQL Server全时区转换 假如你的应用程序是跨国(例如跨国银行交易)使用的话,那么数据库的一些国际化特性支持可以说是非常重要 其中最常见的就是各国时区上的差异,由于SQL Server getd ...
- 关于linux中的时间 时区问题
本文部分来源于: http://hi.baidu.com/peruke/blog/item/b8de06ec6a04583b27979132.html 系统是fedora: glibc实现了从RTC ...
- PHP指定日期转时间戳
使用date_parse_from_format 可以转换指定的格式:举个例子: <?php $str = '2018.10.01';//或者 2018年10月1日 $arr = date_pa ...
随机推荐
- laravel 共享session问题总结
我现在有一个A系统已经上线了,但是要开始研发另外一个功能,我打算把这个功能独立成一个B系统出来,放在其他域名下面,打算在这个A系统登录后,里面一个连接跳转到B系统,看到一些资料说用到共享Session ...
- 《ERP系统修正数据的sql文件》
第一 1.修正销售客户创建者的sql脚本: UPDATE e_sales_customers sc SET sc.user_id = ( SELECT tmp.user_id FROM ( SELEC ...
- jquery stop()、callback、鏈接
stop(stopAll,goToEnd) stop適用於所有的效果,包括顯示隱藏.滑動.淡入淡出和動畫. stopAll默認值為false,清除當前動畫,可以向後執行下一動畫調用,黨改為true,清 ...
- 【阿里云】云服务器 ECS部署网站
我是广告!!! https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=hgk32vx5 领券更优惠,老板看着来~ 1.服务器 ...
- JVM 内存区域 (运行时数据区域)
JVM 内存区域 (运行时数据区域) 链接:https://www.jianshu.com/p/ec479baf4d06 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内 ...
- 【POJ 2251】Dungeon Master(bfs)
BUPT2017 wintertraining(16) #5 B POJ - 2251 题意 3维的地图,求从S到E的最短路径长度 题解 bfs 代码 #include <cstdio> ...
- 修改 wordpress 后台管理员登录地址
拷贝根目录下的 wp-login.php文件命名为wp-login.php.backup,把原文件重命名为managewp.phpsed -i "s/wp-login.php/managew ...
- 05 自学Aruba之AAA profile无法删除问题
点击返回:自学Aruba之路 05 自学Aruba之AAA profile无法删除问题 在新建完成AAA profile之后,可能存在后续不需要或者变动,那就要删除多余的AAA profile . 其 ...
- Internet Explorer 10 administration IE10管理
http://4sysops.com/archives/internet-explorer-10-administration-part-1-overview/ http://4sysops.com/ ...
- 洛谷 P1378 油滴扩展 改错
P1378 油滴扩展 题目描述 在一个长方形框子里,最多有\(N(0≤N≤6)\)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油 ...