上周開始在公眾號寫文章了搁骑,算是鞭策自己記錄下工作生活的一個方法吧
啦啦啦德瑪西亞
上周嘗試了一下用文字總結(jié)與回顧一天的工作與生活的感想,但是沒堅(jiān)持住,連續(xù)好幾天沒更新了,這次嘗試換一種形式繼續(xù)這件事情晒杈。
最近在做的事情
由于眾所周知的原因,我在最近的工作中加強(qiáng)了自測孔厉,減少了很多顯而易見的錯誤(代碼變量名拼寫錯誤)以及一些比較難發(fā)現(xiàn)的錯誤拯钻。我們雖然在平常的工作中強(qiáng)調(diào)開發(fā)測試的重要性,卻在執(zhí)行上不夠完備撰豺,有可能因?yàn)閞eview過代碼了好像沒什么問題粪般、部分場景難以覆蓋到的原因,產(chǎn)生了測試遺漏≈3茫現(xiàn)在看開發(fā)測試這件事情刊驴,還是很具備它的價值姿搜。
軟件質(zhì)量
良好地完成開發(fā)測試是保障軟件產(chǎn)品質(zhì)量的第一步寡润。當(dāng)一個程序員能夠持續(xù)不斷地按時交付高質(zhì)量的軟件,會給別人一種靠譜的感覺舅柜。這種靠譜的感覺是不能用其他能力所替代的梭纹,即使你能夠完成高大上的功能但是卻在程序編碼中犯下低級的錯誤,就如同建筑高樓卻在某個地方缺少了一面承重墻致份,這種情況反而會令他人憂心忡忡变抽。
同時,保證開發(fā)質(zhì)量也減少了團(tuán)隊(duì)的成本氮块。描述一個問題需要溝通成本;修復(fù)一個問題需要打斷原有的開發(fā)進(jìn)度绍载;對程序的重新打包部署需要額外的時間;問題的出現(xiàn)會延長版本周期并讓人們身心俱疲滔蝉。有計劃有效率地在開發(fā)階段進(jìn)行自測击儡,發(fā)現(xiàn)和處理問題,及早進(jìn)行溝通和反饋蝠引,都會大大提升工作的效率阳谍。
有關(guān)于代碼測試
有人說過蛀柴,可以把任何程序看做是處理不同if-else分支的代碼,問題只是如何把這些分支編寫得更加優(yōu)雅矫夯,而不是簡單堆砌鸽疾。那,也可以把對程序的測試看做是對if-else分支的檢查训貌,于是在測試?yán)碚摾锎嬖谝环N測試指標(biāo)——代碼覆蓋率制肮。
另外一種測試方式則是使用測試用例。根據(jù)用戶的使用場景旺订,構(gòu)造出正常以及不正常的測試用例(test case)弄企,并觀察程序能否給出我們預(yù)期的結(jié)果。比如一個函數(shù):
int divide(int a, int b){
return a / b;
}
這個函數(shù)的test case可以如下:
a = 2 ,b = 1 返回2
a = 2 ,b = 0 提示除數(shù)參數(shù)不能為0
……
等等区拳。根據(jù)上面的例子看顯然這個函數(shù)是有問題的拘领。
在開發(fā)自測的過程中,我們就可以根據(jù)這些檢查清單(checklist)執(zhí)行程序樱调,并進(jìn)行檢查约素,有條理地發(fā)現(xiàn)程序的問題。
方法的延伸
對檢查清單一條條執(zhí)行似乎太麻煩了笆凌,于是我們可以編寫單元測試用例圣猎,先確定單個模塊/函數(shù)是良好運(yùn)作的。同樣以上面的函數(shù)為例:
int TestAdd(AddInput input){
int result = add(input.a, input.b);
assert(result == input.result);
}
最后乞而,我們還會把用例組織成輸入?yún)?shù)和期待的輸出參數(shù)送悔,對模塊進(jìn)行自動化用例的測試。確保每次程序代碼變更后爪模,這些用例都能夠自動地執(zhí)行并返回結(jié)果欠啤,也就是對功能是否正常的回歸測試。也就是敏捷開發(fā)中的持續(xù)集成屋灌,which i dont quite understand洁段。
最后再說說測試
評價程序的質(zhì)量當(dāng)中有一條,程序的可測試性共郭。雖然不同場景下的程序可測試性參差不齊祠丝,但我相信,同樣的需求下除嘹,具有更強(qiáng)可測試性的代碼一般會更好写半,因?yàn)榭蓽y試性要求代碼設(shè)計能夠較好地對需求進(jìn)行正交分解,能夠區(qū)分不同的模塊尉咕,會具備更強(qiáng)的可維護(hù)性和可擴(kuò)展性叠蝇。當(dāng)然,在一些高性能需求下可能會對性能有所損耗龙考。
另外蟆肆,很多需求/代碼設(shè)計的問題矾睦,在思考如何測試的時候,也會露出端倪炎功。當(dāng)我們討論這個場景比較難被測試覆蓋到的時候枚冗,就應(yīng)該思考是不是本身的設(shè)計或是需求不合理。
最近讀的書
看完三體后蛇损,剛好在kindle上看到了《The Power Of Habit》這本書想到之前tiny叔有安利過這本書赁温,我便毫不猶豫地入了。
大部分的閱讀都是在上班的地鐵上完成的淤齐,目前讀了55%左右股囊,看完了個人和公司行為習(xí)慣部分。
看過的基本全英暢銷書都愛在樹上穿插故事與訪談更啄,滿滿地深入淺出的味道稚疹,所以也容易流暢地閱讀。前幾章主要講述了:
習(xí)慣的產(chǎn)生機(jī)制祭务。神奇的是内狗,它是與記憶無關(guān)的。即使腦補(bǔ)受損導(dǎo)致不能產(chǎn)生新的記憶的人也存在習(xí)慣行為义锥,也能夠產(chǎn)生新的習(xí)慣柳沙。
習(xí)慣行為的三部曲,渴望(craving)-行為(routine)-獎勵(reward)拌倍。
改變習(xí)慣行為的方法赂鲤,用同樣的渴望和獎勵,改變行為來達(dá)到改變習(xí)慣的目的柱恤。
……
習(xí)慣是個神奇的事物数初。有些我們需要咬牙完成的事情,只要養(yǎng)成了相應(yīng)的習(xí)慣膨更,可能輕輕松松不知不覺就能夠完成了妙真。書中提到缴允,自制力也是一種類似體力的資源荚守,當(dāng)我們使用自制力完成一件事情的時候,會消耗它练般;那么我們可能就沒有足夠的韌性去完成另一件事情了矗漾。把一些重要不緊急的事情作為我們的日常習(xí)慣來完成,假以時日薄料,我們必將受益良多敞贡。
不過養(yǎng)成習(xí)慣是件需要自制力的事情,這兩年新養(yǎng)成的習(xí)慣大概也只有跑步摄职、閱讀英文讀物/技術(shù)文章誊役,記賬理財获列、時間計劃管理(GTD)這些事情還顯得斷斷續(xù)續(xù)。
最后的吐槽
kindle的詞典加載越來越慢了這是什么鬼啊查生詞都好慢啊好想換voyage啊
減肥增肌一塊腹肌啥時候變八塊呢蛔垢?
nozuonodie我又要失眠了
把lol卸掉的我又有更多時間學(xué)習(xí)和健身了