查看: 10442| 回复: 32
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] Unit test到底有什么用?

 
全局:

2011(7-9月)-CS本科+3个月-1年 | 校园招聘会|BayArea湾区 码农类General实习@

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
在实习的时候为我那个建的一个service写了不少unit test,但写的过程也让我疑惑。-baidu 1point3acres

有一些比如类似于filter的method,写unit test写不写都没什么用,感觉唯一的好处是有人不小心改了这个method会被这个test检测到?

另外一种就更烦人了,我当时做的AWS,很多method是call AWS的API的,但是在test里又不能真的call这种remote procedure call。要用mock。基本写这些method就是先call一遍,看看这些rpc return什么,然后再用mock来存这些return value当test用。
这些test写下来感觉就特侮辱智商·····

testing一般都这样吗?

评分

参与人数 1大米 +3 收起 理由
纷纷的人生呐 + 3 给你点个赞!

查看全部评分


上一篇:Tesla和Cisco,哪个实习写在简历上会更有吸引力
下一篇:大二学生实习如何准备
推荐
tq5124 2020-11-28 12:38:12 | 只看该作者
全局:
mock确实看上去很傻,因为通常大家都是先写test case,然后报错说缺少rpc,然后缺什么mock什么,这样一套下来很容易让人觉得这个头痛医头脚痛医脚,没啥大用。
. Waral dи,
其实正确的流程是,你脑子过一遍,这个test case需要什么样的rpc,然后先去mock,然后跑一边看看是否符合你的expectation,这样听上去是不是更合理?另外从reviewer的角度也是这样review,看看为什么需要这些mock,那些是合理的,那些是author为了省事/不小心/不正确的写上去的。保证mock的数量最小是很重要的,不然会掩盖很多问题。

再上一层,就是mock始终不能cover 真正的场景,那在mock之外设立一些integration test又是很有必要的,可能是在CI上自动跑的,可能是直接上prod的prober tests,这些不同的方案有不同的trade off,有不同的适合的场景,那些由unit test cover,哪些是integration,哪些是prober,这都是要考虑的。

最后回答“这些有什么用”,确实对你没什么用。。。写这个代码的人一般都会认为自己写的代码没有问题,所以testing一个是给reviewer看的,另一个是给Leaders看的。leaders可以很直观的看到组里的服务在跑,实时的看到那些有问题那些没问题,这是十分重要的。想象一下如果你是组里的负责人,底下的人(通常)level没你高,水平没你高,你怎么放心他们写的代码?就是testing。只要testing还在,就不会出大问题,小问题都是可以解决的。testing还在就意味着晚上可以睡安稳觉

评分

参与人数 15大米 +22 收起 理由
xiehang019 + 3 很有用的信息!
BladeLee + 1 赞一个
Juliette23 + 1 赞一个
DoctorZ + 1 赞一个
gongliheng + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
这种test是一种对feature的ensurance. 避免之后有人改动 无意间影响了function的功能

这也算一种用处

unit test并不只是debug 和 test你开发时候的code

评分

参与人数 5大米 +7 收起 理由
externaldrive + 1 很有用的信息!
armu + 1 赞一个
charcoal_ + 3 赞一个!
海绵宝宝 + 1 赞一个
royh + 1 赞一个

查看全部评分

回复

使用道具 举报

推荐
redhairdragon 2020-11-28 12:24:38 | 只看该作者
全局:
有可能别人再加一个新功能的时候把你的feature 搞坏了了.
还有个经常发生在我自己身上的,有时候发现个问题,急急忙忙的把现在的问题解决了,却没想到最基本的case没有过..

评分

参与人数 1大米 +1 收起 理由
armu + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
第二种unit test的作用是保证你的API都被用正确的param call过,主要是在测你自己service的逻辑,mock dependency肯定是必须的
回复

使用道具 举报

全局:
如果method里面除了调用其他API以外没有别的内容,那unit test意义确实不大
回复

使用道具 举报

全局:
别动不动就说侮辱智商这种话,别戾气那么重,你有这种想法是因为你经验不够,也没做过什么项目,存在都有他的合理性,好好思考,虚心学习吧
回复

使用道具 举报

🔗
 楼主| a610062656 2020-11-28 12:20:14 | 只看该作者
全局:
liuzhongda 发表于 2020-11-28 12:15
别动不动就说侮辱智商这种话,别戾气那么重,你有这种想法是因为你经验不够,也没做过什么项目,存在都有他 ...

对不起,当时写得时候会想起当时的情绪就不小心用词过重了
回复

使用道具 举报

全局:
tq5124 发表于 2020-11-27 20:38:12
mock确实看上去很傻,因为通常大家都是先写test case,然后报错说缺少rpc,然后缺什么mock什么,这样一套下来很容易让人觉得这个头痛医头脚痛医脚,没啥大用。

其实正确的流程是,你脑子
写的好。test driven development相信大家都学过或者听说过,但真这么执行的却不多。更可惜的是楼主的组里写代码的人本身没有写基本的unit tests却让别人来补上。tests除了写给上述两类人之外,更重要的是写给未来的人。service越写越复杂,你不能控制未来的人一定会沿用你的思路或者重用同样的api。假如五年后懂的人全走了,如何保证新来的人在啥也不懂的情况下行看似简单的代码不会break任何东西?如果连unit tests都没有的话,新来的人马马虎虎又没local跑起来测一下,那可能要到prod才会被发现了。越是简单觉得不可能出错的地方,万一真出了问题反而不容易被发现。. Χ

经验之所以是经验,都是由教训总结出来的。unit tests的目的是宁可错杀一千不要放过一个。越早发现问题成本越低。多写几十个tests要远好过fix a prod issue。
回复

使用道具 举报

全局:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表