问答 对于工具类的项目有什么比较好测试方案

咸吃萝卜淡操心 · 2021年11月22日 · 最后由 陈恒捷 回复于 2021年11月22日 · 2371 次阅读

背景

项目组最近做了一个工具类的集合包,主要是把一些操作(数据库,中间件,log,等),还有一些工具定制化的需求,放到了一起,并且有计划对其进行迭代,项目还必须做到向前兼容。然后迭代的颗粒度要达到每个工具类的版本。
举个例子:
1.0 版本 redis 1.0 ,db 1.0 ,mq 1.0
1.1 版本 redis 1.1 ,db 1.0 ,mq 1.0

类似这样,使用方可以选择升级与否,升级那个

问:

  1. 像这样的测试任务,我能想到的就是自己建个项目去调用这些工具类,or 开发自己写单元测试(可能性太小),还有没有其他的测试方案
  2. 并且 领导也让我把这个 通过自动化搞起来,对于这一部分也是完全没有任何头绪😂
共收到 5 条回复 时间 点赞

工具类最好的测试方法应该是单元测试,因为足够简单快速。之前做用例平台的增量保存工具类,我写了 22 个单测用例,5 秒内就可以全部跑完,行覆盖达到 93%,非常高效而且放心。基于这个单测我后续还做了一些代码优化和重构,通过单测可以很放心地改,因为出问题单测会立马告诉你。

自己建个项目去调用也是一种方法,但这种方式单元测试其实也可以覆盖的。开发不愿意写单测,可以你来写呀。

陈恒捷 回复

自己直接在项目里写单测倒是没想过(可能是一直来的思维误区吧,单测只能开发写),不过倒是想过自己通过测试框架导入工具类,写 case 维护测试,
不过对于工具的测试倒是有另外一个问题 比如 我 db pool=5 这样的场景 我怎样去验证 这个是 5 而不是 6 or 4😂

没看懂你这个场景,可以详细说明下?

陈恒捷 回复

以 mysql 举例 ,我们正常链接数据库,只需要把 mysql 的驱动 jar 加入项目然后按照官方文档 去配置不就可以了么,
那么我们现在的工具项目 就是把各个工具封装到一起,而我这边需要验证 我们封装的这个 db 的配置与原本的配置 是一致的,比如原本是 int 我们封装的时候字段定义的是 float,然后传参不就有问题了么
另外一种场景就是 ,比如封装了一个多线程的处理,只要传一个值就能起几个线程, 当传了 3 以后,那我得验证明确实起了 3 个线程,
类似这样的场景吧,具体我还不知道,只是刚接到这个任务,自己先脑补了这些东西

你需要先明确你的工具边界。你前面说的有两个类型的东西混在了一起。

封装的配置和原有的是否一致,这个是你工具类独立完成的,可以做单测来检验。可以看看 Mockito 这个框架,它可以 mock 掉某个指定类型的类对应对象,并校验实际调用时传入的参数等。

多线程处理这个值是否确实起了对应的线程数,不知道你这个实际这个线程启动到底是由工具类启动的,还是由背后实际的外部库调用。如果是工具类启动,单测应该也有办法获取到某个指定类有多少个线程在运行的,你可以找找看。

单测的配套工具并不比我们平时看到的 UI 自动化少,甚至更丰富,你可以先从简单的写起,逐步深入。

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