写测试可能是单枪匹马的开发者的最可靠的技术保障 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
gowl
V2EX    奇思妙想

写测试可能是单枪匹马的开发者的最可靠的技术保障

  •  1
     
  •   gowl 2023-01-10 08:40:38 +08:00 4106 次点击
    这是一个创建于 1084 天前的主题,其中的信息可能已经有所发展或是发生改变。
    14 条回复    2023-01-10 22:05:26 +08:00
    fyooo
        1
    fyooo  
       2023-01-10 08:43:15 +08:00
    也是大规模协作开发的最可靠技术保障~
    QlanQ
        2
    QlanQ  
       2023-01-10 08:47:06 +08:00
    我是菜鸡,真的想问下,网络请求的接口,怎么写测试,数据是怎么造的
    如果接口数据有关联如何处理
    jameslam
        3
    jameslam  
       2023-01-10 08:54:54 +08:00
    @QlanQ 前端的话 jest 有 mock 接口的 API ,其他语言同理。看你什么测试,集成测试的话 mock 接口,E2E 用真实接口
    MuscleOf2016
        4
    MuscleOf2016  
       2023-01-10 08:57:13 +08:00
    @QlanQ 有单独的接口测试框架或者工具,专门去测接口逻辑什么的,基本只是针对后端接口的。一般这种工具都支持接口关联测试,类似登录返回的信息保存到一个变量,然后下一个接口引用这个变量。然后断言或者其他什么判断接口返回数据是不是满足预期。。
    Rocketer
        5
    Rocketer  
       2023-01-10 09:18:37 +08:00 via iPhone   1
    @QlanQ https://jestjs.io/docs/mock-function-api#mockfnmockreturnvaluevalue

    作为单元测试,除了被测的方法用真实代码以外,其他依赖(包括同一个类中的其他方法)都应该是模拟的,或者只测试调用其他依赖时的参数是不是预期的。不能因为其他依赖出错导致你的测试失败,否则就不叫单元测试了。

    所以一个好的测试程序里面一半以上代码都是在模拟,初学很头疼,学会了很香。
    zzm88104
        6
    zzm88104  
       2023-01-10 09:27:12 +08:00
    个人开发者,所写项目(规模都是比较小的)从不写程序测试,只是自己手工真人测试。

    请问这个在项目中一般会花多少时间?带来多少好处?值得我投入时间学习吗?

    谢谢
    makelove
        7
    makelove  
       2023-01-10 09:57:35 +08:00
    手工测试一个复杂算法,也得打开 console 一次次调用这个函数,再比对结果,然后改了下算法,再手工做一遍,这效率。。。其实写个单元测试和手工测试一遍工作量差不太多。

    对于我自己的 web 项目我只对少部分复杂工具函数 /算法之类写写单元测试,其它的我还是喜欢直接写集成测试,不要写模拟对象隔离测试对象,那个累且对个人项目意义不大,直接对 api 写 http 测试,再查数据库比对结果,这样一个项目的测试代码很少但收到了最大效果。
    WngShhng
        8
    WngShhng  
       2023-01-10 11:35:30 +08:00
    同意,特别是下次做大规模重构的时候,跑一下测试用例就可以,对于严谨的开发,测试是第一道保障
    TabGre
        9
    TabGre  
       2023-01-10 13:42:10 +08:00 via iPhone
    前端方面如何编写有效的测试 ,个人感觉只有工具函数可以测试
    kele999
        10
    kele999  
       2023-01-10 17:09:17 +08:00
    不然呢,不测试直接生产吗
    hst001
        11
    hst001  
       2023-01-10 18:17:00 +08:00
    理想很丰满现实很骨感。

    测试也分很多种,单元测试最简单,维护需要消耗一些时间,集成测试比较复杂,维护需要消耗亿点点时间,如果开发只有一个人,现实的问题是你根本没有多余的时间去维护测试用例,特别是集成测试。
    weixind
        12
    weixind  
       2023-01-10 20:22:10 +08:00
    @TabGre 写测试可以改变写代码的习惯。如果觉得测试不好写,一定程度上是代码结构还有优化的空间。
    intmax2147483647
        13
    intmax2147483647  
       2023-01-10 21:40:16 +08:00
    国内大部分大厂程序员都没有写测试的习惯,公司项目管理也没有写测试的要求,全都是依托答辩
    yikyo
        14
    yikyo  
       2023-01-10 22:05:26 +08:00 via iPhone
    单人项目写测试很有用,避免你修改一处之后引起其他的问题,第二可以快速验证,避免自己输入输出进行测试,还是很浪费时间的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3062 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:03 PVG 21:03 LAX 05:03 JFK 08:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86