測試抓臭蟲

閱讀時間約 3 分鐘
Game of Life的「核心計算」部分寫好了,短短的沒幾行,畢竟也就那麼幾條判斷規則而已,沒什麼太複雜的東東要處理。說是寫好了,但到底能不能跑、跑出來的結果對不對,那可還是在未定之天哩。
測試程式寫得對不對,是件很讓人頭大的事。第一步,也是最簡單的一步,當然是檢查語法有沒有寫錯。語法的正確性,依照使用的程式語言,可以由compiler或interpreter來檢查,以Python來說,就是使用interpreter。通過了這一關也別高興得太早,真正麻煩的是後續的部分,因為機器可是沒辦法告訴你,因為手殘,你把a = b + c,寫成了a = b – c;或者是,沒注意到a是浮點數,結果寫出a == 0這樣的判斷式。還有啊,Python的變數是不用宣告的,所以萬一把變數名稱打錯了,例如把center_x = int(width/2),打成centre_x = int(width/2),那interpreter也不會認為那是個錯誤。這種不是語法錯誤的問題,就只能靠人來處理了。debug功力的重要性,可是不亞於程式寫作的功力的。
那現在這個「核心計算」部分的程式要怎麼測試呢?先用個簡單的例子跑跑看結果正不正確好了。「柏拉圖的天空」這本書裡頭有個例子,剛好可以拿來用,跑出來的結果如果跟書上的結果一樣,就算初步過關。
測試用的例子有了,再來是,該怎麼呈現結果呢?畢竟只寫到「核心計算」部分,「視覺呈現」部分還沒動工。要看結果,最簡單的做法,就是把universe這個list給print出來,不過可得忍受畫面上一堆0、1和逗號。這倒無妨,先確定程式的正確性再說。
現在像Spyder這種IDE都有很好用的debug工具可以用,所以重點就在於,要怎麼找出有問題的地方然後修正。想找出有問題的地方,說難不難,可有時候又非常難。如果是像Game of Life這樣的程式,因為很單純,只要是相同的初始universe,就一定會有完全相同的執行過程和結果,所以錯誤的再現性很容易控制,找到問題點只是時間的問題。但如果是像牽涉到網路的程式,錯誤的再現性很難控制,那要找出問題點,可就沒那麼容易了。
修正幾個小問題後,總算,「核心計算」部分初步過關。唉!就只是初步過關而已啊,誰知道跑其他例子時,會不會又有問題。測試最困難的地方,就在於通常是沒有辦法把所有可能的狀況都試一遍。所以囉,也就只能盡量先把各種狀況考慮進去,保證至少在這些狀況下,程式是沒問題的。那以後又發現問題怎麼辦?就更新、修正咩!現在大家不是常常在那邊更新PC或手機的軟體嗎?就這麼回事。
說到測試,就不免想起微軟。以前微軟的Windows有新版要上市時,那可是轟動武林、驚動萬教的大事,就跟現在新iphone要問世一樣,很多人都引頸企盼。微軟很厲害,當Windows正式版本要出來之前,就會先出個「搶鮮版」,然後很多人就會搶著去買來嚐鮮。嚐鮮的結果就是一堆問題,然後微軟就趕快修正。等最後正式版本出來時,這些問題都處理掉了。多聰明的微軟啊!這些嚐鮮族不僅幫忙測試,還心甘情願付錢給微軟,這行銷手法實在是太高明了!
雖然微軟的行銷手法很厲害,不過再厲害、再高明的行銷手法,如果沒有相對應的產品品質,終究還是會被消費者給看破手腳的。現在的Windows,當有新版要推出,或者有新的更新時,雖然還是有許多人想要嚐鮮用看看,不過更多的人卻是避之唯恐不及,深怕更新之後不僅沒改善問題,反而帶來更多問題。有那麼好長一段時間,微軟強迫大家一定要馬上更新,沒得選擇,可是更新的結果,卻往往是哀鴻遍野、問題百出。搞到最後,各種躲避更新的手法紛紛出籠,Windows的更新,反倒成了令人聞之色變的災難了。
為什麼會看到廣告
15會員
128內容數
寫點東西自娛娛人
留言0
查看全部
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
在學習新事物的時候,如果能善用類比、聯想等小技巧,往往能事半功倍,但也是有可能會碰壁的。
適當的休息可以把陷進泥淖而不自知的心思給拉出來,從不同的角度和觀點來看問題,這樣說不定會發現另外不同的解決問題的方法。
寫程式時經常會有卡關的現象,這時候不要一味蠻幹,轉換一下看問題的角度,說不定就能過關。
在Python中,所有東西都是物件。執行程式碼a = 5,會建立5這個物件,然後給a一個reference,這個reference就是告訴a,它的值放在記憶體的哪個位置,要用時,就到那裡去拿。 看到這裡,很直覺的反應是:這不就是C裡頭的pointer嗎?!然後就沒再多想了。
comprehension應該可說是Python的絕學之一吧。不過既然是絕學,總是會有讓人容易在運氣時一個不小心走錯經脈的地方。現在我需要一個二維的list,利用comprehension來造一個,應該是再好不過的選擇。只是這地方,就是個容易出錯的地方。
蝦蜜?!Python沒有內建array?!剛發現這件事時,還真的有點傻眼,怎麼會沒有array這麼好用的data type呢?
在學習新事物的時候,如果能善用類比、聯想等小技巧,往往能事半功倍,但也是有可能會碰壁的。
適當的休息可以把陷進泥淖而不自知的心思給拉出來,從不同的角度和觀點來看問題,這樣說不定會發現另外不同的解決問題的方法。
寫程式時經常會有卡關的現象,這時候不要一味蠻幹,轉換一下看問題的角度,說不定就能過關。
在Python中,所有東西都是物件。執行程式碼a = 5,會建立5這個物件,然後給a一個reference,這個reference就是告訴a,它的值放在記憶體的哪個位置,要用時,就到那裡去拿。 看到這裡,很直覺的反應是:這不就是C裡頭的pointer嗎?!然後就沒再多想了。
comprehension應該可說是Python的絕學之一吧。不過既然是絕學,總是會有讓人容易在運氣時一個不小心走錯經脈的地方。現在我需要一個二維的list,利用comprehension來造一個,應該是再好不過的選擇。只是這地方,就是個容易出錯的地方。
蝦蜜?!Python沒有內建array?!剛發現這件事時,還真的有點傻眼,怎麼會沒有array這麼好用的data type呢?
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
【台北防水推薦】科技抓漏 – 非破壞科技測漏的優勢 非破壞科技測漏是什麼? 非破壞科技測漏是一種先進的漏水檢測技術,它利用高科技儀器來檢測和定位管道或建築物中的漏水點,而不需要進行破壞性的施工。這種技術在台灣已經逐漸普及,成為處理漏水問題的首選方法。非破壞科技測漏包括使用各種先進的儀器,如管
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
偉喬生醫憑藉其核心技術,突破抗小分子抗體 開發之高技術門檻,成功開發高專一性之專利抗小分子抗體 ,並藉由此專利抗體從原料開發到衍生應用產品-親蛋白腎毒素檢測試劑,全程自主研發及生產。
Thumbnail
可提供 0°C ~ -80°C 連續產生 空氣/氮氣 超低溫氣體。 低溫產生機 -80°C超低溫產生機,半導體測試 冷卻的絕佳方案 產品目前測試 IC 低溫測試良率或是加快中空成型機的製程,並提升生產效率,亦可運用於加工冷卻製程的範疇,我們的低溫產生機擁有四個保護機制,分別為高低壓保護、逆
When Jeffrey doesn't feel like cooking, he often orders pizza online and has it delivered to his house. 翻譯:當傑弗裡不想做飯時,他通常會在線上訂購比薩並將其送到他的房子。 Jane i
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
【台北防水推薦】科技抓漏 – 非破壞科技測漏的優勢 非破壞科技測漏是什麼? 非破壞科技測漏是一種先進的漏水檢測技術,它利用高科技儀器來檢測和定位管道或建築物中的漏水點,而不需要進行破壞性的施工。這種技術在台灣已經逐漸普及,成為處理漏水問題的首選方法。非破壞科技測漏包括使用各種先進的儀器,如管
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
偉喬生醫憑藉其核心技術,突破抗小分子抗體 開發之高技術門檻,成功開發高專一性之專利抗小分子抗體 ,並藉由此專利抗體從原料開發到衍生應用產品-親蛋白腎毒素檢測試劑,全程自主研發及生產。
Thumbnail
可提供 0°C ~ -80°C 連續產生 空氣/氮氣 超低溫氣體。 低溫產生機 -80°C超低溫產生機,半導體測試 冷卻的絕佳方案 產品目前測試 IC 低溫測試良率或是加快中空成型機的製程,並提升生產效率,亦可運用於加工冷卻製程的範疇,我們的低溫產生機擁有四個保護機制,分別為高低壓保護、逆
When Jeffrey doesn't feel like cooking, he often orders pizza online and has it delivered to his house. 翻譯:當傑弗裡不想做飯時,他通常會在線上訂購比薩並將其送到他的房子。 Jane i