.NET测试用例写的好不好?让变种来测试一下!
為了保證代碼能夠正常工作,我們常常編寫了大量單元測試,并且代碼覆蓋率也做到了100%。但是在生產環境運行時還是會出問題!為什么??
這是因為你沒有進行變異測試!
變異測試
變異測試就是把bug(變種mutant)自動加入到你的代碼中。然后針對每個變種進行測試。測試應該失敗,如果測試通過——變種存活下來了,這就意味著測試代碼存在問題。?
Stryker.NET
使用Stryker.NET可以為我們的.NET Core和.NET Framework項目提供變異測試。
Stryker.NET支持多個變種,例如算術運算符、邏輯運算符,甚至LINQ表達式等。你可以在文檔中查看可用變種的完整列表https://stryker-mutator.io/docs/stryker-net/Mutators。
執行下面命令安裝Stryker.NET:
dotnet?tool?install?dotnet-stryker?--global下面,我們GitHub Trending上排名較高的dotnet-architecture/eShopOnContainers(https://github.com/dotnet-architecture/eShopOnContainers)來演示Stryker.NET如何工作。?
eShopOnContainers包含了大量業務代碼和單元測試。我們重點測試Catalog.UnitTests。
功能一瞥
命令行進入Catalog.UnitTests所在目錄后,執行下列命令:
dotnet?stryker等待一段時間后,會提示運行完成,測試結果輸出到了一個Html文件。
打開報告,我們可以看到,總體得分1.67,共引入了682個變種,只有11個被殺死,還有8個存活。(測試用例質量不行啊,撇嘴)?
讓我們看看CatalogController.cs中存活的一個變種:
可以看到,Stryker.NET使用了相等變種,將“==”改為“!=”。結果告訴我們,沒有任何測試可以檢測到這種變化。
結論
變異測試就是對測試結果進行檢測,以盡量減少測試用例編寫不完善的機會。
那些不能被殺死的變種,終將使你的代碼更強壯!
如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“,記住我!
總結
以上是生活随笔為你收集整理的.NET测试用例写的好不好?让变种来测试一下!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 来聊聊正则表达式
- 下一篇: asp.net ajax控件工具集 Au