当前位置: 首页 > news >正文

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

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

 

相关文章:

  • Python中str的format()方法
  • 云计算促使IT体制健全
  • Win10 UWP再支持Facebook React Native开源框架
  • 谭浩强 c++程序设计第一章课后习题 第7题
  • 18位业界权威人士定义了18种云计算
  • 部署NFS过程
  • Centos6.8 使用rpm安装mysql5.7
  • 栅格那点儿事(一)---Raster是个啥子东西
  • 【命令2】
  • DropDownList联动
  • Ta还没有分享呢,过段时间再来看看吧~ 解决办法
  • 如何拿CSDN博客上的原图
  • Hibernate中@Embedded和@Embeddable注解
  • Spring MVC使用@RestController生成JSON示例
  • Tyrion中文文档(含示例源码)
  • Akka系列(七):Actor持久化之Akka persistence
  • Android单元测试 - 几个重要问题
  • CentOS 7 修改主机名
  • IDEA常用插件整理
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript创建对象的四种方式
  • Java超时控制的实现
  • jdbc就是这么简单
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Redis 懒删除(lazy free)简史
  • Vue.js 移动端适配之 vw 解决方案
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 记录:CentOS7.2配置LNMP环境记录
  • 来,膜拜下android roadmap,强大的执行力
  • 理清楚Vue的结构
  • 利用jquery编写加法运算验证码
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 使用agvtool更改app version/build
  • 智能合约Solidity教程-事件和日志(一)
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #数学建模# 线性规划问题的Matlab求解
  • $.ajax,axios,fetch三种ajax请求的区别
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (强烈推荐)移动端音视频从零到上手(下)
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)Thymeleaf用法——Thymeleaf简介
  • .net 7 上传文件踩坑
  • .net framework4与其client profile版本的区别
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 生成二级域名
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET分布式缓存Memcached从入门到实战
  • .net分布式压力测试工具(Beetle.DT)
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Autowired多个相同类型bean装配问题
  • @KafkaListener注解详解(一)| 常用参数详解
  • @RequestParam,@RequestBody和@PathVariable 区别