測試抓臭蟲

更新於 發佈於 閱讀時間約 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的更新,反倒成了令人聞之色變的災難了。
為什麼會看到廣告
avatar-img
15會員
131內容數
寫點東西自娛娛人
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
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
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
以數位驅動專業決策的安布思沛,不僅是Meta長期合作的夥伴,更是Meta展開新專案測試計畫的關鍵夥伴之一,安布思沛總監黃晨皙表示,參與Meta廣告產品新專案測試計畫,不僅讓安布思沛得以將第一手資源帶給客戶,也率先在新專案的執行過程中累積成功經驗,持續為客戶優化行銷表現。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
我不知道,有多少人從自身的問題中,看到全人類的問題。 就是因為我以整體的角度出發,所以我個人的煩惱也是全體的煩惱。 因為系統的任何一個零件有故障,整個系統都存在崩潰的風險,因為環環相扣就是系統的定義。
Thumbnail
反省就是重寫自己的演算法吧? 假設我就是人工智慧,或心智的可以被看作爲人工智慧的編輯器,那我的程式碼是什麼樣的? 從懵懂無知到一無所知,從自以為是到自我消逝,心智只是執行它的內容,我也需要不斷優化。 最好的優化就是簡化。 最能創造財富的演算法就是關於如何除錯與減少任何風險。
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
【台北防水推薦】科技抓漏 – 非破壞科技測漏的優勢 非破壞科技測漏是什麼? 非破壞科技測漏是一種先進的漏水檢測技術,它利用高科技儀器來檢測和定位管道或建築物中的漏水點,而不需要進行破壞性的施工。這種技術在台灣已經逐漸普及,成為處理漏水問題的首選方法。非破壞科技測漏包括使用各種先進的儀器,如管
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
偉喬生醫憑藉其核心技術,突破抗小分子抗體 開發之高技術門檻,成功開發高專一性之專利抗小分子抗體 ,並藉由此專利抗體從原料開發到衍生應用產品-親蛋白腎毒素檢測試劑,全程自主研發及生產。
Thumbnail
可提供 0°C ~ -80°C 連續產生 空氣/氮氣 超低溫氣體。 低溫產生機 -80°C超低溫產生機,半導體測試 冷卻的絕佳方案 產品目前測試 IC 低溫測試良率或是加快中空成型機的製程,並提升生產效率,亦可運用於加工冷卻製程的範疇,我們的低溫產生機擁有四個保護機制,分別為高低壓保護、逆
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
以數位驅動專業決策的安布思沛,不僅是Meta長期合作的夥伴,更是Meta展開新專案測試計畫的關鍵夥伴之一,安布思沛總監黃晨皙表示,參與Meta廣告產品新專案測試計畫,不僅讓安布思沛得以將第一手資源帶給客戶,也率先在新專案的執行過程中累積成功經驗,持續為客戶優化行銷表現。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
我不知道,有多少人從自身的問題中,看到全人類的問題。 就是因為我以整體的角度出發,所以我個人的煩惱也是全體的煩惱。 因為系統的任何一個零件有故障,整個系統都存在崩潰的風險,因為環環相扣就是系統的定義。
Thumbnail
反省就是重寫自己的演算法吧? 假設我就是人工智慧,或心智的可以被看作爲人工智慧的編輯器,那我的程式碼是什麼樣的? 從懵懂無知到一無所知,從自以為是到自我消逝,心智只是執行它的內容,我也需要不斷優化。 最好的優化就是簡化。 最能創造財富的演算法就是關於如何除錯與減少任何風險。
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
【台北防水推薦】科技抓漏 – 非破壞科技測漏的優勢 非破壞科技測漏是什麼? 非破壞科技測漏是一種先進的漏水檢測技術,它利用高科技儀器來檢測和定位管道或建築物中的漏水點,而不需要進行破壞性的施工。這種技術在台灣已經逐漸普及,成為處理漏水問題的首選方法。非破壞科技測漏包括使用各種先進的儀器,如管
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
偉喬生醫憑藉其核心技術,突破抗小分子抗體 開發之高技術門檻,成功開發高專一性之專利抗小分子抗體 ,並藉由此專利抗體從原料開發到衍生應用產品-親蛋白腎毒素檢測試劑,全程自主研發及生產。
Thumbnail
可提供 0°C ~ -80°C 連續產生 空氣/氮氣 超低溫氣體。 低溫產生機 -80°C超低溫產生機,半導體測試 冷卻的絕佳方案 產品目前測試 IC 低溫測試良率或是加快中空成型機的製程,並提升生產效率,亦可運用於加工冷卻製程的範疇,我們的低溫產生機擁有四個保護機制,分別為高低壓保護、逆