V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
seth19960929
V2EX  ›  问与答

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

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

    如果有类似这种的服务: 一天只能抽奖 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 ,不会就让开发留个方便调试的接口
    seth19960929
        3
    seth19960929  
    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 天的测试场景。
    关于缓存失效或者其他不方便用真实时间跨度来覆盖的测试,可以通过改服务器时间来测。
    修改代码或者配置来测试只能是没有办法中的办法了。
    seth19960929
        10
    seth19960929  
    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
    作为后端,我是提供切服务器逻辑时间的接口,供测试调用。
    seth19960929
        12
    seth19960929  
    OP
       2022-06-23 18:15:36 +08:00
    @edward1987 之前我也是这样子, 但是太麻烦了. 要么就是以后要删除这个接口. 要么就是预防线上不要这个接口
    edward1987
        13
    edward1987  
       2022-06-23 18:20:23 +08:00
    @seth19960929 线上环境过滤这个接口,对开发来说就一句代码的事啊。。
    seth19960929
        14
    seth19960929  
    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 次,这样就可以满足测试要求了。
    seth19960929
        18
    seth19960929  
    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 有额外的好处:不影响其他进程,可以修改时间流逝速度
    seth19960929
        22
    seth19960929  
    OP
       2022-06-27 17:24:45 +08:00
    @zjp 是, 看着也是修改时间. 直接 date -s 也行. 其它就是你说修改流逝速度
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5367 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 08:36 · PVG 16:36 · LAX 00:36 · JFK 03:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.