日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IntelliTest实战直通车(上集)

發布時間:2024/9/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IntelliTest实战直通车(上集) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

IntelliTest前世今生

??IntelliTest的前身是微軟研究院的白盒測試框架Pex,當時的Pex并未集成到Visual Studio中,開發者需要單獨下載和配置,在下載時會附帶一個叫Moles的隔離框架(它更早些的名字叫Stubs)。隨著Visual Studio 2015 RC 版本的發布,Pex集成到Visual Studio中,成了IntelliTest,而Moles也升級成了Microsoft Fakes。

傳統單元測試

??回憶一下,寫單元測試之前,我們的開發流程一般是怎樣一個過程。
“我們很忙,一直忙著開發開發,眼看就要到deadline了,加緊繼續開發開發。在這種情況下的產品質量可想而知,于是耐心的測試給我們報bug,善良的用戶給我們提意見,沒辦法,要吃飯啊,我們又去改代碼,然而代碼并不是你想改,想改就能改的啊,為了少改出問題,往往要delay-delay-再delay。于是就陷入了一個我們寫的代碼越多,問題越多,delay也越嚴重的怪圈”

終于,在delay了28次后,我們爆發了,我們要它,對,就是它,單元測試!我們要寫單元測試!

于是乎,我們的開發流程變成了類似下面這個樣子:

多美好啊,開發效率高,交互質量也高,大家有飯吃,大家都開心(測試:“我XXX”)。

“咳咳!干啥呢!干啥呢!意淫個毛線啊,這個版本發了嗎!看看覆蓋率才多少!”

好吧,回到現實。

??我們確實有開始寫單元測試,也有做一些努力,但遠遠不夠。我們針對相對穩定的公共組件,做了30%-50%的覆蓋率,但是對上層相對復雜的業務邏輯幾乎為0。而容易出問題,需要經常變更的,也恰恰是這些上層業務邏輯。這些業務代碼可能經常變更,用例也需要隨之變更,維護成本相對更高(雖然寫了單元測試會降低維護成本,但這恰恰是多數開發者很難跨越的坎兒)。

IntelliTest

IntelliTest可以做什么?

IntelliTest通過探測你的.NET代碼,自動生成一組高覆蓋率的測試用例。雖然開發人員還是需要手動編寫單元測試,但是IntelliTest可以確保對代碼進行了充分的測試。

中文都能看懂,操作呢?

??再回憶一下,我們是不是經常遇到這樣的情況:為了覆蓋不同的分支語句,我們需要寫多個用例,然而這些用例中很多代碼都是一樣,每次都要做相同的arrange,相同的action,甚至相同的assert。對的,你可能會說,“NUnit已經提供了解決這個問題的方法啊,而且超級簡單”,確實,在NUnit中,我們可以這樣寫用例:

[TestCase(12, 3, 4)] [TestCase(12, 2, 6)] [TestCase(12, 4, 3)] public void DivideTest(int n, int d, int q) {Assert.AreEqual(q, n / d); }

但是MSTest沒有這么簡單的方法啊,MSTest有的只是DataSource,而這又跟IntelliTest有什么關系呢?還真有那么點兒關系,MSTest雖然沒有提供多參數的用例支持,但是隨著IntelliTest的推出,提供了Parameterized Unit Tests[PUT](參數化單元測試),通過PUT,IntelliTest會自動為我們生成不同輸入參數的用例,而且保證每個用例都是有意義的。

??除此之外,IntelliTest能夠在你修改了業務代碼的情況下快速生成新的測試用例,大大減輕了測試用例的維護。同時這些測試用例都可以保存下來,供后續回歸測試使用。

一個具體的栗子

有如下代碼:

/// <summary> /// 判斷一個文件是否包含指定后綴 /// </summary> /// <param name="fileName"></param> /// <param name="suffix"></param> /// <returns></returns> public static bool IsSuffix(string fileName, string suffix) {var fileNameLower = fileName.ToLower();if (fileNameLower.EndsWith(suffix))return true;return false; }

我們右擊它選擇運行IntelliTest,接下來會彈出一個IntelliTest結果窗口,它是長下面這個樣子滴:

解釋一下各個名詞的意思:

  • 塊(blocks):已覆蓋Block數/IntelliTest探測到的總Block數(Block是啥?)
  • 斷言(asserts):PUT中運行過的斷言數/PUT中定義的所有斷言數
  • 運行(runs):探測期間,IntelliTest嘗試運行的次數

