各位会修改测试环境的时间去测试代码吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
deppan
V2EX    程序员

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

  •  
  •   deppan 2022-10-15 15:44:38 +08:00 2591 次点击
    这是一个创建于 1140 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    fix:

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

    所以测试环境上想要模拟未来时间或者过去时间,也只是改一个参数的问题
    msg7086
        7
    msg7086  
       2022-10-15 18:16:04 +08:00   1
    https://github.com/travisjeffery/timecop
    你们没有类似这种时间旅行用的测试用插件吗?
    deppan
        8
    deppan  
    OP
       2022-10-15 18:22:47 +08:00
    @guo4224 主要是后端代码,感觉使用不上 mock
    deppan
        9
    deppan  
    OP
       2022-10-15 18:24:40 +08:00
    @flyqie 我觉得第一种有太多不确定性,因为有一个变量的存在,测试环境和线上代码运行的逻辑都不一样,万一出现 bug 还是我来修改
    deppan
        10
    deppan  
    OP
       2022-10-15 18:24:55 +08:00
    @wu00 算呀
    deppan
        11
    deppan  
    OP
       2022-10-15 18:25:33 +08:00
    @learnshare 我写的是后端,后端代码不会以客户端时间来作为判断标准
    deppan
        12
    deppan  
    OP
       2022-10-15 18:25:58 +08:00
    @msg7086 好的,学习一下
    jones2000
        13
    jones2000  
       2022-10-15 22:02:07 +08:00   1
    自动化测试用跑下不就可以了, 跑脚本配置好时间,然后跑测试用例, 最后跑脚本还原时间。
    我还写过最变态的测试用例了,测试用例上写“在一个全新的系统上跑页面”, 每次都先跑自动安装操作系统,然后跑测试用了。
    IvanLi127
        14
    IvanLi127  
       2022-10-16 03:15:26 +08:00 via Android   1
    当年实习的时候,在自己电脑测,会选第一种。现在,有容器,有虚拟机,还有独立物理机,改系统时间和玩一样,我选第二种。
    Musong
        15
    Musong  
       2022-10-16 03:15:44 +08:00   1
    我们这是#6 的做法,操作简单,给测试或产品管理工具加个配置项;而且修改时间本身的逻辑不影响项目,测试不用再针对这个东西做测试
    akira
        16
    akira  
       2022-10-16 06:14:54 +08:00   1
    方案 2 不是说不可行,但是总觉得怪怪的。。。
    matrix1010
        17
    matrix1010  
       2022-10-16 09:37:35 +08:00 via iPhone   1
    是不是类似于用户注册 5 天后发邮件这种功能,你想在测试环境手工测测?那可以把 5 天放配置文件里,直接改测试环境的配置
    foam
        18
    foam  
       2022-10-16 09:57:41 +08:00 via Android   1
    你可以把 获取当前时间 这个(业务级或使用的语言库函数级)方法 mock 掉。mock 和前后端没有关系,都是为了模拟依赖资源。
    deppan
        19
    deppan  
    OP
       2022-10-16 10:05:23 +08:00
    @akira 你认为怪怪是指什么呢?能具体讨论一下么?怎么样才能不怪怪的呢
    deppan
        20
    deppan  
    OP
       2022-10-16 10:08:00 +08:00
    @matrix1010 比如某天 22 点 0 分开始有一个抽奖活动,时间没有到用户进入界面要展示距离开始还有多少时间,时间到了之后要展示距离活动还有多久结束
    deppan
        21
    deppan  
    OP
       2022-10-16 10:09:29 +08:00
    @foam 我感觉 mock 是第一种方案的另一种实现方式
    foam
        22
    foam  
       2022-10-16 10:37:48 +08:00 via Android
    @WoodenTea 这里的 mock 是针对单元 /集成测试场景的。如果是实际功能测试,6 楼的可行。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     853 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:36 PVG 06:36 LAX 14:36 JFK 17:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86