分布式测试工具DTest

        DTest是基于.NET实现的分布式压力测试工具,在实际应用经常需要制定一系列的测试用例对服务和功能进行压力测试,为了满足压力测试的力度往往需要添加大量的测试节点和部署测试用例.通过DTest工具可以轻松地把自定义的测试用例分发到不同节点下进行分布式测试,并把测试结果汇总到工具中.

DTest功能

        DTest工具的主要功能包括:添加自定义测试用例,测试用例节点分发编译和测试用例运行.以下是工具的主要功能图.

         通过工具可以查看测试用例,测试节点,日志和测试情况.

节点部署

        DTest提供非常简单的节点部署功能,可以通过console或winservice的方式进行部署.在部署过程完全不需要做任何配置只要需要把节点启动起来就会自动寻找并连接到DTest的测试工具中.

        节点部署完成后可以把测试用例同步到所有节点,并在测试的时候选择相应的节点即可进行压测.

构建测试用例和运行

        DTest默认不提供测试用例,用户需要针对自己的业务场编写测试用例;编写测试用例非常简单引用Dtest.Core组件,实现IUnitTester或继承UnitTester重写相关方法即可.以下是一个简单的http get压力测试用例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class HttpGet : UnitTester
{
    public override string Name
    {
        get { return "HttpGet"; }
    }
   
 
    [PropertySetting]
    public string Cookie
    {
        get;
        set;
    }
 
    public override void Init(IContext context)
    {
        System.Net.ServicePointManager.DefaultConnectionLimit = 1024;
 
        base.Init(context);
    }
 
    [PropertySetting]
    public string URL { get; set; }
 
    [PropertySetting]
    public bool KeepAlive { get; set; }
 
    protected override void OnExecute(IContext context)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        if (!string.IsNullOrEmpty(this.Cookie))
        {
            request.Headers.Add("Cookie", this.Cookie);
        }
        request.KeepAlive = KeepAlive;
        request.Method = "GET";
        byte[] data = new Byte[1024 * 8];
        using (System.IO.Stream stream = request.GetResponse().GetResponseStream())
        {
            while (stream.Read(data, 0, data.Length) > 0)
            {
 
            }
        }
    }
}

    在工具的samples目录也提供mysql和mssql一些测试用例用于参考.用例编写完成后可以通过编译成DLL或文件方式存储到相应的目录中,通过工具添加进来即可以运行(工具会自动对DLL或CS文件进行一个编译加载).不过在跑测试用例之前需要对测试用例进行一些设置,工具会自动把标有PropertySetting加载成为编辑内容提供编辑.

        最后可以根据需要来运行具体的测试用例

下载

下载(运行环境.net framework 4.0)

posted @   beetlex  阅读(2298)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示