肯定有人會問為什麼會寫這樣一個開源工具?和現有的有什麼差別?不過對於一個程式設計師來說寫東西還真不需要理由的:),主要原因是工作有點閒(開玩笑),不過說實話一個程員怎可能會停止寫程式碼呢(作為一個奔4的程式設計師,雖然不是從事開發的崗位,不過寫程式碼的心一直沒停止過)!下面還是來講一下這個工具吧,Beetle.DT是基於.NET實現的分散式壓力測試工具,使用者可以根據需求編寫相關的測試用例,通過管理工具即可以把測試用例推送到服務中心, 再根據實際壓測的需求把測試用例分配到不同節點上執行。工具會根據測試的情況實時獲取測試結果,測試完成後使用者還可以查詢具體 的測試報告。節點採用程式隔離的方式執行測試用例,所以測試用例的執行都是相互獨立。
簡介
軟體壓力測試還是很普遍的行為,市面上也有很多這方面的工具。作為程式設計師肯定也想自己動手寫這樣的輪子作為改進自己程式碼編寫能力的途徑。其實想法也是很簡單就是一個工具管理測試用例並進行節點分發測試彙報就可以了。
工具的目的是隨意在任意多個節點上執行測試程式,從而更容易達到大規模的壓力測試。
工具結構
基於分散式環境執行所以工具需要劃分為以下幾個功能應用程式,分別是:測試管理中心,節點服務,測試程式服務和使用者管理端大部件。由於涉及到多個程式的協同工作所以在設計和編寫上相對比較浪費工作時間。在部署了測試管理中心和節點服務後,使用者只需要通過管理工具登陸到管理中心即可以進行測試用例的管理和執行,最終通過管理工具就能實時觀看測試情況和相應報告。
管理中心配置
Beetle.DTCenter是工具的服務中心,執行服務需要明確節點服務埠和管理服務埠,這樣才能提供給節點和管理端進行資訊互動。
<appSettings> <!-- ... --> <add key="server-host" value=""/> <add key="server-port" value="9091"/> <add key="manager-host" value=""/> <add key="manager-port" value="9092"/> <!-- ... -->
節點配置
Beetle.DTNode是工作的節點服務,Beetle.DT並沒有使用廣播發現的技術來解決節點和管理中心的握手問題,因為考慮到有些場景下節點和管理中心並不在了個廣播網段下,所以執行節點都需配置對應的管理中心的網路服務地址。
<appSettings> <!-- ... --> <add key="server-host" value="127.0.0.1"/> <add key="server-port" value="9091"/> <!-- ... --> </appSettings>
測試用例編寫
由於測試用例是由工具程式載入,所以必須要符合某些規則;編寫測試用例需要繼承Beetle.DTCore.TestCase<T>,重寫相關抽象方法實現具體的測試程式碼即可以。以下是一個簡單的http get測試用例:
public class Test : TestCase<Config> { public override string Name { get { return "httptest"; } } protected override void OnExecute() { System.Net.WebRequest wReq = System.Net.WebRequest.Create(Config.Url); System.Net.WebResponse wResp = wReq.GetResponse(); System.IO.Stream respStream = wResp.GetResponseStream(); using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.UTF8)) { reader.ReadToEnd(); } } } public class Config { public string Url { get; set; } }
總結
這個工具也只是一個初型,它可以滿足了一些基本壓力測試的功能,還有很多功能和存在的問題需要不停的完善(畢竟要把一個東西做好並不是一件容易的事情)。對部分.net開發人員來說實現工具的功能好象有點複雜,實際上也只是.NET的一些基礎功能的應用,分享這個工具程式碼也目的也可以讓.NET開發人員對.NET基礎功能有更多的瞭解和應用,當基礎知識紮實了那去實現一些功能就會簡單很多了。
項止地址:https://github.com/IKende/Beetle.DT/