SlideShare a Scribd company logo
1 of 45
Download to read offline
我“码”由我不由天
谈谈前端测试的作⽤与实践
李 泽 帆 @ 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

More Related Content

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

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

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

資訊安全的幾個觀念
資訊安全的幾個觀念資訊安全的幾個觀念
資訊安全的幾個觀念
 
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
2020DDDTW-如何逐步導入敏捷精神,創造願意接受失敗的開發團隊?
 
Hello DNN
Hello DNNHello DNN
Hello DNN
 
100年縮短婦女數位落差實施計畫
100年縮短婦女數位落差實施計畫100年縮短婦女數位落差實施計畫
100年縮短婦女數位落差實施計畫
 
Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮
 
42qu thrift1
42qu thrift142qu thrift1
42qu thrift1
 
Taobao 100702070730-phpapp01
Taobao 100702070730-phpapp01Taobao 100702070730-phpapp01
Taobao 100702070730-phpapp01
 
Legacy tdd simplify-ken fang- iji
Legacy tdd simplify-ken fang- ijiLegacy tdd simplify-ken fang- iji
Legacy tdd simplify-ken fang- iji
 
MOPCON 2015 - 軟體、測試、程式設計家
MOPCON 2015 - 軟體、測試、程式設計家MOPCON 2015 - 軟體、測試、程式設計家
MOPCON 2015 - 軟體、測試、程式設計家
 
Test and Software Quality
Test and Software QualityTest and Software Quality
Test and Software Quality
 
Doc 2011101404575913
Doc 2011101404575913Doc 2011101404575913
Doc 2011101404575913
 
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
 
9.“企业应急响应与反渗透”之真实案例分析
9.“企业应急响应与反渗透”之真实案例分析9.“企业应急响应与反渗透”之真实案例分析
9.“企业应急响应与反渗透”之真实案例分析
 
梦想向前冲
梦想向前冲梦想向前冲
梦想向前冲
 
HITCON CMT 2017 - ZeroDay 發表會
HITCON CMT 2017 - ZeroDay 發表會HITCON CMT 2017 - ZeroDay 發表會
HITCON CMT 2017 - ZeroDay 發表會
 
Tip for Editors
Tip for EditorsTip for Editors
Tip for Editors
 
110929 kn-手机软件测试
110929 kn-手机软件测试110929 kn-手机软件测试
110929 kn-手机软件测试
 
資工人的學習成長之路
資工人的學習成長之路資工人的學習成長之路
資工人的學習成長之路
 

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