文档章节

.net分布式压力测试工具(Beetle.DT)

泥水佬
 泥水佬
发布于 2017/09/06 17:17
字数 1062
阅读 413
收藏 8

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

 

© 著作权归作者所有

共有 人打赏支持
泥水佬

泥水佬

粉丝 64
博文 74
码字总数 41338
作品 6
广州
架构师
Beetle.DT —— 基于 .NET 的分布式压力测试工具

Beetle.DT 是基于.NET实现的分布式压力测试工具,用户可以根据需求编写相关的测试用例;通过管理工具即可以把测试用例推送到服务中心, 再根据实际压测的需求把测试用例分配到不同节点上运行...

王练
2017/09/07
11
0
泥水佬/Beetle.DT

Beetle.DT(分布式压力测试工具) 基于.NET实现的分布式压力测试工具,用户可以根据需求编写相关的测试用例;通过工具的管理界面即可以把测试用例推送到服务中心, 再根据实际压测的需求把测...

泥水佬
2017/09/08
0
0
基于 .NET 的分布式压力测试工具--Beetle.DT

基于.NET实现的分布式压力测试工具,用户可以根据需求编写相关的测试用例;通过管理工具即可以把测试用例推送到服务中心, 再根据实际压测的需求把测试用例分配到不同节点上运行。工具会根据...

泥水佬
2017/09/06
1K
3
分布式TCP压力测试工具--tcpcopy

tcpcopy是一种应用请求复制(基于tcp的packets)工具,其应用领域较广,目前已经应用于国内各大互联网公司。 总体说来,tcpcopy主要有如下功能: 1)分布式压力测试工具,利用在线数据,可以...

wangbin5790
2012/02/23
31.3K
6
OceanBase质量保证——RD开发

OceanBase系统一直在不断演化,需要在代码不断变化的过程中保持系统的稳定性。因此,合理的质量保证体系关乎系统的成败。为了保证系统质量,OceanBase做了大量工作,在RD(指开发工程师)开发...

凌洛
04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

es6

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'};console.l...

不负好时光
6分钟前
0
0
叮!您收到一份超值Java基础入门资料!

摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例...

全部原谅
8分钟前
0
0
web.xml容器加载顺序

容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet

Aeroever
10分钟前
1
0
Docker容器日志查看与清理

1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。 2. 解决方法 2.1 找出Docker容器日志 在linux上,容器日...

muzi1994
11分钟前
0
0
J2Cache 和普通缓存框架有何不同,它解决了什么问题?

不少人看到 J2Cache 第一眼时,会认为这就是一个普普通通的缓存框架,和例如 Ehcache、Caffeine 、Spring Cache 之类的项目没什么区别,无非是造了一个新的轮子而已。事实上完全不是一回事!...

红薯
13分钟前
365
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部