问答 有个技术需求 - 请教下社区大佬们

A. · 2022年04月26日 · 最后由 陈恒捷 回复于 2022年04月29日 · 5120 次阅读


关联的业务:代驾
目前自己的思路:

  1. 问一下研发影响点,根据影响点回归测试???
  2. 造数据(ex: 1w 条),然后对比回写数据库优化前后时间???

有点不太懂这个需求怎么测试,想请教下社区大佬们
对于这种需求的测试思路、关注点
或者是我应该从那几方面去询问开发
或者搜索引擎搜什么关键字 “” 参考一下

共收到 5 条回复 时间 点赞

看起来是个技术优化需求,从需求看应该是 redis 和数据库数据结构不变的情况下,优化中间的定时任务性能。所以还是最好去看下代码确认下逻辑是否一致,纯黑盒难保会有遗漏。

如果是我测,我会这么做:
1、先了解清楚原来老的定时任务,具体做了什么转换。这个了解相比问开发,更需要自己也去看看相关代码,代码里才有最充分的细节
2、然后 review 新的定时任务,转换逻辑和老代码是否一致
3、逻辑 review OK 后,找一些 redis 数据,分别交给新老定时任务去处理, diff 对比下输出值有没有差异,同时可以看看性能是否有提升
4、最后结合整个业务去过一下代驾功能里和这个定时任务有关的用例,确认整体功能正常
5、最后确认下预计的上线切换方案(最稳的是新的任务先不要写到正式表,先写到一个临时表,然后观察一段时间确认写入的内容和老任务一样,再关掉老任务,新任务切换到正式表),做一下演练。

看了研发的目标,我理解意思就是用 java 重写一个定时任务,来取代之前那套 php 的流程。或者更清楚地说,研发的目标后续是下面三个:

  1. 更改语言技术栈,php 改为 java
  2. 将回写流程简化
  3. 优化回写 sql

如果上面的理解没错,我个人认为可以这样考虑:

  1. 功能测试 —— 验证流程是否正常;测试环境下把 crontab 的触发时间缩短,先人工看流程通不通,回写空数据、少量数据、大量数据的情况下是否正确,可以直接拿新老任务做 diff 对比着看结果。
  2. 异常测试 —— 构造一些异常场景;比如上一次定时任务触发失败是否使得下一次定时任务异常、java 获取 redis 数据失败(网络超时、redis 宕机)、redis 数据结构或数据值异常(异常数据)、回写数据到数据库失败(磁盘满、数据库超时、数据库宕机、网络超时)、回写流程中间发生异常,以上还要楼主继续细化。
  3. 性能测试 —— 看你的性能测试是什么目标,有没有必要做;待遍历的 redis 集合过大怎样、回写的数据量过大怎样、存不存在大量并发回写的情况……(潜藏各类超时、高负载的场景)
  4. 安全测试 —— 这个比较玄幻,比如定时任务触发的是一个接口服务还是什么,这个接口有没有做好鉴权防止被别人乱调用,回写用的 sql 有没有注入漏洞……
  5. 其他……比如是否存在数据库主从同步的问题等等,要看模块结构的设计再增加一些考虑点

以上是考虑稍微多一些的建议,可以按照实际情况做删减或补充,不一定要搞得很复杂。

A. #3 · 2022年04月28日 Author
陈恒捷 回复


感谢感谢

A. #2 · 2022年04月28日 Author
王稀饭 回复


感谢 参考一哈

A. 回复

不客气

PS:少发这类大表情图吧,毕竟这里不是微信群,有点闪瞎眼。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册