肯定有人会问为什么会写这样一个开源工具?和现有的有什么差别?不过对于一个程序员来说写东西还真不需要理由的:),主要原因是工作有点闲(开玩笑),不过说实话一个程员怎可能会停止写代码呢(作为一个奔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/

.net分布式压力测试工具(Beetle.DT)的更多相关文章

  1. 分布式测试工具Beetle.DT的部署并进行HTTP,SQL,TCP压测

    由于Beetle.DT是一个分布式压力测试工具,所以在使用上并不像普通工具那样安装运行这么简单:由于工具涉及到测试管理中心,节点和管理端等工具: 所以必须要进行相应的部署才能运行.接下来详解一下如果安 ...

  2. Centos6.5搭建分布式压力测试工具Tsung的环境搭建

    各软件版本: 1.otp_src_17.1.tar.gz 2.tsung_1.5.1.tar.gz 3.7.0的Java编译环境 因工作需要,需要用TSung工具测试xmpp协议,经历了一段时间的挣扎 ...

  3. 九款Web服务器性能压力测试工具

    一.http_load 程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会 ...

  4. 面向Web应用的并发压力测试工具——Locust实用攻略

    1. 概述 该方案写作目的在于描述一个基于Locust实现的压力测试,文中详细地描述了如何利用locustfile.py文件定义期望达成的测试用例,并利用Locust对目标站点进行并发压力测试. 特别 ...

  5. 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...

  6. 转: Tsung:开源多协议分布式负载&压力测试工具

    Main features High Performance: the load can be distributed on a cluster of client machines Multi-pr ...

  7. postgresql压力测试工具用法以及参数解读

    pgbench是PostgreSQL自带的一个数据库压力测试工具, 支持TPC-B测试模型, 或自定义测试模型. 自定义测试模型支持元命令, 调用shell脚本, 设置随机数, 变量等等. 支持3种异 ...

  8. 十个免费的Web压力测试工具

    两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ...

  9. apache压力测试工具的apache bench和JMeter的安装

    Apache压力测试工具的安装 1,apache bench的安装 apache  bench工具集成在http的软件包内,可以直接安装apache就可以. 当有些时候,我们不需要用到所有的软件包,我 ...

随机推荐

  1. 接口工具-POSTMAN

    前端的一项总要工作就是测试接口,当然这也可能是你们后台人员做的.不管怎样,都需要测试接口,那么就来介绍一款谷歌浏览器接口测试插件,postman.首先你要去谷歌的应用商店,搜索这个插件,(需要FQ), ...

  2. 【机器学习】反向传播算法 BP

    知识回顾 1:首先引入一些便于稍后讨论的新标记方法: 假设神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,L表示神经网络的层数,S表示每层输入的神经元的个数,SL代表最后一层中处理的单元 ...

  3. 查看ubuntu的内核版本&获取roo…

    1.查看内核版本命令 [root@AY130616190837708391Z ~]# cd .. (管理员权限) [root@AY130616190837708391Z /]# cd proc [ro ...

  4. spring持久类po或者javabean为什么常常实现序列化?

    无论用hibernate或者mybatis结合spring做开发还是其他,系统里持久类往往要实现序列化, implements Serializable.我还是比较好奇,为什么要这样做呢?一直只知道个 ...

  5. ORA-01031:insufficient privileges解决方法

    今天刚创建的数据库,用sys身份登录的时候提示 ORA-01031:insufficient privileges !郁闷了,肯定是先百度一波···然后设置当前用户权限.用Administator用户 ...

  6. 电机PID调试注意(待补充)

    1.速度传感器 返回值要处理好,要和目标值同一单位,这样方便以后的计算 2.PID初始化要准确 3.输出给定要设定一个阈值,防止电机转速太大.

  7. Oracle RAC 11g DG Broker配置和测试

    Oracle RAC 11g DG Broker配置和测试 之前在<RHEL6.4 + Oracle 11g DG测试环境快速搭建参考>已经简单说过. 本篇在实验环境中实际配置 环境: R ...

  8. Mongodb相关 (Shell命令 / mongoose)

    Mongodb相关 1.创建一个文件夹作为数据库存放的目录 2.打开cmd cd到Mongodb/bin目录去 3.执行mongod --dbpath "第一项创建的文件夹(数据库数据存放目 ...

  9. 研究分析JS中的三种逻辑语句

    JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10;  ...

  10. U3D操作游戏对象

    游戏对象:所有出现在场景中的实体都是游戏对象. 一.创建游戏对象 创建游戏对象有两种方式:一是通过在unity中创建模型,而是通过脚本动态创建游戏对象.通过脚本动态创建的灵活性较高,重点也在于通过脚本 ...