公司要推行单元测试,但是执行太过于困难,大部分同事不支持怎么办?

66 天前
 GallifreyCAR

公司想定了新的开发规则(为了收归测试人手,减少测试人力的投入,降本增效),推行单元测试(根据不同项目等级,覆盖率到 50-70%)

但是目前我们使用了 go 全局变量的框架,没有使用依赖注入,没有使用接口和抽象,导致非常难写单测

做了一下同事间的调研,大部分同事都不愿意写单测,理由大概是

领导让我看一下这个事情怎么做,我尝试了一下,得出了三种方案。

  1. 使用 sqlmock/连接内灰数据库来适配当前框架,可以做到没有外部调用系统的服务 mock 测试,但是遇到要调用外部服务的情况,无法 mock ,只能临时注释掉(因为没有使用依赖注入)。但是连接数据库不能算 mock ,用 sqlmock 要写的测试代码又太多,反对者比较多

  2. 改造当前框架,拆分抽象层和实现层,使用依赖注入。这样单测想怎么写就怎么写就好了,但是增加大家平时要写更多代码,也有不少反对者

  3. 听从同事建议,反馈领导,不推行单测,自行自测。(全靠自觉性,感觉领导层都不会同意

对此大家有什么比较好的建议吗?

另外最近在学英语,有什么英语读物推荐也可以分享一下(摸鱼/晨间日常)

13309 次点击
所在节点    职场话题
153 条回复
sagaxu
66 天前
我觉得还有第 4 种方案,抽调资源写 API 测试脚本,要求覆盖 50%以上的新增 API ,老 API 有变更时增加对应测试脚本。虽不如 UT 细致,但也能起到一定作用,而且这比写 UT 省事多了,也不会侵入框架和业务代码。我自己接的活,一般不写 UT ,但一定会写点 API 测试脚本,不仅方便自测,线上有问题时也能辅助诊断。
ChangQin
66 天前
OP 最近有什么在读的英语读物分享吗
fashionash
66 天前
明显就是考核过程指标呀,没有单测还有别的考核项,比如千行代码 bug 率、代码当量等等;如果你只是执行层的话就做数据统计,到个人、部门维度的排名;倒数的人总会自己想办法解决的
FrankAdler
66 天前
我用 gomonkey ,基本上我写单元测试的部分覆盖率都是 100%,另外 orm 强烈推荐 entgo ,完美整合单元测试,原理是通过 sqlite 内存引擎来构造临时库
yibin001
66 天前
@baby0w0 会变,单元测试对应调整
crackidz
66 天前
降本增效当然是引入 AI 然后开人了
Chase2E
65 天前
最起码要 integration test ,这样不管你内部怎么实现的,至少能覆盖上。然后再新的代码上推 unit test
bao3
65 天前
你要么,不要理会同事的反馈,直接给老板提供方案,由老板来做决定。因为没有哪个人会同意给自己免费加工作量,包括你在内,所以你干脆忽略掉同事的反馈。

要么就告诉老板,现有资源做单测不现实。加人加钱加时间。 中国人还是太善于做牛马了,仍然想自己榨干自己。
v1
65 天前
当领导开始推行单测同时砍测试同学的时候,基本上准备要卸磨杀驴了。
xqk111
65 天前
工资不变,加大工作量,哈哈,谁干谁傻逼
zw1one
65 天前
工作要给老板产生价值,情绪价值也是一种价值。
shellic
65 天前
加工期,不加工期还让人写单测那肯定没人愿意啊,这不是增加工作量吗
ZeroDu
65 天前
框架中间件这种不经常变动的可以。大部分公司的业务代码不适合写单元测试,经常迭代,在加上各个产品你改改我改改根本没法玩,更不要说任务重哪来的时间写
SethShi
65 天前
不建议使用 sqlmock, 写太多了, 如果是 mysql, 可以使用 go-mysql 启动一个服务器, fakerredis, 等等,找对应的实现, 如果没有 , 就用 docker 启动容器. 参考这个:
https://www.shiguopeng.cn/posts/2024082617/
guanhui07
65 天前
新项目可以搞,老项目怎么搞 ,单测覆盖率...领导有说排期 工期 加时间吗 得加钱加时间啊,一大堆领导瞎指挥 ,有本事自己上着带着我写 demo 能覆盖的,老项目逻辑覆盖不到的 你让我打哪就哪 , 只会怂恿 怂逼领导太多了
qiaobeier
65 天前
@Biggoldfish #6 何不食肉糜
Torpedo
65 天前
@peteretep #2 类似不就是招一个 sre 省成本。但是很多还是没有 sre 让大家自运维
needhourger
65 天前
单元测试不能取代测试,别为了单元测试而单元测试。
只能说终究不过是老板想省钱了,省钱的同时还想了个冠冕堂皇的理由增加工作量,😆
guguji5
65 天前
@15855pm 牛逼 [成本、效率、质量不可能三角] 学到了
hellopz
65 天前
@peteretep 复杂业务还是得依靠测试用例,我们团队十几个人,跑一轮测试用例都几个小时了,每个大版本上百个小功能,纯人测肯定不行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1153924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX