我”码”由我不由天——谈谈前端测试的作用与实践

我“码”由我不由天
谈谈前端测试的作⽤与实践
李 泽 帆 @ L Z A N E
✈ 🌅 👫
📲
👨💻😠
👨💻😡
👨💻
李泽帆(靓仔)@LZANE
毕业于中⼭⼤学
腾讯CDC前端⼯程师
感兴趣的东⻄
Web开发
数据科学 / Data Science
计算机视觉 / CV
智能家居 / Smart Home
指弹吉他 / Fingerstyle guitar
⻄藏 / Tibet
…
测试的分类
单元测试、集成测试、端对端测试
我”码”由我不由天——谈谈前端测试的作用与实践
2个单元测试
0个集成测试
0个端对端测试
我”码”由我不由天——谈谈前端测试的作用与实践
我”码”由我不由天——谈谈前端测试的作用与实践
前端测试的作⽤
提升信⼼、开发阶段实时反馈、时间更有价值
消除恐惧,提升信⼼
紧急修复线上bug
• 修bug -> 测试通过 -> 发布
• 不再牵⼀发⽽动全身
消除恐惧,提升信⼼
重构,让代码更好
IN
IN
IN
OUT
OUT
OUT
IF
IN
IN
IN
OUT
OUT
OUT
OUT
IN
IN
IN
OUT
OUT
OUT
IN-A
IN-B
IN-C
OUT-A
OUT-B
OUT-C
IN-A
IN-B
IN-C
OUT-A
OUT-B
OUT-C
IN-A
IN-B
IN-C
OUT-A
OUT-B
OUT-C
IN-A
IN-B
IN-C
OUT-A
OUT-B
OUT-C
IN-A
IN-B
IN-C
OUT-A
OUT-B
OUT-C
Before you start refactoring, make sure you have a solid
suite of tests. These tests must be self-checking.
— Martin Fowler
开发阶段实时反馈
没有单元测试和集成测试
开发阶段实时反馈
时间更有意义,更有价值
• debug⼤部分时候是⼀次性⼯作
• 写测试则能为团队留下资产
更多测试的作⽤
• 指导写出更好的代码(Good code are also easy to test)
• 测试即⽂档(对开发⽽⾔)
• 对需求的理解,明确正在写的功能
• 减少上下⽂切换
前端测试的实践
测试的组成、测试驱动开发TDD
测试框架
• 运⾏库
• 断⾔库
• mock
⼀个测试的组成
我”码”由我不由天——谈谈前端测试的作用与实践
Make it fail
Make it pass
Format it
Make it fail Again
Make it pass
TDD的⼏个准则
• Write only enough of a unit test to fail.
• Write only enough production code to make the failing unit test
pass.
• 测试失败 => 写业务代码
• 测试通过 => 写测试代码
测试被常问的问题
浪费时间?哪些代码需要写测试?代码覆盖率?…
浪费时间?
• debug修bug,跟其他⼈解释代码的时间 -> 写测试的时间
• 减少返⼯,减少上下⽂切换的次数
The results of the case studies indicated that the pre-release
defect density of the four products decreased between 40% and
90% relative to similar projects that did not use the TDD
practice. Subjectively, the teams experienced a 15–35%
increase in initial development time after adopting TDD.
⼀份来⾃微软的报告
我”码”由我不由天——谈谈前端测试的作用与实践
哪些代码需要测试?颗粒度?
• 公共API,⿊盒测试
• 会被多次调⽤的组件
• 复杂的逻辑
测试覆盖率?coverage
• 看被测试部分的重要性,重要的部分80%
• CI配置threshold, 只增不减策略
✈ 🌅 👫
💏
我”码”由我不由天——谈谈前端测试的作用与实践
参考
【书籍】Refactoring: Improving the Design of Existing Code (2nd Edition) by Martin Fowler
【书籍】Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
【⽂章】 An Overview of JavaScript Testing in 2019 ( https://medium.com/welldone-software/
an-overview-of-javascript-testing-in-2019-264e19514d0a )
【课程】JavaScript Testing Practices and Principles by Kent C. Dodds ( https://
frontendmasters.com/courses/testing-practices-principles/ )
Q&A
Github: @LZANE
Blog: www.lzane.com
Email: cn.zanelee@gmail.com
1 of 45

Recommended

