負載測試/壓力測試工具 NBomber
負載測試和壓力測試對於確保 web 應用的效能和可縮放性非常重要。 儘管它們的某些測試是相同的,但目標不同。
負載測試:測試應用是否可以在特定情況下處理指定的使用者負載,同時仍滿足響應目標。 應用在正常狀態下執行。
壓力測試:在極端條件下(通常為長時間)執行時測試應用的穩定性。 測試會對應用施加高使用者負載(峰值或逐漸增加的負載)或限制應用的計算資源。
壓力測試可確定壓力下的應用是否能夠從故障中恢復,並正常返回到預期的行為。 在壓力下,應用不會在正常狀態下執行。
NBomber是一個開源的 .NET 框架,開源協議是Apache 2.0, NBomber 用於對多種服務進行負載測試,包括 Web、訊息佇列、資料庫等。 今年5月份釋出了
- NBomber 背後的主要原因是為編寫負載測試提供了一個輕量級框架,您可以使用它來測試任何系統並模擬任何生產工作負載。我們只想提供一些抽象,以便我們可以描述任何型別的負載,並且仍然有一個簡單、直觀的 API。
- 另一個目標是提供構建塊,通過應用任何複雜的負載分佈來驗證您的 POC(概念驗證)專案。
- 使用 NBomber,您可以測試任何 PULL 或 PUSH 系統(HTTP、WebSockets、GraphQl、gRPC、SQL Databse、MongoDb、Redis 等)。
- 使用 NBomber,您可以輕鬆地將一些整合測試轉換為負載測試。
NBomber 作為一個現代框架提供:
- 零依賴協議(HTTP/WebSockets/AMQP/SQL)
- 對語義模型的零依賴(Pull/Push)
- 非常靈活的配置和非常簡單的 API (F#/C#/JSON)
- 叢集支援
- 實時報告
- CI/CD 整合
- 資料饋送支援
NBomber的使用 比較簡單,跟著入門文件走一遍就學會了 :https://nbomber.com/docs/overview
1、建立一個控制檯程式
dotnet new console -n NBomberTest -lang "C#"
cd NBomberTest
2、新增NBomber包
dotnet add package NBomber
3、建立 hello world 負載測試
讓我們先從一個空的 hello world 開始,以便更熟悉 NBomber。在這個例子中,我們將定義一個簡單的 步驟 和 場景,它什麼都不做。
using System;
using System.Threading.Tasks;
using NBomber.Contracts;
using NBomber.CSharp;
namespace NBomberTest
{
class Program
{
static void Main(string[] args)
{
// first, you need to create a step
var step = Step.Create("step", async context =>
{
// you can define and execute any logic here,
// for example: send http request, SQL query etc
// NBomber will measure how much time it takes to execute your logic
await Task.Delay(TimeSpan.FromSeconds(1));
return Response.Ok();
});
// second, we add our step to the scenario
var scenario = ScenarioBuilder.CreateScenario("hello_world", step);
NBomberRunner
.RegisterScenarios(scenario)
.Run();
}
}
}
4、執行負載測試
執行測試後,您將獲得一份報告,放在F:\Samples\NBomberTest\reports\2021-07-18_12.04.89_session_57c6dcf0。
資料夾下有有4種格式(txt、csv、html、md)的報告,其中Html 頁面的報告比較直觀:
作者:Leo_wl 出處:http://www.cnblogs.com/Leo_wl/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 版權資訊