<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            測試用例的那一回事

            發(fā)表于:2016-08-01來(lái)源:推酷作者:IMWeb點(diǎn)擊數: 標簽:測試用例
            首先,我們需要知道:為什么需要測試用例?

            前言

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

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

            理由很簡(jiǎn)單,就是為了在測試用例的輔助下,編寫(xiě)出高質(zhì)量,可維護代碼。


            問(wèn)題

            正如因為地震的爆發(fā),才會(huì )有地震儀的誕生。 測試用例的誕生,也必然有其需要解決的問(wèn)題:

            當我們在開(kāi)發(fā),我們往往會(huì )有以下的問(wèn)題:

            需求和開(kāi)發(fā)脫節

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

            開(kāi)發(fā)和測試脫節

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

            那么如何解決上面的問(wèn)題呢?

            答案就是 選擇一種軟件敏捷開(kāi)發(fā)模式


            敏捷開(kāi)發(fā)模式

            目前比較流行的開(kāi)發(fā)模式有兩種: TDD 和 BDD

            TDD (Test Driven Development 測試驅動(dòng)開(kāi)發(fā))

            • 測試來(lái)驅動(dòng)開(kāi)發(fā)
            • 其重點(diǎn)偏向開(kāi)發(fā)
            • 測試用例是在約束開(kāi)發(fā)者,使開(kāi)發(fā)者的目標明確,設計出滿(mǎn)足需求的系統

            BDD (Behaviour Driven Development 行為驅動(dòng)開(kāi)發(fā))

            • 基于TDD發(fā)展,保持測試先行的理念
            • 其重點(diǎn)偏向設計
            • 在測試代碼中用一種自然通用語(yǔ)言的方式把系統的行為描述出來(lái)
            • 將系統的設計和測試用例結合起來(lái),進(jìn)而驅動(dòng)開(kāi)發(fā)工作

            兩種方式各有其特點(diǎn),我們通常選擇的是BDD的方式


            測試工具

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

            Mocha 摩卡

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

            Mocha測試腳本如何編寫(xiě)

            對于mocha, 一個(gè)測試用例必定包含 describe和 it,來(lái)實(shí)現一個(gè)測試用例的具體模版 describe塊 稱(chēng)為"測試套件"(test suite),表示一組相關(guān)的測試。 it塊 稱(chēng)為"測試用例"(test case),表示一個(gè)單獨的測試,是測試的最小單位

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

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

            Should JS 蘇德 斷言庫

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

            Nock 諾克 HTTP響應mock工具

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

            
             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數據拿到, 不能正確處理');
                        })
                    });
            
                });
            

            通過(guò)nock,直接模擬請求結果,這樣我們就可以不考慮cgi的狀態(tài),而專(zhuān)注于model的邏輯測試

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

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

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

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

            mochawesome

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

            補充

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

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

            ...
            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>