[求问]依赖服务器时间日期的代码,测试人员应该怎么做呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SethShi
0.01D
V2EX    问与答

[求问]依赖服务器时间日期的代码,测试人员应该怎么做呢?

  •  
  •   SethShi 2022-06-23 14:45:10 +08:00 2072 次点击
    这是一个创建于 1262 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果有类似这种的服务: 一天只能抽奖 n 次, 第二天重置回 N 次, 由于代码里使用了服务器的日期作为缓存的 key 那么测试人员应该怎么处理这个问题?

    还是说应该在代码里下手?

    22 条回复    2022-06-27 17:24:45 +08:00
    InDom
        1
    InDom  
       2022-06-23 14:49:32 +08:00
    删 Key 。或者,真的一天就测一次。

    测试会准备很多账号用来测这个功能。
    cnoder
        2
    cnoder  
       2022-06-23 15:08:57 +08:00
    手动删 key ,不会就让开发留个方便调试的接口
    SethShi
        3
    SethShi  
    OP
       2022-06-23 15:22:05 +08:00
    @InDom
    @cnoder 不是删除 key 的的问题, 而是日期的问题. 次数的问题可以删除 key, 但是测试怎么验证.
    因为删除 key 你只是把今天的限制解除了. 而不知道明天验证是否会生效
    israinbow
        4
    israinbow  
       2022-06-23 15:27:56 +08:00
    克隆一个线上环境作为测试环境, 在测试环境里一边测一边改系统时间.
    twinsdestiny
        5
    twinsdestiny  
       2022-06-23 15:30:20 +08:00
    改系统时间测试啊
    tmrQAQ
        6
    tmrQAQ  
       2022-06-23 15:33:23 +08:00
    mock 时间
    InDom
        7
    InDom  
       2022-06-23 15:49:53 +08:00
    一般测试是要求会使用一点 Linux 服务器的,完全可以把测试环境给他,让他自己去改服务器时间。
    Jar2vis
        8
    Jar2vis  
       2022-06-23 17:05:55 +08:00
    测试环境改系统时间验证,上线了一般只验证当天次数限制
    qooweds
        9
    qooweds  
       2022-06-23 17:19:36 +08:00
    关键业务,条件允许的话就按照真实时间跨度去测。
    做好用例评审,准备多个账号,每个账号覆盖一组测试用例,这样覆盖 2 到 3 天的测试场景。
    关于缓存失效或者其他不方便用真实时间跨度来覆盖的测试,可以通过改服务器时间来测。
    修改代码或者配置来测试只能是没有办法中的办法了。
    SethShi
        10
    SethShi  
    OP
       2022-06-23 17:51:21 +08:00
    @israinbow
    @twinsdestiny
    @InDom 好的感谢.
    @tmrQAQ 怎么 mock?
    @qooweds 好的, 感谢
    edward1987
        11
    edward1987  
       2022-06-23 18:00:22 +08:00
    作为后端,我是提供切服务器逻辑时间的接口,供测试调用。
    SethShi
        12
    SethShi  
    OP
       2022-06-23 18:15:36 +08:00
    @edward1987 之前我也是这样子, 但是太麻烦了. 要么就是以后要删除这个接口. 要么就是预防线上不要这个接口
    edward1987
        13
    edward1987  
       2022-06-23 18:20:23 +08:00
    @seth19960929 线上环境过滤这个接口,对开发来说就一句代码的事啊。。
    SethShi
        14
    SethShi  
    OP
       2022-06-23 18:47:46 +08:00
    @edward1987 改完代码之后是不是还要再测试一遍. 这个方法不好的地方就在这里
    loveuqian
        15
    loveuqian  
       2022-06-23 19:11:49 +08:00
    可以把(一天只能抽奖 n 次)的需求改成( x 分钟只能抽奖 n 次)吗?
    zjp
        16
    zjp  
       2022-06-23 19:24:59 +08:00
    libfaketime 模拟时间
    ForkNMB
        17
    ForkNMB  
       2022-06-23 20:01:03 +08:00
    肯定不能改系统时间测啊,测试机器上又不止部署了一个项目,别人的项目也在跑的。应该吧时间和频率的限制做成可配置化的,把 1 天内抽 n 次改为一定时间内抽 n 次,这样就可以满足测试要求了。
    SethShi
        18
    SethShi  
    OP
       2022-06-24 10:05:35 +08:00
    @loveuqian 研发就是研发, 需求都是产品定的.
    @zjp 看着改系统时间快一点
    @ForkNMB 这种想法不现实. 因为不是实际的的需求. 改系统时间合适我. 服务跑在容器里面
    loveuqian
        19
    loveuqian  
       2022-06-24 10:10:27 +08:00
    @seth19960929 #18
    改成 x 分钟也一样能满足你的需求啊
    上线前 x=1 方便测试,上线后 x=24*60
    edward1987
        20
    edward1987  
       2022-06-24 10:31:23 +08:00
    @seth19960929 #14 不用改代码啊。。这个开发一开始就加了过滤了,根据环境过滤。 就一句代码的功能,开发还是能保证正常的。 实在信不过,上线的时候调用这个接口看下日志就好
    zjp
        21
    zjp  
       2022-06-24 22:34:46 +08:00
    #18 有额外的好处:不影响其他进程,可以修改时间流逝速度
    SethShi
        22
    SethShi  
    OP
       2022-06-27 17:24:45 +08:00
    @zjp 是, 看着也是修改时间. 直接 date -s 也行. 其它就是你说修改流逝速度
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     925 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 19:14 PVG 03:14 LAX 11:14 JFK 14:14
    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