開發(fā)階段的自我檢查 之 單元測試
Q:開發(fā)階段我們可以進(jìn)行哪些自我檢查呢?
?? 例如:剛寫好一個(gè)輪播圖組件
? 我們會造一些輪播圖的數(shù)據(jù) > 跑一把 看看效果
? 修改一下數(shù)據(jù) 只有一張圖片 > 重新加載 看下效果
? 數(shù)據(jù)為空 > 重新加載 看下效果
? 換用不同尺寸的圖片 > 再次進(jìn)入 看下效果
是的 在開發(fā)階段我們經(jīng)常會做代碼的自我檢查
A:從開發(fā)的過程來分 我們可以把開發(fā)階段的自我檢查劃分為:
test func > test class > test service || test UI
相應(yīng)的我們可以在開發(fā)階段進(jìn)行:
func test > class test > service test || UI test
從后往前看 我們是否可以更系統(tǒng)的進(jìn)行開發(fā)階段的自我檢查:
1??UI Test我們做的很多 => 開發(fā)完畢 > mock數(shù)據(jù) > 人肉看一下不同數(shù)據(jù)時(shí) UI和功能是否正常
2??service test匾南?=> 服務(wù)端通過接口測試做的比較多
3?? 再往前看 class test & func test => 不易觸及 進(jìn)行自我檢查的次數(shù)比較少
當(dāng)你的輸出是一個(gè)App ?? 我們可以通過UI進(jìn)行直接的交互
當(dāng)你的輸出是一個(gè)Service ?? 我們可以通過接口進(jìn)行直接的交互
當(dāng)你的輸出是一個(gè)Class or function ?? 我們可以通過什么進(jìn)行直接的交互呢?
如果你是AFNetworking的作者 如何進(jìn)行測試?
1?? 寫一個(gè)Example App 通過人機(jī)交互的方式 進(jìn)行每一項(xiàng)功能的驗(yàn)證?
2?? 通過單元測試框架 調(diào)用每一個(gè)待測試的方法 進(jìn)行功能的驗(yàn)證
今天我們的主題就是這里
通過單元測試 我們可以方便系統(tǒng)的進(jìn)行 func test & class test
從而可以更系統(tǒng)的進(jìn)行開發(fā)階段的自我檢查 交付測試團(tuán)隊(duì)更加健壯的產(chǎn)出
什么是單元測試呢?
1?? 最小可測單元_測試自己寫的對外提供功能or計(jì)算過程
2?? 不是為了發(fā)現(xiàn)bug,是為了提高開發(fā)效率,為了我們代碼健康的可持續(xù)發(fā)展
?? 一些調(diào)試很久的疑難問題 往往根源是一些簡單低級的小錯(cuò)誤引起的
單元測試的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
1?? 單元測試能保證在加入新功能或修改舊功能時(shí)代碼的正確性
2?? 單元測試保證在整個(gè)開發(fā)流程中代碼都會被測試诲锹,更容易及早發(fā)現(xiàn)問題古劲,降低風(fēng)險(xiǎn)
場景:
1?? 發(fā)版前修改了基礎(chǔ)組件的某個(gè)功能 ?? 通過單元測試 可以方便低成本的進(jìn)行回歸測試
2?? 代碼重構(gòu)后 ?? 功能影響的摸底與評估
3?? 開發(fā)過程中 直接測試某個(gè)方法 ?? 無需build & run整個(gè)工程
缺點(diǎn):
單元測試不能減少研發(fā)的代碼量肴敛,反而會花費(fèi)很多精力在編寫單元測試上艾君,增加了開發(fā)成本采够,而且對開發(fā)人員的要求也會更高
單元測試由誰來寫?
最好是開發(fā)者本人
如何寫單元測試?
每一個(gè)Test Case的寫法有三個(gè)步驟:①M(fèi)ock對象,準(zhǔn)備測試數(shù)據(jù)冰垄。②調(diào)用要測試的目標(biāo)API蹬癌。③驗(yàn)證輸出和行為是否正確
iOS項(xiàng)目如何進(jìn)行單元測試呢?
1?? XCTest in XCode
2?? Kiwi for OC (3rd framework)
3?? Quick for Swift or OC (3rd framework)
XCTest Demo:
Quick Demo:
單元測試應(yīng)用案例(學(xué)習(xí)樣本)
單元測試落地計(jì)劃:
1?? 基礎(chǔ)服務(wù) 覆蓋
2?? 公共組件 覆蓋
3?? 基礎(chǔ)業(yè)務(wù)viewModel 覆蓋
4?? 重要業(yè)務(wù)viewModel 覆蓋
參考資料:
1?? iOS單元測試基本介紹
2?? Quick
3?? Quick使用配置