完成了Coursera Scala Specialization系列的第一門課之後,也來上一下之前沒看過的UCSD資料結構和演算法系列。之前不論是學校學的還是工作後學的,忘光光了吧!
這門課算是蠻實作入門的,先從實際的program執行告訴你演算法的好壞有顯著的影響,接著告訴你要怎麼debug你的演算法:stress test。
stress test主要是一個實驗組,一個對照組來跑隨機建立的input data。對照組是我們已知(應該)正確的演算法,我們藉由跑同一組input來檢視我們(實驗組)的program output是否正確,不過可能會出現對照組output是錯誤的情況,這時候也要修正對照組的程式。
stress test是一個無窮迴圈的測試,每次iteration都產生隨機的input data,但由於是利用pseudo-random generator,所以其實可以重現每次測試的input data。
測試的順序建議如下:
1. 手動測試number overflow cases,因為如果對照組也有overflow的問題,很有可能你們得出一樣的答案,但非正確
1.5 手動測試corner cases: 最大與最小可接受的value / size
2. 手動測試大input size,看所耗時間如何,這用來找出小input size能夠多大來跑得多次iteration
3. 小input size /小 input value
4. 小input size / 大 input value
5. 大input size / 大 input vale
在工作中好像不常使用stress test,主要是看什麼性質的application。非核心部分通常用不到吧!
沒有留言:
張貼留言