摘要: 信号量说简单点就是为了线程同步,或者说是为了限制线程能运行的数量。那它又是怎么限制线程的数量的哩?是因为它内部有个计数器,比如你想限制最多5个线程运行,那么这个计数器的值就会被设置成5,如果一个线程调用了这个Semaphore,那么它的计数器就会相应的减1,直到这个计数器变为0。这时,如果有另一个线程继续调用这个Semaphore,那么这个线程就会被阻塞。获得Semaphore的线程处理完它的逻辑之后,你就可以调用它的Release()函数将它的计数器重新加1,这样其它被阻塞的线程就可以得到调用了。using System;using System.Collections.Generic;us 阅读全文
posted @ 2011-12-24 14:30 heqichang 阅读(23725) 评论(5) 推荐(5)
摘要: 事务(Transaction)我们可以划分一批请求组合成一个事务,然后我们就可以跟踪分析这个事务请求所花费的总体时间了。事务可以通过简单的指定开始的request和结束的request来设定。在Root节点右键鼠标,选择Add Transaction…点击。然后在弹出的对话框中,填写事务的名字,选择好第一个Request和最后一个Request,事务会自动将它们两个之间所有的request都添加进来。点击OK之后,就可以在我们的编辑窗口见到我们的两个request添加进事务了。点击运行一下,我们可以看到测试运行结果,里面包含了事务运行的总时间等。添加数据源(Add Data Source)在之 阅读全文
posted @ 2011-12-11 18:16 heqichang 阅读(2872) 评论(8) 推荐(3)
摘要: 接着上次那篇文章,这次我来详细说一下性能测试编辑窗口中的各个功能及操作。上次说到我们编辑窗口中的树结构,每一层都会有不同的属性设置。Root Level:可以说是一条Web性能测试的入口点,比如:可以在此设置用户验证、代理或者为这条测试添加一些描述信息等;Request Level:在Web性能测试中记录下来的每一条单独的请求,可以在此设置用户思考时间(think time)、请求方式(GET或者POST)或者设置是否缓存等;Request Parameter Level: 这里是每次请求的参数设置,可以在此设置是否进行Url编码、值还有名称。这里所有的属性设置你都可以在属性视窗中看到说明,如 阅读全文
posted @ 2011-11-20 21:29 heqichang 阅读(9612) 评论(2) 推荐(1)
摘要: 无聊时的想法,想用控制台来玩玩黑客帝国中那漂亮的数字雨特效,但是做得超简陋!呵呵!using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Timers;namespace ConsoleApplication70{ class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.DarkG... 阅读全文
posted @ 2011-11-18 21:32 heqichang 阅读(2882) 评论(0) 推荐(1)
摘要: 概述网站的性能由很多不同的因素决定,比如:网络速度、不同的浏览器或者在同一时刻的用户数量、硬件处理能力等因素,都会影响到网站的性能和响应时间。Web性能测试就是帮助开发者在开发工程中就能确认并尽力修复这些问题。下面讨论几种主要的性能测试:Validation and verification test: 这个测试用来帮助我们检验输入值和是否能在期望的入口安全登录。比如:一个字段要求你输入一个Email地址,那么你必须正确输入才能提交页面。Web page usability test: 它相当于是在生产环境中,通过模拟用户行为来查看网站内容是否完整。比如:每个链接是否正确或者页面上的信息是否显 阅读全文
posted @ 2011-10-29 22:46 heqichang 阅读(11116) 评论(9) 推荐(1)
摘要: 有时,我们会对同一条测试用例根据不同的输入数据运行多次测试。为了不重复写单元测试代码,VS允许我们的每一条单元测试函数都可以连接自己的数据源,数据源的文件格式可以是CSV、XML、SQL Server数据库或者Oracle数据库等。下面我继续使用上次进行单元测试的函数,该函数体如下:public double CalculateTotalPrice(double quantity){ double totalPrice; double unitPrice; unitPrice = 16.0; totalPrice = unitPrice * quant... 阅读全文
posted @ 2011-10-08 19:14 heqichang 阅读(4608) 评论(0) 推荐(0)
摘要: 概述在软件开发过程中,我们可能会有很多的模块,而每个模块有可能又由许多函数组成。当我们的系统发生错误时,我们必须定位发生错误的模块,然后精确到模块中某个具体的函数中,而这工作往往又是非常浪费时间和生产效率的,如果系统越复杂,那么定位错误的成本将越高。所以在每个函数集成进模块时,必须通过严格的单元测试来验证。在VS2010中我们可以为我们的函数自动生成单元测试,无论它是否是public或者的private的。所有用于单元测试的类和函数都被定义在Microsoft.VisualStudio.TestTools.UnitTesting这个命名空间中。创建Unit Test我们先创建一个被测试的类库工 阅读全文
posted @ 2011-09-30 18:57 heqichang 阅读(9596) 评论(0) 推荐(1)
摘要: 问题:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?我自己是这样想的,问题得从最后那个猴子看起,最后那个猴子依然能将桃子分5堆剩一个,则设在最后那个猴子之前剩下数量是A,A%5=1并且还能平分成4堆没有剩余,所以A%4=0。然后,倒数第二只猴子之前的数量就是A+A/4+1个,并且重复之前的步骤,如果在到第一只猴子之前都没遇到问题,那么就能得出结果了。如果在中 阅读全文
posted @ 2011-09-29 18:09 heqichang 阅读(1669) 评论(1) 推荐(0)
摘要: 当我们用Linq操作我们自定义的对像数组时,我们会发现有些方法直接使用的话根本不起作用,比如:Distinct、Except、Intersect等扩展方法。对于我们自定义的对象的比较,我们必须实现IEqualityComparer接口来判断两个对象的相等性。示例代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace lambda{ class Program { static void Main(string[] args) ... 阅读全文
posted @ 2011-09-29 00:07 heqichang 阅读(12264) 评论(2) 推荐(0)
摘要: 概述在VS2010中为我们的软件测试提供了很多功能及管理工具。这其中包括有:Test View、Test List Editor、Test Results、Code coverage Results、Test Runs以及在VS2010中新增的功能Test Impact View。工具介绍下面我们一一来介绍VS中为我们提供的工具。首先我新建了一个简单的待测试的工程:CalculatorLibrary,在Class1中,添加了一段简单的代码,如下:using System;using System.Collections.Generic;using System.Linq;using Syste 阅读全文
posted @ 2011-09-27 20:33 heqichang 阅读(21145) 评论(6) 推荐(6)