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

    确定有人会问为何会写这样一个开源工具?和现有的有什么差异?不过对于一个程序员来讲写东西还真不须要理由的:),主要缘由是工做有点闲(开玩笑),不过说实话一个程员怎可能会中止写代码呢(做为一个奔4的程序员,虽然不是从事开发的岗位,不过写代码的心一直没中止过)!下面仍是来说一下这个工具吧,Beetle.DT是基于.NET实现的分布式压力测试工具,用户能够根据需求编写相关的测试用例,经过管理工具便可以把测试用例推送到服务中心, 再根据实际压测的需求把测试用例分配到不一样节点上运行。工具会根据测试的状况实时获取测试结果,测试完成后用户还能够查询具体 的测试报告。节点采用进程隔离的方式运行测试用例,因此测试用例的运行都是相互独立。html

简介

  软件压力测试仍是很广泛的行为,市面上也有不少这方面的工具。做为程序员确定也想本身动手写这样的轮子做为改进本身代码编写能力的途径。其实想法也是很简单就是一个工具管理测试用例并进行节点分发测试汇报就能够了。git

 

  工具的目的是随意在任意多个节点上运行测试程序,从而更容易达到大规模的压力测试。程序员

工具结构

  基于分布式环境运行因此工具须要划分为如下几个功能应用程序,分别是:测试管理中心,节点服务,测试进程服务和用户管理端大部件。因为涉及到多个进程的协同工做因此在设计和编写上相对比较浪费工做时间。在部署了测试管理中心和节点服务后,用户只须要经过管理工具登录到管理中心便可以进行测试用例的管理和运行,最终经过管理工具就能实时观看测试状况和相应报告。github

管理中心配置

  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并无使用广播发现的技术来解决节点和管理中心的握手问题,由于考虑到有些场景下节点和管理中心并不在了个广播网段下,因此运行节点都需配置对应的管理中心的网络服务地址。app

  <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基础功能有更多的了解和应用,当基础知识扎实了那去实现一些功能就会简单不少了。ide

项止地址:https://github.com/IKende/Beetle.DT/工具

相关文章
相关标签/搜索