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

14 天前
 GallifreyCAR

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

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

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

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

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

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

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

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

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

12353 次点击
所在节点    职场话题
153 条回复
demolock
14 天前
第一步当然是把代码喂给 AI ,让 AI 自动吐出每个功能的单元测试代码。
试运行的话先找一个项目组开刀,并把项目时间延长一倍,拿到上级圣旨才好办事。
peteretep
14 天前
舍本逐末
写单测的人力成本比养一个测试人员高多了

领导层水平不太行啊,见风就是雨
opengps
14 天前
单元测试本来就是个很大的工作量,需要适配项目选择是否需要自动测试。通常来说一个不停迭代的项目更适合去做单元测试,重点防备改坏了某些地方来自动测试做检查
GallifreyCAR
14 天前
@demolock 吐不出的,目前的架子,只有那种完全查库的 service 方法的才可能完全 mock ,写出单元测试。我们公司虽然不大,但是业务也非常繁重的。十几个系统交织在一起互相调用情况非常常见。
op351
14 天前
原来的测试人员是通过什么方法测试的?
Biggoldfish
14 天前
你们的代码最开始没有 unit test (别说 integration/regression test 了) 是怎么可以合并并上线的?在 PR merge gate 里就应该检测覆盖率
udisyue
14 天前
@Biggoldfish 谁要求上线一定要有单测了?传统软件行业我不好说,但互联网企业我敢说,国内有一个算一个,没有这么干的。包括覆盖率。如果你要求有单测和覆盖率,那程序员只能两手一摊,告诉你这功能要加两个礼拜的工期
wzy44944
14 天前
复杂系统的单测从 0 到 1 ,一般都需要重构下,可以先单模块小范围重构,看看效果,然后再逐步推广
matrix1010
14 天前
收归测试人手其实只是借口,推行单元测试的最终目的是干掉开发。AI 代码的质量非常依赖单元测试,如果系统都没办法进行单元测试,那肯定也没法让 AI 同时编写代码和测试,并确保测试通过
ipwx
14 天前
go mock 巨麻烦,不如用测试库单测。每次用不同的 table prefix ,单测完成删除。
follower
14 天前
不支持就裁啊,专门招那些喜欢 tdd 的人
15855pm
14 天前
本人测试,干过后端,写过单测,单测只对提测阶段质量有益,最终的产品质量还是需要测试人员来保证的。在降本增效的大背景下,测试人员不足就不要想着在其他地方找补回质量了,成本、效率、质量不可能三角摆在这里。
jjwjiang
14 天前
从技术上说,你们代码本身就没有规范,没有抽象 UT 从何而谈
从流程上说,UT 并不能降低测试成本

显然你的领导两点都没整明白,个人觉得你去掺和就是当背锅侠
matrix1010
14 天前
我的建议是强力推行,并且同时开始推行 AI 编写代码(agent 模式,claude code, codex 或者 jules 这些)。同时持续对比有单元测试情况下和没有单元测试情况下 ai 生成代码的质量。最终达成以下目标:op 成为 ai coding 和单元测试专家且工资翻倍,公司开发人员减少 2/3 ,降低公司成本以及减少开发沟通内耗
Erroad
14 天前
@Biggoldfish #6 一股外企的气息。国内没见过认真搞这些的
ladypxy
14 天前
用 AI 啊,AI 最擅长的就是写这玩意
Georgedoe
14 天前
@Biggoldfish 不同项目等级不同,这么死脑筋的嘛? nasa 的航天软件测试要求更严苛你咋不对标他们
zuosiruan
14 天前
@15855pm 我们降本都是研发被干 测试是不会被干的
284716337
14 天前
@15855pm 我们是要求降本增效,然后还要提升产品质量,干研发;然后成立质量组,成立后再砍测试人员😂
Lee2019
14 天前
我们都要求好几次了,pipeline 的 gate 我都加过又删掉好几次了
哪次也推不动,实在不行就写假的 ut 呗

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

https://www.v2ex.com/t/1153924

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

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

© 2021 V2EX