自己动手写压力测试
作者:网络转载 发布时间:[ 2014/1/10 15:43:29 ] 推荐标签:压力测试 验收测试
信息如水 压力如潮
功能实现阶段,我们对得要处理的信息分析得很细致,很透彻,所谓细如丝,透如水。然而,到了产品的阶段,要处理的信息却如同潮洪而至,原本的假设预想,通通被击成了碎片。这时候产生的错误和问题,很难在开发机上重现。
如果说用户验收测试是对功能实现的检查,需要滴水不漏;压力测试则是容量的考验,迎接浪的洗礼。
环肥燕瘦
压力测试的工具颇多,尤其是HP的LoadRunner甚至成为了行业标准。可是,在研究和考察的过程中,心里却慢慢有了质疑,我是否非得用这些工具吗? 一则,它们是商业软件,价格不菲;二则,还是因为是商业软件,功能太多,太庞大,很多东西我都不需要。为什么不自己做一个简单实用的呢?
在小赵研究Selenium时,我觉得用他用的语法很贴近业务语言,于是我提出一个问题,可以用于压力测试吗?他说不行,因为Selenium是要完全启动浏览器。平时,看起来瘦小的浏览器,其实很耗资源,特别是与压力测试的容量来比,浏览器是个不折不扣的大胖子。你可以试一下,在你的机器上同时开启100个浏览窗口,会是个什么状况。
苗条美人 HttpClient
否定了Selenium之后,很快找到了我的目标HttpClient (其实还有个前生WebClient,后面有叙)。从名称,我们可以知道,它已经定位到很低Http层,这一层是效率与易用的一个佳平衡点。但是,它是.Net 4.5下的部件,在.Net 4.0必须用NuGet来下载。
查看了很多资料以后,我可以确信,HttpClient正是我想要的。她还有一个很大的特色,完全只提供异步接口。这实际上是另一种大瘦身,耗用资源上的瘦身,HttpClient正式我要的窈窕淑女。
前生:WebClient
var values = new NameValueCollection();
foreach (var key_value in ui.FormData)
{
values.Add(key_value.Key, key_value.Value);
}
var client = new WebClient();
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
Console.WriteLine(string.Concat(base_site + ui.Path, ui.Method.ToString().ToLower(), values));
byte[] result = client.UploadValues(base_site + ui.Path, ui.Method.ToString().ToLower(), values);
string ResultAuthTicket = Encoding.UTF8.GetString(result);
Console.WriteLine(client.BaseAddress);
Console.WriteLine(client.ResponseHeaders.ToString());
Console.WriteLine(ResultAuthTicket);
HttpClient的Async方法,注意后的Wait()有把异步转化为了同步
var form_data=new Dictionary<string, string>();
form_data.Add("system_account","test1@skight.com");
form_data.Add("system_password","123456");
var values = new NameValueCollection();
foreach (var key_value in form_data)
{
values.Add(key_value.Key, key_value.Value);
}
var client = new HttpClient();
client.GetStringAsync("http://esr20syst.skight.com/District/03/UserLogin.do")
.ContinueWith(
t =>
{
Console.WriteLine("Time {0}", DateTime.Now);
Console.WriteLine(t.Result);
})
.Wait();
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11