各位会修改测试环境的时间去测试代码吗

2022-10-15 15:44:38 +08:00
 WoodenTea

工作中难免会写未来时间的活动,有两种方案让我选择

  1. 同事建议使用一个缓存来存储未来时间的值,测试环境修改该缓存值来模拟服务器时间。
  2. 我个人倾向于修改服务器或容器内的时间,让代码运行环境时间与活动时间一致,能保证测试用例通过后,以后程序正式发布后不会出现时间判断不正确的问题。 各位会选择哪个方案?说说原因哇
1942 次点击
所在节点    程序员
22 条回复
wu00
2022-10-15 16:07:40 +08:00
两分钟后不也算“未来时间”?
flyqie
2022-10-15 16:33:36 +08:00
个人倾向第二种。

第一种得单独规定,实际执行起来有可能利大于弊。
guo4224
2022-10-15 16:46:51 +08:00
mock 不香?
flyqie
2022-10-15 17:03:35 +08:00
@flyqie #2

fix:

利大于弊 -> 弊大于利
learnshare
2022-10-15 17:39:59 +08:00
Switch: 没想过用户会修改时间重刷 amiibo
xy90321
2022-10-15 17:56:48 +08:00
我司项目里的大部分系统,不管是系统时间还是业务时间都是通过自建 Wrapper 拿的,Wrapper 本身包含了时间模拟(真实物理时间➕Offset ,生产环境上 Offset=0 )的功能

所以测试环境上想要模拟未来时间或者过去时间,也只是改一个参数的问题
msg7086
2022-10-15 18:16:04 +08:00
https://github.com/travisjeffery/timecop
你们没有类似这种时间旅行用的测试用插件吗?
WoodenTea
2022-10-15 18:22:47 +08:00
@guo4224 主要是后端代码,感觉使用不上 mock
WoodenTea
2022-10-15 18:24:40 +08:00
@flyqie 我觉得第一种有太多不确定性,因为有一个变量的存在,测试环境和线上代码运行的逻辑都不一样,万一出现 bug 还是我来修改
WoodenTea
2022-10-15 18:24:55 +08:00
@wu00 算呀
WoodenTea
2022-10-15 18:25:33 +08:00
@learnshare 我写的是后端,后端代码不会以客户端时间来作为判断标准
WoodenTea
2022-10-15 18:25:58 +08:00
@msg7086 好的,学习一下
jones2000
2022-10-15 22:02:07 +08:00
自动化测试用例跑下不就可以了, 跑脚本配置好时间,然后跑测试用例, 最后跑脚本还原时间。
我还写过最变态的测试用例了,测试用例上写“在一个全新的系统上跑页面”, 每次都先跑自动安装操作系统,然后跑测试用了。
IvanLi127
2022-10-16 03:15:26 +08:00
当年实习的时候,在自己电脑测,会选第一种。现在,有容器,有虚拟机,还有独立物理机,改系统时间和玩一样,我选第二种。
Musong
2022-10-16 03:15:44 +08:00
我们这是#6 的做法,操作简单,给测试或产品管理工具加个配置项;而且修改时间本身的逻辑不影响项目,测试不用再针对这个东西做测试
akira
2022-10-16 06:14:54 +08:00
方案 2 不是说不可行,但是总觉得怪怪的。。。
matrix1010
2022-10-16 09:37:35 +08:00
是不是类似于用户注册 5 天后发邮件这种功能,你想在测试环境手工测测?那可以把 5 天放配置文件里,直接改测试环境的配置
foam
2022-10-16 09:57:41 +08:00
你可以把 获取当前时间 这个(业务级或使用的语言库函数级)方法 mock 掉。mock 和前后端没有关系,都是为了模拟依赖资源。
WoodenTea
2022-10-16 10:05:23 +08:00
@akira 你认为怪怪是指什么呢?能具体讨论一下么?怎么样才能不怪怪的呢
WoodenTea
2022-10-16 10:08:00 +08:00
@matrix1010 比如某天 22 点 0 分开始有一个抽奖活动,时间没有到用户进入界面要展示距离开始还有多少时间,时间到了之后要展示距离活动还有多久结束

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/887137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX