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

转载于:https://www.cnblogs.com/smark/p/7485500.html

.net分布式压力测试工具(Beetle.DT)相关推荐

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

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

  2. 分布式TCP压力测试工具 tcpcopy

    tcpcopy是一种应用请求复制(基于tcp的packets)工具,其应用领域较广,我们曾经应用于网易的广告投放系统,urs系统,nginx hmux协议开发等系统,避免了上线带来的很多问题. 总体说 ...

  3. 为虾米下载《分布式网站负载压力测试工具》变成了《黄色小说》?

    时间早上8点,有一条QQ消息来源: 2013-05-24  8:20:20  你好:我在http://wst.cyqdata.com/页面下载压力测试工具时解压后的内容是小说. 当然了,一般早上我都不 ...

  4. 十个免费的WEB压力测试工具

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

  5. jmetery压力测试工具

    Tomcat调优测试方案我们刚才学了这么多的JVM参数调优的,你们总结一下基本原则是什么原则,在做JVM参数调优的时候,基本原则是减少垃圾回收的次数,尽量让老年代的空间大于新生代的空间,在TOMCAT ...

  6. 基于Kubernetes的分布式压力测试方案

    压力测试是用来检测系统承载能力的有效手段.在系统规模较小的时候,在一台空闲的服务器上使用[ab],[wrk],[siege]等工具发起一定量的并发请求即可得到一个初步的测试结果.但在系统复杂度逐步提高 ...

  7. java 测试工具 oracle_SwingBench---ORACLE压力测试工具

    SwingBench---ORACLE压力测试工具 ■描述 Swingbench is a free load generator (and benchmarks) designed to stres ...

  8. [原创]Tsung压力测试工具简介及安装

    [原创]Tsung压力测试工具简介及安装 一 Tsung压力测试工具简介 一个开源的多协议分布式负载测试工具,使用erlang语言开发的.它能用来压力测试HTTP, WebDAV, SOAP, Pos ...

  9. 十大Web压力测试工具

    下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能. Grinder – Grinder是一个开源的JV ...

最新文章

  1. 自适应滤波器_有源电力滤波器的使用意义和作用
  2. 06 小数据池 is 和 = = 再谈编码
  3. python 编译器pyc_有没有办法知道哪个Python版本.pyc文件被编译?
  4. 2019第三届中国通信业物联网大会邀请函
  5. arduino灯光装置_【pinpong库控制硬件】之Arduino uno-调光台灯
  6. 震惊!华为对大数据又出新动作!
  7. python画折线图两种写法
  8. 用Java实现邮件的发送
  9. CDA Level1知识点总结之业务分析报告与数据可视化报表
  10. javascript 模拟退格键_js实现模拟计算器退格键删除文字效果的方法
  11. 让割草类游戏更有趣的攻击动作设计技巧
  12. TOREX | 如何延长设备的电池寿命?——充电IC
  13. vue项目 报错 Extra semicolon (semi)
  14. SQL练习题_ 查询每个部门工资最高的前两名的姓名和部门名称【多测师_何sir】
  15. c 语言中古括号,如何将中古调式运用在你的作品上
  16. Mysql之笛卡尔积
  17. RV1126编译ROS Kinetic环境(Ubuntu18.04)
  18. 开篇词:“桌面应用”是一顶璀璨的王冠
  19. 基于MariaDB4j实现持久层单元测试
  20. 个人网页(HTML+css)

热门文章

  1. 考博心得集锦——成功因素、相关准备工作
  2. 深度分析!华为云手机到底能不能让光刻机变废铁
  3. 使用easyExcel生成动态表头表格
  4. 【win32】GetDlgItem(函数详解)
  5. input属性及其应用
  6. 前端CSS input type属性详解
  7. 高端婚礼的布置技巧 8个细节不能忽略
  8. MySQL 主键自增 Auto Increment用法
  9. 1942-2022全国400多个气象站气候数据
  10. laravel route