上周開始在公眾號寫文章了,算是鞭策自己記錄下工作生活的一個方法吧
啦啦啦德瑪西亞
上周嘗試了一下用文字總結與回顧一天的工作與生活的感想,但是沒堅持住,連續好幾天沒更新了,這次嘗試換一種形式繼續這件事情。
最近在做的事情
由于眾所周知的原因,我在最近的工作中加強了自測,減少了很多顯而易見的錯誤(代碼變量名拼寫錯誤)以及一些比較難發現的錯誤。我們雖然在平常的工作中強調開發測試的重要性,卻在執行上不夠完備,有可能因為review過代碼了好像沒什么問題、部分場景難以覆蓋到的原因,產生了測試遺漏。現在看開發測試這件事情,還是很具備它的價值。
軟件質量
良好地完成開發測試是保障軟件產品質量的第一步。當一個程序員能夠持續不斷地按時交付高質量的軟件,會給別人一種靠譜的感覺。這種靠譜的感覺是不能用其他能力所替代的,即使你能夠完成高大上的功能但是卻在程序編碼中犯下低級的錯誤,就如同建筑高樓卻在某個地方缺少了一面承重墻,這種情況反而會令他人憂心忡忡。
同時,保證開發質量也減少了團隊的成本。描述一個問題需要溝通成本;修復一個問題需要打斷原有的開發進度;對程序的重新打包部署需要額外的時間;問題的出現會延長版本周期并讓人們身心俱疲。有計劃有效率地在開發階段進行自測,發現和處理問題,及早進行溝通和反饋,都會大大提升工作的效率。
有關于代碼測試
有人說過,可以把任何程序看做是處理不同if-else分支的代碼,問題只是如何把這些分支編寫得更加優雅,而不是簡單堆砌。那,也可以把對程序的測試看做是對if-else分支的檢查,于是在測試理論里存在一種測試指標——代碼覆蓋率。
另外一種測試方式則是使用測試用例。根據用戶的使用場景,構造出正常以及不正常的測試用例(test case),并觀察程序能否給出我們預期的結果。比如一個函數:
int divide(int a, int b){
return a / b;
}
這個函數的test case可以如下:
a = 2 ,b = 1 返回2
a = 2 ,b = 0 提示除數參數不能為0
……
等等。根據上面的例子看顯然這個函數是有問題的。
在開發自測的過程中,我們就可以根據這些檢查清單(checklist)執行程序,并進行檢查,有條理地發現程序的問題。
方法的延伸
對檢查清單一條條執行似乎太麻煩了,于是我們可以編寫單元測試用例,先確定單個模塊/函數是良好運作的。同樣以上面的函數為例:
int TestAdd(AddInput input){
int result = add(input.a, input.b);
assert(result == input.result);
}
最后,我們還會把用例組織成輸入參數和期待的輸出參數,對模塊進行自動化用例的測試。確保每次程序代碼變更后,這些用例都能夠自動地執行并返回結果,也就是對功能是否正常的回歸測試。也就是敏捷開發中的持續集成,which i dont quite understand。
最后再說說測試
評價程序的質量當中有一條,程序的可測試性。雖然不同場景下的程序可測試性參差不齊,但我相信,同樣的需求下,具有更強可測試性的代碼一般會更好,因為可測試性要求代碼設計能夠較好地對需求進行正交分解,能夠區分不同的模塊,會具備更強的可維護性和可擴展性。當然,在一些高性能需求下可能會對性能有所損耗。
另外,很多需求/代碼設計的問題,在思考如何測試的時候,也會露出端倪。當我們討論這個場景比較難被測試覆蓋到的時候,就應該思考是不是本身的設計或是需求不合理。
最近讀的書
看完三體后,剛好在kindle上看到了《The Power Of Habit》這本書想到之前tiny叔有安利過這本書,我便毫不猶豫地入了。
大部分的閱讀都是在上班的地鐵上完成的,目前讀了55%左右,看完了個人和公司行為習慣部分。
看過的基本全英暢銷書都愛在樹上穿插故事與訪談,滿滿地深入淺出的味道,所以也容易流暢地閱讀。前幾章主要講述了:
習慣的產生機制。神奇的是,它是與記憶無關的。即使腦補受損導致不能產生新的記憶的人也存在習慣行為,也能夠產生新的習慣。
習慣行為的三部曲,渴望(craving)-行為(routine)-獎勵(reward)。
改變習慣行為的方法,用同樣的渴望和獎勵,改變行為來達到改變習慣的目的。
……
習慣是個神奇的事物。有些我們需要咬牙完成的事情,只要養成了相應的習慣,可能輕輕松松不知不覺就能夠完成了。書中提到,自制力也是一種類似體力的資源,當我們使用自制力完成一件事情的時候,會消耗它;那么我們可能就沒有足夠的韌性去完成另一件事情了。把一些重要不緊急的事情作為我們的日常習慣來完成,假以時日,我們必將受益良多。
不過養成習慣是件需要自制力的事情,這兩年新養成的習慣大概也只有跑步、閱讀英文讀物/技術文章,記賬理財、時間計劃管理(GTD)這些事情還顯得斷斷續續。
最后的吐槽
kindle的詞典加載越來越慢了這是什么鬼啊查生詞都好慢啊好想換voyage啊
減肥增肌一塊腹肌啥時候變八塊呢?
nozuonodie我又要失眠了
把lol卸掉的我又有更多時間學習和健身了