IntelliTest(3) - Test to Code Binding, Test Case Management[譯]

[作者提醒:從Visual Studio 2015 RC 版本開始,“Smart Unit Tests”已經(jīng)更名為“IntelliTest”]


??在這篇文章中,我們講到IntelliTest如何自動(dòng)生成測(cè)試用例,以及當(dāng)被測(cè)代碼改變時(shí),如何更新這些用例。針對(duì)一段被測(cè)代碼,IntelliTest會(huì)生成一個(gè)PUT方法,和一個(gè)或多個(gè)測(cè)試用例方法。在下面的示例圖中,展示了以Pex開頭的特性的使用,它用于定義用例和被測(cè)代碼的約束關(guān)系,這些特性都定義在Microsoft.Pex.Framework命名空間下。

image.png

在編譯時(shí),這些特性將作為它們所作用的類或方法的元數(shù)據(jù),嵌入到程序集中。在后續(xù)的調(diào)用中,IntelliTest通過(guò)反射,拿到元數(shù)據(jù),并拿到定義在PUT上的契約。

??也許你已經(jīng)發(fā)現(xiàn)了,自動(dòng)生成的測(cè)試用例都是傳統(tǒng)單元測(cè)試,它們也會(huì)顯示在Visual Studio 的測(cè)試用例瀏覽窗口中,就像你手寫的那些測(cè)試用例一樣。不過(guò),自動(dòng)生成的測(cè)試用例并不希望被編輯。每一個(gè)自動(dòng)生成的測(cè)試用例都會(huì)調(diào)用PUT方法,PUT方法又會(huì)調(diào)用被測(cè)代碼。

??將自動(dòng)生成的單元測(cè)試和PUT測(cè)試方法分開,使得PUT測(cè)試方法可以作為一個(gè)統(tǒng)一的可以驗(yàn)證被測(cè)代碼正確性的地方,通過(guò)PUT測(cè)試方法的調(diào)用,所有測(cè)試用例都將被驗(yàn)證。在以后的博客中,我們會(huì)討論正確性驗(yàn)證的方法,但這不是本篇博客討論的重點(diǎn)。將自動(dòng)生成的測(cè)試用例和PUT測(cè)試方法放在同一個(gè)程序集中也是非常重要。

??關(guān)于自動(dòng)生成的測(cè)試用例的管理,可遵循如下規(guī)則:

  • 防止重復(fù)的用例。使用IntelliTest的過(guò)程中,測(cè)試引擎會(huì)經(jīng)常性的探測(cè)被測(cè)代碼,并生成測(cè)試用例,因此很可能會(huì)生成一些重復(fù)的用例,這些重復(fù)的用例都需要被移除掉。
  • 刪除那些無(wú)關(guān)緊要的測(cè)試用例。隨著被測(cè)代碼的修改,之前的測(cè)試用例很可能變得無(wú)效,因此這部分測(cè)試用例需要被移除掉。

??那么如何實(shí)踐以上規(guī)則呢?
??將自動(dòng)生成的測(cè)試用例和PUT測(cè)試方法放在一個(gè)程序集中,測(cè)試引擎通過(guò)掃描程序集中的Pex特性,優(yōu)先處理已經(jīng)存在的測(cè)試用例(這些測(cè)試用例都被PexGeneratedBy修飾),它獲取到這些用例的源碼,然后移除其中的空白占位符,然后使用最終的字符串計(jì)算hash值。做完這些之后,測(cè)試引擎就有了一個(gè)測(cè)試用例集合對(duì)應(yīng)的hash字典,有了這個(gè)字典,在新的一次探測(cè)過(guò)程中,就可以決定哪些測(cè)試用例已存在,而哪些是新添加的。對(duì)于那些沒有在新的探索中生成的用例,引擎會(huì)主動(dòng)刪除之。

??讓測(cè)試用例和隨時(shí)有變更可能的代碼保持同步是一件很困難的事情,主動(dòng)去修改大量測(cè)試用例以適配新的被測(cè)代碼,開銷無(wú)疑是巨大的。我們希望這套自動(dòng)管理的測(cè)試用例的機(jī)制可以在面對(duì)這種變更時(shí),可以更加輕松的應(yīng)對(duì)。

強(qiáng)烈建議閱讀英文原文



2017-10-20 10:43:52

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • 文章來(lái)自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,346評(píng)論 2 126
  • 1.測(cè)試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,858評(píng)論 5 101
  • 1.測(cè)試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 22,386評(píng)論 7 278
  • 今天上午在竹園賓館與中國(guó)十大名廚,中國(guó)烹飪大師相聚會(huì)一一一
    廖其定閱讀 360評(píng)論 0 0

友情鏈接更多精彩內(nèi)容