使用.NET Core 编写端到端测试
什么是端到端測試
端到端測試也稱E2E,與單元測試、集成測試、組件測試、契約測試相比,端到端測試的目的是驗證整個系統是否滿足業務目標,而不管使用的組件架構如何,為了實現這一點,系統被視為一個黑盒子,測試盡可能多地運用完全部署的系統,通過GUI和服務API等公共接口進行操作。
由于端到端測試更面向業務,因此它們通常使用業務可讀的DSL,以域的語言表達測試用例。同樣的,端到端測試也是大部分國內互聯網的唯一測試手段,通常由測試部門通過人工方式在瀏覽器點擊一個個的按鈕進行測試。
在微服務體系架構中,由于微服務架構包括針對相同行為的更多移動部件,因此端到端測試通過添加服務之間的間隙的覆蓋來提供價值。這使得在服務之間傳遞的消息的正確性更加可靠,但也確保正確配置了任何額外的網絡基礎結構,如防火墻,代理或負載平衡器。
端到端測試還允許微服務架構隨著時間的推移而發展。隨著對問題域的了解越來越多,服務可能會分裂或合并,端到端測試可以確保系統提供的業務功能在如此大規模的體系結構重構中保持不變。
使用.NET Core 編寫端到端測試用例
先決條件:Visual Studio 2017或更高版本、.NET Core SDK 2.1或更高版本、Windows 10 、Web Driver
安裝Web Driver
安裝VS2019、.NET Core SDK 、 Windows10 不再贅述,主要講一下如何下載安裝WebDriver
本文使用Edge瀏覽器進行E2E測試,對于Chrome ,請在此處下載http://chromedriver.storage.googleapis.com/index.html
大部分的情況下,你的win10應該會預裝微軟的Edge 瀏覽器,預裝的瀏覽器一般情況是18 版本,你可以打開Edge 瀏覽器,在右上角的··· 按鈕點擊設置,滑動鼠標滑輪到最下方,如果是18.XXX 則說明是18版本,否則是17版本。
對于18版本,以管理員模式運行命令行或powershell,并鍵入以下命令
DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0
對于18之前的版本,在此右側選擇你的edge版本的驅動
打開VS
打開VS2019,新建xunit測試項目,安裝Nuget包Selenium.WebDriver引用到你的測試項目中
在默認的測試方法里添加以下代碼:
var driver = new EdgeDriver();driver.Url = "https://www.bing.com";
var element = driver.FindElementById("sb_form_q");
element.SendKeys(".NET Core");
element.SendKeys(Keys.Enter);
Assert.Contains(".NET Core", driver.Title);
driver.Quit();
你需要添加命名空間引用
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
上述代碼是
啟動Edge瀏覽器
訪問必應網站,找到搜索框
找到文本框
模擬輸入文本.NET Core
模擬輸入Enter 鍵
判斷當前的瀏覽器的tab頁面標題中包含我們搜索的關鍵詞.NET Core
最后,關閉瀏覽器
至此一個簡單的模擬用戶操作瀏覽器的單元測試已經完成,先關閉所有的Edge瀏覽器。運行測試,測試會自動打開瀏覽器,執行上述操作,最后關閉
擴展閱讀
對于CI服務器,你需要為其安裝運行該測試的環境,對于Jenkins,你需要添加一個win10的Slave節點,并安裝對應的WebDriver組件;
對于TeamCity,你需要將一個agent代理安裝在一個windows10服務器。
最佳實踐
你應該盡可能的使用多的瀏覽器以測試兼容性和模擬行為,所以,你需要在CI的代理服務器上安裝對應的瀏覽器,目前支持大部分的主流瀏覽器:
Safari?
Chrome?
Firefox?
IE
你需要下載對應瀏覽器的驅動程序
你可以直接在你的測試項目中,new ChromeDriver 等瀏覽器驅動實例,如果未安裝,會引發異常,在異常內容里,會有驅動的下載地址
原文地址:https://www.cnblogs.com/mt-netcore/articles/10911498.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的使用.NET Core 编写端到端测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用ASP .NET Core的静态文件
- 下一篇: .NET/C# 使用 Condition