單元測試正夯,但你知道其實還有更多選擇嗎?
與其期待你的顧客會替產品除錯,不如用自動化測試提升產品良率
「想像一下現在你的面前有兩台飛機,
在前面幾篇文章中,小編已經跟各位介紹過兩大開發管理心法-
延伸閱讀:透過Kan-ban(看板)管理方法,視覺化並改善你的工作流程
測試的本質在於預防,防範於未然,僅管在百密一疏的程式,
所以在測試中,會需要最重要的三個環節如下:
(雖然本篇標題為更多”選擇“,但並不是代表選項彼此間會衝突,更多的時候是各自互補。)
單元測試Unit Test:
以程式中最小的邏輯單元為對象,撰寫測試程式,
用飛機零件來解釋的話,就是最細小的螺絲都經過了完整的溫度、
延伸閱讀:[C#][Unit Test] 01. 軟體上線就等於今晚不用回家? 學"單元測試"可能有辦法挽救您的婚姻。
功能測試function Test:
針對程式結合UI組合而成的功能進行測試,
這一段也是傳統上測試單位所做的事情,通常也是 客戶 / PM 研判功能是否正常的方法。但因為現在測試方式與理論越來越進步,所以就算是這層面上的測試往往也借助程式。(例如工廠用自動程式開關機1000次)
整合測試Internal Test:
通常提到整合測試就會結合了劇情,
但因為這部分包含的比較大,所以很難監測到很細節的問題。例如Mac / iPhone 內建瀏覽器Safari以前有發生過使用SSL連網路並沒有真正的驗證。這如果跑整合測試很容易就被忽略到,因為很大的可能性測試結果是只看上面的小鎖頭來判斷是否有加密,並沒有真正用程式去看收到與傳出的是加密後的內容。
延伸閱讀:HTTPS
現存歷史新聞:http://tech.sina.com.cn/mobile/n/2014-02-26/07509192679.shtml
避免連結失效,以下截圖重點。
重點節錄:(原文為簡體故保留之)
很多人比较关心的问题是,为什么这样一个安全漏洞存在时间如此之久到现在才发现,以及这种漏洞为什么会存在的、。来自Cryptocat应用的 Nadim Kobeissi指出苹果系统中存在的低效if-then语句,以及重复的“goto fail”行。这些较为草率的代码可更为轻易地导致错误发生。哥大的Bellovin指出,代码覆盖测试一般应该可以抓出这些重复的行,为什么苹果却没能发现这些问题呢?
那自動化測試是什麼?
自動化測試是把以人為驅動的測試行為,
接口測試:
如果說單元測試的自動化測試目的為確認邏輯,例如一個 if或一個 for 循環的邏輯是否正常;那接口測試的目的,
在測試的同時API的文件也同時完成了
UI測試:
例如針對表單的填寫和提送去作自動化的測試,
所以簡言之,自動化測式的目的,就是把每天枯燥乏味的測試動作,
1. 先從無到有,其他別談
一開始目標是先設定為有測試自動化的制度, 所以先試著要求對每個單元、接口、功能,甚至劇情, 模擬出少數的測試個案, 當然在時間的壓力下,也可以只對核心功能, 撰寫較多的自動化,先求有在求好。
2. 天天執行,立即修復
自動化測試的目的,就是為了減少每天人工處理的成本,
3. 加速執行時間
執行的時間相當重要,每一次的測試都是在跟時間賽跑, 因此除了可以在最短時間處理完成外,
所以從此我們可以知道, 自動化測試的重點,在於如何「自動化執行測試」,並且釐清要「
但記得,人工整合測試及測試劇情仍是絕對必須的,
萬事起頭難,工作就是一種和時間上的競賽,相信大家一定有經驗,
最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!