測試優先!
所謂測試優先,就是要先把測試準備好,以便在功能做了後馬上可以測試。
提出測試優先,也很好地說明了測試的重要性,這是無數工程師嘔心的體驗得出的結論,不測試,或不能很好地進行測試,往往會付出慘重的代價。
當不好進行測試時
(1) 完成一次測試過於痛苦,極大降低工作效率;
(2) 很可能選擇不進行全面測試,在壓力之下先上線,後患無窮。
不正確的測試姿勢
(1)把簡單的使用當作全部的測試
把測試認為是簡單的使用一下是不正確的。
要正確認識測試的重要性,以開發同等重要的方式將測試作為工作內容,同時對測試分級別、場景、角色分別予以開展。
(2)沒有測試計劃
對測試沒有進行系統化的分析,以碰運氣的方式零星地進行。事實上,測試是需要工程化、系統化進行分析與設定的,它也應該有清晰的目標與範圍。為了能全面覆蓋方方面面,需要嚴謹地制定測試計劃。即便簡單點,至少需要列個涉及關鍵步驟的清單來進行,根據清單來能避免遺漏,呵呵。
(3)沒有測試記錄
測試發現的問題有多種,解決的方式也有多種選擇,對測試不僅要記錄測試的結果,同時要記錄問題可能存在的隱性特性及處理辦法,並要形成問題處理清單做為再次驗證的基礎。
測試優先小小踐行
無論的大方面的系統,還是小方面的功能,都可以踐行測試先行!
舉個小例,假如有以下程式碼,我們需要在 // 處新增功能部分 。
$.ajax({
type: "POST",
url: "xxxx/yyyy",
data: { act: "fetch" },
success: function (resp) {
var jo = eval("(" + resp + ")");
var r0 = jo.calvalue;
// 新增功能部分,根據取得的值完成某些渲染
},
error: function (h) {
alert(h.statusText);
}
});
因為它的執行路徑依賴於 url 的請求,所以對新增部分的測試很不方便。此時,如何能方便地測試就是重要的事情了。在做這件事之前,先應該規劃好如何測試這部分程式碼確保它是可執行的。
看得出,當我們以此為重去做的時候,很可能會把這一部分獨立成一個方法,以便於獨立地進行測試。於是對程式碼的組織就提出了要求,事實上它倒逼著我們更好的組織自己的程式碼。如此即方便測試,結構又更優雅。
可能會形成這樣的方法:
function processCalvalue(calvalue) {
// 具體處理程式碼;
}
上述 success 中則變成了簡單的一句,功能在上邊的方法中完成。
success: function (resp) {
var jo = eval("(" + resp + ")");
var r0 = jo.calvalue;
// 新增功能部分,根據取得的值完成某些渲染
processCalvalue(r0);
},
在本地進行測試的程式碼就可能是:
$(function () {
// 測試執行
processCalvalue(123456);
})
良好的測試準備與習慣會為您節省非常多的時間,並讓自己更有把握。共勉!