1. 程式人生 > 其它 >負載測試/壓力測試工具 NBomber

負載測試/壓力測試工具 NBomber

負載測試和壓力測試對於確保 web 應用的效能和可縮放性非常重要。 儘管它們的某些測試是相同的,但目標不同。

負載測試:測試應用是否可以在特定情況下處理指定的使用者負載,同時仍滿足響應目標。 應用在正常狀態下執行。

壓力測試:在極端條件下(通常為長時間)執行時測試應用的穩定性。 測試會對應用施加高使用者負載(峰值或逐漸增加的負載)或限制應用的計算資源。

壓力測試可確定壓力下的應用是否能夠從故障中恢復,並正常返回到預期的行為。 在壓力下,應用不會在正常狀態下執行。

NBomber是一個開源的 .NET 框架,開源協議是Apache 2.0, NBomber 用於對多種服務進行負載測試,包括 Web、訊息佇列、資料庫等。 今年5月份釋出了

NBomber 2.0版本。 NBomber 類似於JMeter,但是和JMeter 不一樣的地方是, NBomber 是通過F#/C#/JSON 程式碼來表達測試場景。

  1. NBomber 背後的主要原因是為編寫負載測試提供了一個輕量級框架,您可以使用它來測試任何系統並模擬任何生產工作負載。我們只想提供一些抽象,以便我們可以描述任何型別的負載,並且仍然有一個簡單、直觀的 API。
  2. 另一個目標是提供構建塊,通過應用任何複雜的負載分佈來驗證您的 POC(概念驗證)專案。
  3. 使用 NBomber,您可以測試任何 PULL 或 PUSH 系統(HTTP、WebSockets、GraphQl、gRPC、SQL Databse、MongoDb、Redis 等)。
  4. 使用 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/     本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 版權資訊