Beetle.DT (распределённый инструмент нагрузочного тестирования)
Распределённый инструмент нагрузочного тестирования, основанный на .NET, который позволяет пользователям создавать соответствующие тестовые сценарии в соответствии с требованиями; через интерфейс управления инструментом можно отправить тестовые сценарии в центр обслуживания, а затем распределить их по различным узлам для выполнения в зависимости от фактических требований к тестированию нагрузки. Инструмент будет получать результаты тестирования в режиме реального времени, и после завершения тестирования пользователи также могут запросить конкретные отчёты о тестировании.
Узлы используют метод изоляции процессов для запуска тестовых сценариев, поэтому выполнение каждого тестового сценария является независимым друг от друга.
Требования к среде выполнения
Текущая версия Beetle.DT может работать только в Windows + .NET 4.5 (в настоящее время поддерживается только консольный режим). После завершения функции планируется разработка расширений для службы win и .NET Core.
Инструмент развёртывает два основных приложения: центр управления тестированием и узел выполнения тестирования. Взаимодействие между центром и узлами обеспечивается путём настройки соответствующей сетевой информации.
<appSettings>
<!-- ... -->
<add key="server-host" value=""/>
<add key="server-port" value="9091"/>
<add key="manager-host" value=""/>
<add key="manager-port" value="9092"/>
<!-- ... -->
</appSettings>
<appSettings>
<!-- ... -->
<add key="server-host" value="127.0.0.1"/>
<add key="server-port" value="9091"/>
<!-- ... -->
</appSettings>
После того как центр управления и узлы будут развёрнуты, можно использовать инструмент управления для входа в центр управления для создания, загрузки файлов, мониторинга узлов и других операций, связанных с тестированием.
Откройте инструмент управления, введите адрес службы центра управления, подключитесь к центру управления; после входа вы можете создать каталог тестирования и загрузить файлы. После выбора каталога тестирования и запуска узла нажмите кнопку «Тест», чтобы начать тестирование.
В процессе тестирования график ниже будет отображать результаты обработки запросов на параллелизм в разные периоды времени.
После завершения теста вы можете просмотреть подробные отчёты, чтобы узнать о результатах тестирования.
Тестирование HTTP, SQL и TCP
Beetle.DT сам по себе является инструментом тестирования, и без тестовых сценариев он не может выполнять никаких функций. Чтобы лучше понять назначение инструмента, были разработаны несколько базовых тестовых сценариев для простого нагрузочного тестирования HTTP, SQL и TCP.
Ниже приведены примеры реализации нескольких базовых тестовых сценариев:
public class HttpGet : TestCase<Config>
{
public override string Name
{
get
{
return "HTTP_GET";
}
}
private long mIndex = 0;
private List<string> mUrls = new List<string>();
public override void Init()
{
base.Init();
mUrls.AddRange(this.Config.Urls.Split(';'));
}
public string GetUrl()
{
mIndex++;
return mUrls[(int)(mIndex % mUrls.Count)];
}
protected override void OnExecute()
{
System.Net.WebRequest wReq = System.Net.WebRequest.Create(GetUrl());
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 Urls { get; set; }
}
public class MySqlDriver : DriverTemplate<MySqlConnection, MySqlCommand, MySqlDataAdapter, MySqlParameter, MysqlBuilder>
{
}
public abstract class sqlbase : TestCase<SQLConfig>
{
public override void Init()
{
Peanut.DBContext.SetConnectionString(DB.DB1, Config.Connection);
base.Init();
}
protected override void OnExecute()
{
base.OnExecute();
Peanut.SQL sql = Config.Sql;
sql.Execute();
}
}
public class MSSQL : sqlbase
{
public override void Init()
{
``` **Перевод кода на русский язык:**
Peanut.DBContext.SetConnectionDriver<Peanut.MSSQL>(DB.DB1);
base.Init(); }
public override string Name { get { return "mssql"; } }
}
public class MYSQL : sqlbase { public override void Init() { Peanut.DBContext.SetConnectionDriver(DB.DB1); base.Init(); }
public override string Name { get { return "mysql"; } }
}
public class SQLConfig { public string Connection { get; set; } public string Sql { get; set; } }
**TCP**
```c#
public class SocketTcpUtf : Beetle.DTCore.TestCase<TcpConfig>
{
byte[] mData;
private BeetleX.Clients.IClient mClient;
public override void Init()
{
base.Init();
mData = GetData();
mClient = BeetleX.ServerFactory.CreateTcpClient(Config.Host, Config.Port);
mClient.ClientError = OnNetError;
mClient.Receive = OnReceive;
}
private void OnReceive(IClient c, IBinaryReader reader)
{
foreach (IBuffer item in reader.GetBuffers())
{
item.Free();
}
Completed();
}
private void OnNetError(IClient c, Exception e, string message)
{
Completed(e);
}
protected virtual byte[] GetData()
{
return Encoding.UTF8.GetBytes(Config.Data);
}
public override string Name
{
get
{
return "TCP_UTF_DATA";
}
}
public override void Execute()
{
mClient.Send(mData);
}
}
public class SocketTcpHex : SocketTcpUtf
{
public override string Name
{
get
{
return "TCP_HEX_DATA";
}
}
protected override byte[] GetData()
{
return Enumerable.Range(0, Config.Data.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(Config.Data.Substring(x, 2), 16))
.ToArray();
}
}
public class TcpConfig
{
public string Host { get; set; }
public int Port { get; set; }
public string Data { get; set; }
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )