图解微软性能测试工具VSTS2008 Load Test Agent安装

最近在用VSTS做性能测试的时候发现本地发起请求只能占用1个CPU,其余的CPU都是空闲的,上网查了一下,这个是因为用VSTS做性能测试的时候,发起压力的进程是VSTESTHost.exe,如果想让多核CPU的每一个CPU都产生压力,需要安装使用Visual Studio Team System Test Load Agent。这个工具是要钱的,即使你订阅了MSDN的什么版本,在下载中心里面下载到的都是90天试用版,可能也是因为这个原因,网上很少资料介绍如何安装和使用这个Load Agent。经过1个下午的摸索,成功配置成功,以下是在Windows Server 2003下安装Visual Studio Team System Test Load Agent的过程,VSTS,Controller和Agent都安装在同一台电脑上。
Continue reading “图解微软性能测试工具VSTS2008 Load Test Agent安装”

LoadRunner模拟客户端发送JSON格式的请求

JSON格式的数据现在用的越来越多,在MySpace.CN,存在着2中web应用,一种是基于.NET平台的web应用,另一种是记录LAMP平台的web应用,要让这两种应用能够互相通信,需要制定一种通信格式,当时选择的就是JSON格式。今天接到一个任务,是要对一个批量获取用户数据的接口进行测试,这个接口介绍JSON格式的请求,返回JSON格式的结果。由于最近LAMP团队比较忙,而且我又不太懂怎么弄一个提交JSON的页面,所以只能找找LoadRunner有没有一些函数可以用。最终找到了web_custom_request这个函数。
Continue reading “LoadRunner模拟客户端发送JSON格式的请求”

如何把GUID转换为整形INT数值

在前面一篇介绍在测试过程中创建唯一数据的文章中,推荐使用GUID作为生成唯一测试数据的方法,本人在测试过程中碰到一个问题,就是对于电话号码的生成,如何使得生成的数据尽可能地达到不重复。C#库里面有一个类-Random,这个类可以帮助开发者或者测试员生成随机数,但是大家都知道,计算机生成的随机数准确来说是伪随机数。本人曾经做过一个小实验,用当前时间作为随机种子,创建1000个随机数,里面重复值是相当多。

沿用前一篇文章的思想,我想把GUID转换为整数,那么应该怎么做呢?在程序内部,GUID也是可以看作是一个整数形式存在的变量,当要做这样子的转换的时候,需要了解的是转换会带来信息的丢失;就好像把一个long转换为一个int,有时候会有信息的丢失。我们可以容忍这个丢失,因为从实践来看,用GUID转成int,比Random类生成随机数好随机的多。以下是如何把GUID转换为int的一个方法:
Continue reading “如何把GUID转换为整形INT数值”

在ASP.NET单元测试中进行调试

在前一篇关于在单元测试中使用HttpContext的文章中,本人提到了用ASP.NET单元测试的一个缺点是不能调试,今天我推翻我自己错误的论调,其实在ASP.NET单元测试中也是能调试的。

以前我以为ASP.NET单元测试就运行于WEB服务器上,所以我用Debug来运行,那么ASP.NET单元测试就自动Attach到Web服务器,就能调试了。但是实际上要让ASP.NET单元测试可以调试的话,正确的做法应该是:

  1. 在Web.config中,找到<compilation debug=”false”/>这个节点,然后把debug属性改为true
  2. 在ASP.NET单元测试代码的最开始处添加这样一句话“System.Diagnostics.Debugger.Break()”
  3. 运行该ASP.NET单元测试

在运行单元测试的时候,会有一个提示框出来,说程序遇到一个断点,是否进入调试,当然是选择调试啦。如图:
Continue reading “在ASP.NET单元测试中进行调试”

在C#单元测试中使用HttpContext的简单解决办法

场景:最近在测试一个.NET的Http Module,这个Module是用来做URL重写的。刚开始进展的比较顺利,因为该Module里面的方法参数基本上都是String,后来这个Module进行了一下重构,所有参数都变成了HttpContext了,这就直接导致原来的单元测试都跑不起来了,接着就开始了弄HttpContext了。

1. 采用Visual Studio自带的ASP.NET单元测试

刚开始我看了一下被测试的代码,虽然说用到了HttpContext,但是有很多地方我都可以绕过去的,意思就是这个HttpContext只是名以上需要的一个参数,只要它不是NULL就可以了,并不影响我的测试,所以我采用了ASP.NET Unit Test的办法来获取一个HttpContext,这个方法实现起来是最简单的,但是会有一些问题,后面会提及到。
Continue reading “在C#单元测试中使用HttpContext的简单解决办法”

单元测试中的常用测试模式

单元测试跟软件设计一样,有一些常用的模式,这篇文章是介绍一些常用的模式,其中的示例是C#代码,都比较简单,我想大家都能看懂。下面进入正题:

1. 准备,执行,断言(Arrange, Act, Assert)。这种模式是非常常见的,套用这种模式进行单元测试通常的做法如下:

  1. 准备测试环境,测试数据等
  2. 执行被测试方法
  3. 用断言来验证执行结果

下面是一段测试代码,被测方法的功能是把字符串中每个单词的首字母转为大写,特殊字符用下划线替代。
Continue reading “单元测试中的常用测试模式”

WordPress登陆后功能菜单没有改变的原因及其解决办法

这两天很奇怪,我登陆WP以后,首页的“功能”菜单居然没有改变,但是我的确是处于已经登陆的状态的。因为我装了Google Analyticator插件,并且设置了对于ADMIN是不记录Google统计的。在查看页面的源代码,看不到Google的统计代码,由此可以推断我是已经处于登陆的状态的,但是为什么“功能”菜单没有改变呢?如下图:


Continue reading “WordPress登陆后功能菜单没有改变的原因及其解决办法”

PEX-.NET自动化白盒测试工具的介绍(1)

PEX的全称是(Program EXploration),是一款在.NET下可应用的自动化白盒测试工具,来自于微软研究院。PEX通过分析代码来自动生成测试用例。对于程序里面的每一行代码,PEX都会尽可能地生成合适的输入值来达到提高覆盖率的目标。同时PEX还会分析代码中的分支,生成覆盖更多分支的测试代码(输入数据);PEX在执行代码的同时会监控和分析代码的控制流和数据流,了解程序的行为。每运行完单一个测试以后,PEX会选择一条在前面的测试中没有覆盖到的路径,并且尝试执行它。这一切都是约束求解算法来实现的,官方文档中提到的是一个叫Z3的约束求解器。因为PEX了解被测代码内部结构和行为,所以它不是一个简单地输入随机参数的黑盒测试工具。PEX不会尝试枚举所有可能的输入,事实上也不可能枚举完所有的可能输入。
Continue reading “PEX-.NET自动化白盒测试工具的介绍(1)”

圣诞节的GoDaddy优惠码

早上收到Godaddy的一个邮件,发来了一个Godaddy的优惠码,这个优惠码可以在买Godaddy主机的时候额外得到15%的优惠哦,经过本人测试,能用在Godaddy三种不同的主机的购买中。要注意的是,这个优惠码的有效期比较短,只能是从今天(2008年12月10日)到2008年的圣诞节(2008年12月25日)。需要买主机的朋友要抓紧时间哦!

Godaddy优惠码:.net .com .org 域名7折 gda1135n

Godaddy优惠码:gda1132p, gda1139p

优惠码有效期:2010年圣诞节前

我喜欢的15个WordPress插件

1. All in One SEO Pack

一个功能强大的SEO插件,这个插件可以帮助你重新博客的标题,描述以及关键字,还能针对每个页面,每篇博客的标题进行定制。例如对于一篇博客,WordPress默认是把整站的标题放在前头,然后再跟上当前博客的标题,用户可以利用All in One SEO Pack来做一些修改,把当前博客的标题放到整站标题的前面。除了默认的内容外,All in One SEO Pack还允许用户增加自定义的Header信息,例如加上author等。对于单篇日志的描述和关键字都可以做修改;除此之外,All in One SEO Pack还能让用户自定义单篇博客的标题,这里说的标题是博客页面的标题,并不是博客的题目。20\80原则,做好20%的事情,就能有80%的收获,我看过奶罩改公司做的SEO文档,相当详细,但是不是美国人都有时间做到100%,All in One SEO Pack能帮我们做到20% 😀

2. Google Analyticator
Continue reading “我喜欢的15个WordPress插件”