作者a804372004 (忽冷忽热摸不着)
看板Soft_Job
标题[请益] 如何实现单元测试多於整合测试?
时间Sun Nov 20 01:46:55 2022
将单元测试实作於专案时,发现绝大部分API都是针对资料库做CRUD,这部分程式透过in
memory 写了整合测试,越写越觉得不对劲,心想单元测试数量不是应该要最多? 网路文
章、影片或实体书籍大多也在探讨如何写单元测试,整合测试资源相对少,在想是不是我
哪里做错了,恳请各位大神指教。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.9.229.151 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1668880017.A.B02.html
1F:→ devilkool: 以传统三层式架构来说我多半是测中间的商业逻辑层 11/20 01:57
单元测试确实是测商业逻辑的部份,我的专案含有商业逻辑的程式不多,变成都在写整合测试
2F:推 TSW: 看情况,只要整合测试写/改起来不累,单元测试就没那麽重要 11/20 02:43
3F:推 TSW: 数量差距不用太在意,只要好写又有效,多一点无妨 11/20 02:49
4F:→ DrTech: 实务上,单元测试不是看数量多少,是看覆盖率。整合测试不 11/20 11:41
5F:→ DrTech: 是工程师在开发环境写单元测试,而是在测试环境,QA写。 11/20 11:41
6F:→ DrTech: 简单说,从来不追求数量。追求覆盖。 11/20 11:42
了解,爬文看到测试金字塔提到层次越高的测试应该会越少,所以才想是否写错了,另外,公司目前没有QA,所有测试都是工程师写
7F:→ labbat: 小公司不会有赔钱部门QA的 11/20 18:02
8F:推 strlen: 不用在意数量多寡 测试数量会根据你做的架构或软体类型变 11/21 15:56
9F:→ strlen: 化是很正常的一件事 像你说你API都CRUD 那当然单元测试就 11/21 15:57
10F:→ strlen: 都通常在测处理资料的商业逻辑 但要是那些逻辑也没啥好测 11/21 15:57
11F:→ strlen: 就甭测了 因为本来就没啥好测 但如果你是做个图像引擎之类 11/21 15:58
12F:→ strlen: 的东西 单元测试就会变得比较多 因为运算也比较多 合理吧 11/21 15:58
我目前的情况就是这样,运算的商业逻辑不多,API CRUD 写整合测试就会比单元测试还多。
13F:→ superpandal: 当然是直接整合测试就好 专案失控才要整天搞单元测试 11/21 19:34
14F:→ superpandal: 而且ide可以单步除错 真的要测也不用annotation的烂 11/21 19:36
15F:→ superpandal: 方式 11/21 19:36
16F:→ superpandal: 一劳永逸让专案可控才是最佳品质保证 11/21 19:37
17F:→ acgotaku: 你写db/cache用DI写 可以很方便的 mock 这些依赖 11/22 10:57
18F:→ acgotaku: 但是也有不少做法是在测试时 用你的 db entity 真实建 11/22 10:59
19F:→ acgotaku: 一个db 在缓存中, 这样测试有一个优点 就是确保你entity 11/22 11:00
20F:→ acgotaku: 是正确的,也可以符合你实际连线的状况 缺点就是麻烦 11/22 11:00
21F:→ acgotaku: 上面有说CRUD逻辑简单就不用单元测试,这是很严重的错误 11/22 13:02
22F:→ acgotaku: 单元测试为何讲求覆盖率,就是要确保可靠度是有保障的 11/22 13:04
23F:→ acgotaku: 单元逻辑有没有正确,只是其中之一 不是全部 11/22 13:06
请问你指的是 db in memory?
24F:→ superpandal: CRUD是很制式化的技术应用 想方设法使程式码简洁且逻 11/22 21:09
25F:→ superpandal: 辑圆融 做到这一步即便你不写测试多半应用不会有错 11/22 21:11
26F:→ superpandal: 见到更多的是程式码乱七八糟写测试想hold住质量的... 11/22 21:12
27F:→ superpandal: 当然已经是屎山的就冏了 11/22 21:17
28F:→ superpandal: 别人的产品可以不必搞到这样 但有某种程度方便很多 11/22 21:20
产品程式码写不好测试程式很难写...
※ 编辑: a804372004 (114.44.115.11 台湾), 11/23/2022 12:13:17
29F:→ superpandal: 对 所以重点还是在於程式码质量 写的好不用什麽测都 11/23 21:39
30F:→ superpandal: 大概可以知道结果 11/23 21:40
31F:→ superpandal: 单元测试还是面向开发者 开发者可以完全控制写单元测 11/23 21:43
32F:→ superpandal: 试只是再验证 11/23 21:43
33F:→ superpandal: 而且通常不会有那麽多时间写的 11/23 21:44