Why do we need backend testing by
Why do we need backend testingWhy do we need backend testing
Why do we need backend testingChen Liwei
911 views68 slides
簡易的面試心得分享 by
簡易的面試心得分享簡易的面試心得分享
簡易的面試心得分享Jack Wang
27.5K views41 slides
網頁爬蟲入門 Python web crawler at 淡江大學 20170930 by
網頁爬蟲入門 Python web crawler at 淡江大學 20170930網頁爬蟲入門 Python web crawler at 淡江大學 20170930
網頁爬蟲入門 Python web crawler at 淡江大學 20170930Tim Hong
328 views66 slides
【運算思維導向教材】生活中的資料檢驗 by
【運算思維導向教材】生活中的資料檢驗【運算思維導向教材】生活中的資料檢驗
【運算思維導向教材】生活中的資料檢驗byagnesliu
35 views140 slides
【運算思維導向教材】生活中的資料檢驗 by
【運算思維導向教材】生活中的資料檢驗【運算思維導向教材】生活中的資料檢驗
【運算思維導向教材】生活中的資料檢驗重年 陳
94 views140 slides
基于Ht rca缺陷分析的测试改进-china test-张玲玲 by
基于Ht rca缺陷分析的测试改进-china test-张玲玲基于Ht rca缺陷分析的测试改进-china test-张玲玲
基于Ht rca缺陷分析的测试改进-china test-张玲玲drewz lin
960 views29 slides

More Related Content

Similar to 我”码”由我不由天——谈谈前端测试的作用与实践

資訊安全的幾個觀念 by
資訊安全的幾個觀念資訊安全的幾個觀念
資訊安全的幾個觀念Ray Wei
811 views22 slides
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊? by
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?棋文 鄭
512 views40 slides
Hello DNN by
Hello DNNHello DNN
Hello DNNevan li
314 views39 slides
100年縮短婦女數位落差實施計畫 by
100年縮短婦女數位落差實施計畫100年縮短婦女數位落差實施計畫
100年縮短婦女數位落差實施計畫dptaedu
360 views27 slides
Rsa2012 下一代安全的战略思考-绿盟科技赵粮 by
Rsa2012 下一代安全的战略思考-绿盟科技赵粮Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮NSFOCUS
870 views20 slides
42qu thrift1 by
42qu thrift142qu thrift1
42qu thrift1Zoom Quiet
1.1K views66 slides

Similar to 我”码”由我不由天——谈谈前端测试的作用与实践(18)

資訊安全的幾個觀念 by Ray Wei
資訊安全的幾個觀念資訊安全的幾個觀念
資訊安全的幾個觀念
Ray Wei811 views
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊? by 棋文 鄭
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
棋文 鄭512 views
Hello DNN by evan li
Hello DNNHello DNN
Hello DNN
evan li314 views
100年縮短婦女數位落差實施計畫 by dptaedu
100年縮短婦女數位落差實施計畫100年縮短婦女數位落差實施計畫
100年縮短婦女數位落差實施計畫
dptaedu360 views
Rsa2012 下一代安全的战略思考-绿盟科技赵粮 by NSFOCUS
Rsa2012 下一代安全的战略思考-绿盟科技赵粮Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮
NSFOCUS870 views
42qu thrift1 by Zoom Quiet
42qu thrift142qu thrift1
42qu thrift1
Zoom Quiet1.1K views
Taobao 100702070730-phpapp01 by drewz lin
Taobao 100702070730-phpapp01Taobao 100702070730-phpapp01
Taobao 100702070730-phpapp01
drewz lin348 views
Legacy tdd simplify-ken fang- iji by Odd-e
Legacy tdd simplify-ken fang- ijiLegacy tdd simplify-ken fang- iji
Legacy tdd simplify-ken fang- iji
Odd-e565 views
MOPCON 2015 - 軟體、測試、程式設計家 by 家弘 周
MOPCON 2015 - 軟體、測試、程式設計家MOPCON 2015 - 軟體、測試、程式設計家
MOPCON 2015 - 軟體、測試、程式設計家
家弘 周4.3K views
Test and Software Quality by Enzo Wang
Test and Software QualityTest and Software Quality
Test and Software Quality
Enzo Wang99 views
Doc 2011101404575913 by Rhythm Sun
Doc 2011101404575913Doc 2011101404575913
Doc 2011101404575913
Rhythm Sun240 views
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2 by Alan Tsai
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Alan Tsai648 views
9.“企业应急响应与反渗透”之真实案例分析 by Hsiao Tim
9.“企业应急响应与反渗透”之真实案例分析9.“企业应急响应与反渗透”之真实案例分析
9.“企业应急响应与反渗透”之真实案例分析
Hsiao Tim541 views
梦想向前冲 by Ray Lin
梦想向前冲梦想向前冲
梦想向前冲
Ray Lin690 views
HITCON CMT 2017 - ZeroDay 發表會 by Chris Lin
HITCON CMT 2017 - ZeroDay 發表會HITCON CMT 2017 - ZeroDay 發表會
HITCON CMT 2017 - ZeroDay 發表會
Chris Lin1.1K views
110929 kn-手机软件测试 by Zoom Quiet
110929 kn-手机软件测试110929 kn-手机软件测试
110929 kn-手机软件测试
Zoom Quiet1.6K views
資工人的學習成長之路 by aetherAI
資工人的學習成長之路資工人的學習成長之路
資工人的學習成長之路
aetherAI1.1K views

我”码”由我不由天——谈谈前端测试的作用与实践