測試是浪費時間,我的程式肯定沒問題
儘管關於測試驅動開發(TDD)的書和文章有成百上千之多,仍然有很多人從未感受過測試的強大力量。
之所以不願意去寫測試程式不外乎有以下幾個理由:
1:太費時間。 2:不值得。 3:我很懶。 4:我不知道如何做。 5:我知道我的程式好用,我執行過一次,沒出問題。 6:我是超人,我從來不犯錯誤。 除非你的答案是6.(如果是這樣,我很羨慕你),否則,你應該繼續讀下去。
讓我們從一個簡單的例子開始。就說你要寫一個Email地址校驗程式。
你也許會使用正規表示式,或手工實現每個字元的對比,來完成這個任務。
現在你想驗證一下你的程式碼是否有效。你會怎麼做?你可以手工輸入不同的值來驗證它是否符合你的要求,結果你就測試了像下面的這些東西:
如果你要改變/調整校驗演算法會發生什麼?你需要把之前所有的過程全部重複一遍,把每個值都再輸入一遍,看看校驗的結果。如果讓計算機自動的幫你校驗這些是不是會更好些呢?
通過把測試過程自動化,你可以在任何時候對程式進行任何遍次的測試。這不僅僅在以後會節省你大量的時間,而且會增加你的自信心,因為每次當你感覺到程式可能出錯時,只要執行一下你的測試程式,看看測試結果就行了。
現在設想一下你正在編寫一個更加複雜的程式,比如XML解析器。
你不可能編寫出解析器後不去測試它,問題是,你如何測試它?通常,你會建立一個XML樣板檔案,把它輸入解析器裡,手工檢查解析的結果。當你看到解析器按照要求輸出了你期望的結果後,你確信你完成了任務,解析器沒問題。
問題就在於如果你發現了一個Bug。那你就需要去修改你的程式碼,再驗證一次它是否好用。可是我們程式設計師都是一群懶人,我們會只測試我們遇到的這個Bug,幾乎從來不會去測試解析器的其它部分。這會產生什麼問題呢?你能確保沒有把什麼東西改壞?
當你寫了單元測試程式後,這個工作流程會變的怎樣?
首先,你已經對程式進行過測試,之前你必須對每個函式進行手工的測試,手工的檢查輸出結果。如果這種事情你只需要做一次,那也沒什麼了,但當有東西出錯時,你不想一遍一遍的重複做這個事情,沒有人喜歡來回重複的做相同的事情,特別是無聊的事情。
另一種情況,你為你的解析器裡的每個功能都寫了自動測試程式。在這個例子中,你已經測試過你的程式,對這個過程你並不陌生。你需要做的是把手工的檢查改為assertions,它們會為你自動測試程式。
當Bug出現時,巨大的變化發生了。
如果沒有自動化測試,你必須手工的檢查所有的東西來確保你在修正一個Bug時不會引入其它的錯誤。當有數個Bug出現時,你會變得極不耐煩,你開始不再檢查其它部分的程式碼,只關注你的這個Bug。但假如你為程式寫好了自動化測試,你唯一要做的就是點選一次按鈕,讓所有的測試程式執行起來,你馬上就能看到測試結果,幾乎不需要在其它任何事情。
當有了測試程式後,修改Bug是怎樣進行的?
首先,你需要重現這個Bug。無論如何,在你修改前,你必須要認定這個Bug是否真實的存在。如何做到這些?你要寫出一個測試用例來重現這個bug,這個必須要在你做任何的修改這個bug的工作之前完成。
如果這個bug不能重現,問題就可能出自其它地方,如果不能用自動化測試來重現這個bug,你可能在錯誤的地方修改了這個bug,很可能改壞了你的程式。當你寫出測試程式,你必須先執行它確保它會失敗。如果測試沒有失敗,什麼地方可能出了問題,你沒能正確的重現它。
當你修改了這個Bug,你也有了針對它的測試程式,你可以立即發現這個bug是否還會出現。
當你這時又發現另外一個bug時該怎麼做?
相同的做法。寫一個測試程式,重現這個bug。即使你沒有時間來立即修正這個bug或者這不是個致命的bug,你也應該有個能夠讓它重現的測試程式,當日後你回來解決這個問題時,你就能知道該做什麼了。
本文轉自:碼農網 文章連結:http://www.codeceo.com/article/test-is-waste-time.html
相關文章
- 有了測試團隊,再寫單元測試,是否是浪費開發時間呢?
- “浪費時間”有時候也沒錯,比如在《小森生活》裡
- 遊戲學 | 玩電子遊戲是浪費時間?遊戲
- 關於 App 啟動時間測試的問題APP
- 鋪天蓋地的炒作下,我依然覺得深度強化學習是浪費時間強化學習
- 研發團隊開晨會真的是浪費時間嗎?
- 浪費我時間的 7 個 JavaScript 錯誤(以及如何糾正它們)JavaScript
- Swift 之父正式退出 Swift 核心團隊:這只是在浪費我的時間Swift
- 請問有沒有可以測試微信小程式 / 支付寶小程式的頁面渲染時間的工具?微信小程式
- 如何利用工時表軟體管理員工時間 避免時間浪費
- 這個韓國很冷門的題材,CBT測試時獲得了95%玩家的肯定
- 深圳軟體測試學習:寫不好測試用例是因為沒時間嗎?【千鋒】
- 如果你做的事情毫不費力,那就是在浪費時間
- 為什麼“敏捷”會浪費這麼多時間? - Reddit敏捷
- 好慌,我程式碼沒了!不會是變基變出問題了吧?
- 我使用jest測試專案中常見的問題
- Scrum不是一顆銀彈,有時可能會浪費大量時間 - RemoHJansenScrumREM
- 研究顯示安全分析師 25% 的時間浪費在誤報上
- 時間線測試
- 測試CMS同步問題測試CMS同步問題
- 拜託,面試別再問我時間複雜度了!!面試時間複雜度
- 如果我是推薦演算法面試官,我會問哪些問題?演算法面試
- 測試問題思考,有些問題我自己有答案,但是我想聽聽大家的見解,謝謝!
- 我們測試了上萬款應用程式,總結了APP測試流程和常見問題APP
- keycloak~時間不正確的問題
- 測試的薪資問題
- 測試MySQL鎖的問題MySql
- 【畢業寄語】阻礙我們進步的真的是加班和沒時間嗎
- 剛做測試工作一年的時候,我是怎樣的?
- 面試官問我HTTP,我真的是面試HTTP
- Laravel MongoDB 時間區間查詢的問題LaravelMongoDB
- 關於時間 PHP 處理包遇到的問題時間序列化差值問題PHP
- 關於效能測試時線上介面訪問比例的整理的問題
- 記一次專案測試間隔太長的問題
- JSBridge通訊時間測試JS
- 測試面試問題(二)面試
- 關於問問題和時間管理的感悟
- NSDate 時間比較中的時區問題.
- 面試的反殺-你有沒有想要問我的面試