在運行結果窗口中我們看到,IntelliTest為我們生成了9個用例,其中4個通過,5個失敗,并且給出了失敗原因。點擊每一條用例,在右側會有此用例更加詳細的信息(包括詳細的參數和調用堆棧),便于我們跟蹤分析錯誤原因。

??全選后保存,IntelliTest自動添加一個測試工程并將用例放到PUT文件下面的g.cs文件中,后續可以繼續利用這些用例做測試。實際上,微軟并不希望我們編輯g.cs文件,在每次運行IntelliTest時,它會更新g.cs文件至最新。

??多次提到PUT,有必要鄭重介紹一下它了。所謂的“參數化單元測試”,指的是可以定義多組參數的單元測試方法。(哇,好鄭重啊!),是的,就是這么簡單直白。通過查看IntelliTest生成的文件很容易發現,在g.cs中的每一個用例最終都是通過調用PUT來實現測試的,這就是IntelliTest的參數化。在 傳統單元測試 部分提到的NUnit的多參數測試就是NUnit的參數化單元測試,但是IntelliTest為我們實現了自動化。

??然而,現實總是比想象復雜,我們的業務代碼也遠比栗子難嚼。在開發中使用IntelliTest會遇到的問題遠比栗子中多,比如本篇未提到的IntelliTest結果窗口中的異常。IntelliTest的更多問題,下集繼續。

date: 2017-10-29 09:02:23

轉載于:https://www.cnblogs.com/erdao/p/8419765.html

總結

以上是生活随笔為你收集整理的IntelliTest实战直通车(上集)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱码精品一区二区三区忘忧草 | 九色tv| 99精品视频免费 | 日韩中文字幕二区 | 日本无遮挡边做边爱边摸 | 18岁成年人网站 | 毛茸茸成熟亚洲人 | 久久免费看少妇 | 日韩一区在线观看视频 | 日韩综合区 | 舔花蒂 | m3u8成人免费视频 | 日韩欧美大片在线观看 | 欧美日韩在线免费 | 手机av网址 | 91在线播放视频 | 国产日韩一级 | 日本免费在线观看 | 一级大黄毛片 | 午夜av中文字幕 | 伊人成人在线 | 韩国美女被c | 亚洲精品高清视频在线观看 | 国产精品麻豆视频 | 麻豆网站免费观看 | 成人福利视频在线观看 | 好爽…又高潮了毛片免费看 | 九色tv| 波多野结衣导航 | www.久久网| 亚欧在线 | 日本午夜一级 | 日本免费无人高清 | 日韩欧美网址 | 免费黄色在线看 | 中文字幕亚洲欧美日韩 | 精品久久一| 免费观看黄一级视频 | 黄色男女网站 | 好姑娘在线观看高清完整版电影 | wwwxxx日本| 69欧美视频 | 男人操女人的视频 | 亚洲最大网站 | 亚洲男人的天堂网站 | 午夜精品久久久久久99热 | 性做久久久久久免费观看欧美 | 黄色av免费播放 | youjizz自拍 | 日韩精品一区中文字幕 | 手机在线免费视频 | av一区不卡 | 久久国产乱子伦免费精品 | 日韩综合久久 | 色噜噜色狠狠 | 精品视频不卡 | 亚洲欧美另类在线 | 日韩黄色在线观看 | 亚洲成人午夜在线 | 最新最近中文字幕 | 亚洲av无码国产精品久久 | 亚洲天堂网在线观看 | 国产精品久久久久久久久久免费看 | 免费污视频 | 翔田千里在线播放 | 自拍偷拍亚洲综合 | 亚洲欧美日韩成人在线 | 91video| 各种含道具高h调教1v1男男 | 日本女优网址 | 精产国品一区二区三区 | 亚洲熟妇无码av在线播放 | 日本伊人久久 | 亚洲第一在线播放 | 北条麻妃一区二区三区四区五区 | 久久人妖 | 一级二级毛片 | 精品视频第一页 | 在线观看污视频网站 | 性生交大片免费看女人按摩 | 国产三级三级三级三级三级 | 国产精品电影 | 福利在线一区 | 色亚洲影院 | 精品一区二区成人免费视频 | 97超碰在线免费观看 | 一级大片网站 | 久久久亚洲精品无码 | 牛牛视频在线观看 | 免费看的av网站 | 免费看a级黄色片 | 国产精品一区二区三区四区五区 | 欲求不满在线小早川怜子 | 玖玖视频国产 | 亚洲操 | 色婷婷久久五月综合成人 | 久月婷婷 | 国产一区二区a | 久久97视频|