測試用例的那一回事

發表于:2016-08-01來源:推酷作者:IMWeb點擊數: 標簽:測試用例
首先,我們需要知道:為什么需要測試用例?

前言

最近,團隊對測試用例十分的注重,因此,下面是我對測試用例的一些解析。

首先,我們需要知道:為什么需要測試用例?

理由很簡單,就是為了在測試用例的輔助下,編寫出高質量,可維護代碼。


問題

正如因為地震的爆發,才會有地震儀的誕生。 測試用例的誕生,也必然有其需要解決的問題:

當我們在開發,我們往往會有以下的問題:

需求和開發脫節

當一份需求來了, 開發人員往往不能百分百的理解需求的內容(拋棄產品自己變更需求的可能性。。),這往往會讓開發人員開發出的功能會有跟需求有所差別,這會帶來額外的工作量

開發和測試脫節

什么是開發和測試脫節,說的是,當開發人員按照自己的想法開發完了一個需求。然后測試人員也按照自己的想法去測試這個需求,然后由于雙方的分歧,導致測試認為開發有bug,開發認為測試是sb.

那么如何解決上面的問題呢?

答案就是 選擇一種軟件敏捷開發模式


敏捷開發模式

目前比較流行的開發模式有兩種: TDD 和 BDD

TDD (Test Driven Development 測試驅動開發)

  • 測試來驅動開發
  • 其重點偏向開發
  • 測試用例是在約束開發者,使開發者的目標明確,設計出滿足需求的系統

BDD (Behaviour Driven Development 行為驅動開發)

  • 基于TDD發展,保持測試先行的理念
  • 其重點偏向設計
  • 在測試代碼中用一種自然通用語言的方式把系統的行為描述出來
  • 將系統的設計和測試用例結合起來,進而驅動開發工作

兩種方式各有其特點,我們通常選擇的是BDD的方式


測試工具

為了,方便我們編寫測試用例,我們需要使用一些可靠工具,以下是我認為比較好的前端測試用例工具。

Mocha 摩卡

Mocha(發音"摩卡")誕生于2011年,是現在最流行的JavaScript測試框架之一,在瀏覽器和Node環境都可以使用。 通過Mocha, 我們可以安裝基于mocha的規范,輕松的編寫測試用例和管理測試用例。

Mocha測試腳本如何編寫

對于mocha, 一個測試用例必定包含 describe和 it,來實現一個測試用例的具體模版 describe塊 稱為"測試套件"(test suite),表示一組相關的測試。 it塊 稱為"測試用例"(test case),表示一個單獨的測試,是測試的最小單位

以上的是同步情況的測試用例

若我們需要測試異步代碼時,只需要在每個it的回調中,增加done的參數,具體如下 

Should JS 蘇德 斷言庫

所有的測試用例(it塊)都應該含有斷言。 斷言功能由斷言庫來實現,Mocha本身不帶斷言庫,所以必須先引入斷言庫。 因此,我們在上面的測試用例添加斷言:如下 

Nock 諾克 HTTP響應mock工具

有時,我們可能需要模擬HTTP請求的響應數據 是否有工具可以簡化呢?那就是Nock啦, Nock使用起來十分方便,API都十分簡單名利


 var should = require('should');
 var nock = require('nock');
 var teacheModel = require('teacherModel');
 //定義模擬的http請求的響應結果
 var cgiData = {
        retcode:0,
        result: {
           num: 10,
        }
    };
    //測試方法updateTeacherData
    describe('測試Module.updateTeacherData()', function() {  
        it('請求接口,能夠正確處理數據', function() {
          //這里定義,get請求XXX.qq.com域名下的/cgi-bin/teacher/get_about的數據能返回200
          //并且返回結果是cgiData
            nock('http://xxx.qq.com')
                .get('/cgi-bin/teacher/get_about')
                .reply(200, cgiData);

            testModule.getData({}, req, function(data){
                data.retcode.should.equal(0, 'teacher數據拿到, 不能正確處理');
            })
        });

    });

通過nock,直接模擬請求結果,這樣我們就可以不考慮cgi的狀態,而專注于model的邏輯測試

Istanbul 伊斯坦布爾 代碼覆蓋率檢驗工具

測試用例寫好了, 怎么驗證是否寫得好? Istanbul是可以給出測試用例的代碼覆蓋率檢驗的工具

如下面我們使用istanbul,可以看到我們的util.test.js的覆蓋率情況 

然后,如果想知道具體覆蓋率情況,可以通過打開生成的報文去查看,如下面可以知道,哪些部分測試用例沒有覆蓋到 

mochawesome

萬事俱備?NO NO NO! 我們還需要更好的視覺體驗 通過使用mochawesome工具,在當命令行運行 mocha 是增加 “ --reporter mochawesome ”參數,將測試用例運行情況轉成更為直觀的測試報文,如下:

補充

懂得如何編寫測試用例,但仍需要有一套比較明確的編寫規范和,編寫教程,才能讓項目的測試用例生生不息,持之以恒帶來功效、

原文轉自:http://imweb.io/topic/579ddf3e93d9938132cc8d87

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97