功能開發的測試姿勢

三人行工作室發表於2019-07-23

測試優先!

所謂測試優先,就是要先把測試準備好,以便在功能做了後馬上可以測試

提出測試優先,也很好地說明了測試的重要性,這是無數工程師嘔心的體驗得出的結論,不測試,或不能很好地進行測試,往往會付出慘重的代價。

當不好進行測試時

(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);    
})

良好的測試準備與習慣會為您節省非常多的時間,並讓自己更有把握。共勉!

相關文章