关于分类‘软件测试’ 的所有文章

JMeter的中文资料不是很多,我Google了一下,发现基本上没有介绍如何一步步使用的资料。我这里就先整理一下。

大概就是以下几个方面:

  1. 录制脚本
  2. 使用用户自定义参数
  3. 使用控制器
  4. 使用定时器
  5. 使用前置后置处理器
  6. 使用监听器

我也只是入门级别,所以写出来的东西可能比较简单,适合新手参考使用。

这次就介绍使用HTTP代理服务器进行脚本的录制。

JMeter可以录制脚本,也可使用别的工具,如Badboy录制适合JMeter使用的脚本,我们默认使用JMeter自带的功能。

打开JMeter,在工作台节点点击右键,添加 >> 非测试元件 >> HTTP代理服务器,使用默认设置即可。

HTTP代理服务器

然后设置浏览器,把代理服务器设置为127.0.0.1:8080。

Firefox代理

 

 

然后启动HTTP代理服务器,以打开Google为例,它生成的脚本如下:

Google1

它把许多JS、CSS、PNG、GIF的路径都录制了进来,而这些对于测试脚本是没有用处的,我们可以在HTTP代理服务器的排除模式设置,不记录这些。

排除模式

设置完排除模式,重新启动HTTP代理服务器,再次打开Google的首页,发现录制完的脚本简洁多了。

以搜索“JMeter”为例,录制完的脚本是这样的:

Google2

在一些用到JS很多的网页中,JS的动作也会被录制进来,像其中的/complete/search是输入提示框JS的动作,可以删掉的。

JMeter的脚本录制就是这样,另外还可以利用别的工具,例如Badboy,它的使用更加简单,具体可以参考官方网站http://www.badboy.com.au/.

最后,在设置HTTP代理服务器的时候,有两个地方需要注意:

  1. 要确认8080端口是否有冲突,被别的程序,例如Web服务器占用。如果有冲突,可以更改为别的没有冲突的端口
  2. JMeter HTTP代理服务器的端口和浏览器设置的端口要一致
最近在测试一个Swing客户端的时候,发现了一个很怪异的BUG,JSpinner竟然会发生整型溢出的问题。
具体的现象如下:
创建一个JFrame,放置一个JSpinner控件,将其最大值设置为999999999,然后再随便放置别的一个可以获取焦点的控件,运行。
JSpinner

界面很简单,但是当你输入8888888888(10个8)的时候,把焦点移走,你会发现它变成了298954296。
输入4444444444(10个4)的时候,它会变成149477148,而输入别的数值的时候,一切正常。

为什么呢???
经过简单的分析,Java中整型的取值范围是[-2147483648,2147483647],而这是4294967296,
4294967296 × 2 + 298954296 = 8888888888,由此可以确定,这是发生了溢出。

但是,为什么只有10个8或者10个4(别的暂时还没发现)会发生这个问题呢?
网上Google、百度怎么也找不到相关的解释,我也就不得而知了。

另外,还有我们经常使用的QQ,也存在这个问题。
登录QQ,然后查找好友,输入8888888888,你会发现,它的检索结果是298954296,
而输入4444444444,它的检索结果是149477148,跟JSpinner的错误情况一模一样。

再看.Net的NumericUpDown控件,它则没有这个问题,为什么呢?
NumericUpDown

它很聪明,没有使用整型,而是使用了十二月imal,那就没有整型溢出的问题了。

各位高手,为什么这个问题普遍存在,Java的JDK有这个问题,而且QQ也有呢?
难道是CPU的问题?内存的问题?