惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
罗磊的独立博客
量子位
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
M
MIT News - Artificial intelligence
月光博客
月光博客
IT之家
IT之家
D
DataBreaches.Net
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Last Week in AI
Last Week in AI
D
Docker
The GitHub Blog
The GitHub Blog
B
Blog
V
Visual Studio Blog
博客园 - Franky
N
Netflix TechBlog - Medium
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
博客园 - 聂微东
U
Unit 42

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
[ 墨刀案例 ] 创业公司发展到中期如何搭建自动化测试? - 少数派
2017-03-20 · via 少数派

墨墨姐提示:这是一个神奇的帖子,产品经理转发给技术或是朋友圈,尽显你的专业!

在墨刀,我们一直在使用 web 前端技术开发各个平台的 UI 界面,其中包括我们的桌面客户端以及移动客户端。而墨刀本身又是个前端很复杂的产品,这也就暗示着 bug 不在少数,尤其是在产品经理和设计师的眼中,这些 bug 很有可能让他们感到抓狂,如果问题不断那么可能就会对墨刀弃用了。

交代一下之前的测试情况:

这次优化之前,我们是没有自动测试的,更多的是采用用户测试和内部测试的方式。随着人数的增加,每天提交的代码量也越来越大,原始的人工测试已经在拖着我们的工期,所以,引入自动化测试看来是非常自然的事情了。

最近我们已经搭建起了测试平台,工友们也在不断为自己的代码增加测试中,在保证产品稳定的同时,同样也提升了开发体验。我简单分享下我们是怎样选择测试框架的。

团队情况

首先,有必要说下我们目前的开发团队。目前我们有 7 名开发,还都很年轻,大多是刚毕业没几年,但充满激情。大部分是前端,专职后端只有一人(棒棒哒)。很多人也都是在过去的一年前加入,在产品快速成长中起了很重要的作用。

考虑重点

做决定往往很难,尤其是在现在的 web 前端中。光测试工具就有这么多种

就像前面说的,由于我们的人员组成的特点,年轻,也有个弱点,就是经验不足,那么我们在做技术选型的时候,就特别看中社区,社区的发展状况直接决定了我们是否能够少踩坑。从另一方面来讲,公司仍处在创业阶段,每个人都是在产品前线上写代码,稳定的社区也能为我们省去了很多事,因为我们大多时候只要相信工具就好。

所以,面对众多的前端测试框架,现在的我们最看重的是社区氛围好坏,是否好上上手,和其他工具是否配合良好。当然,也是要有发展前景的,谁都不愿意在公司主要产品上成天换框架。

我们的选择

单元测试

现在去看MochaJasmineJestAva这些流行的测试框架。同时考虑到我们的技术栈(React + Redux +Spine),我们最后选择了 Jest +Enzyme(嗯,越来越 Facebook 全家桶)。

第一次知道 Jest 是看了 Codecademy 讲述他们是如何测试 React 的文章,文中提到了 Jest 的缺点,慢,以及测试代码不能使用 ES2015 的语法等,最后他们选择了Karma+ Jasmine + Webpack + React。那时确实对 Jest 留下了不好的印象。但在这次对各种测试框架的尝试中,发现现在的 Jest 出奇的好。

除了解决了上述的问题外,Jest 与其他工具如 Babel、ESlint 的配合也几乎是无缝的,文档写得非常详细,几乎不带脑子走一遍就能在项目中跑起测试。

另外 Jest 是 Facebook 系,之前提到过,我们非常看重社区的支持,这点 Jest 完全可以满足我们的需求。

除此之外,墨刀在 UI 上很多地方用了 React,因此我们用了 Enzyme 来辅助测试 React 的组件。

用 Jest + Enzyme 来测试 component 大致是这样的:



速度上,带着 Babel ,Enzyme 的情况下,从 Setup 到 Teardown 总共耗时1.5s。目前来看,大量测试加入之后的性能还是未知,但从社区方面的反馈来看相信一定是可以接受的。

目前 Jest 是基于 Jasmine@2,所以 assert 语法是一样的,用过 BDD 的人都可以很好地过渡到 Jest。

Jest 还有很多很方便的功能,比如 Mock Functions,还有 built-in coverage report 等,都省去了很多单独配置的劳动。

除了对组件的测试外,我们也计划对数据层,Redux 的 reducer 写更多的单元测试。

端对端测试

由于 Jest 只能跑在 Node.js 上,虽然默认使用jsdom模拟浏览器环境(关掉 jsdom 会让 Jest 更快),但有些时候我们仍然需要在真实的浏览器中进行端对端测试,比如用户的登入,支付流程。因此我们引入了WebDriverIO+ Mocha +Chai+chai-as-promised在浏览器中进行基于流程的测试。这篇文章非常详细地介绍了怎样 setup 这些,这里就不再赘述。虽然这里又引入了 Mocha,但我们配置了 BDD 的语法,所以写起来几乎和 Jest 是很相似的。


开发流程

在开发流程上,我们目前在 CI 中只跑单元测试,在本地验证端对端测试。因为我们发现端对端测对性能要求还是有一定门槛的。另外即使是 PhantomJS,在 CI 上 setup 也不是那么容易。

----

希望借此文章和大家多多交流。

对于测试,我们才刚刚开始。