wywuyu1214 发表于 2005-7-18 10:59:32

有高手介绍一下opensta的用法吗?

要做性能测试,请问这个工具怎么用啊?

sincky 发表于 2005-10-24 22:31:45

它的官方网站是 www.opensta.org,资料肯定最全;如果感觉不爽,可以看看下边的参考资料:

摘要:
本文将介绍一个免费的、源代码开放的web 性能测试工具OpenSTA,包括它的
原理、组成部分、录制脚本的过程。另外,还将介绍如何在OpenSTA 的测试脚本中
引入变量,并给变量赋不同值,比如,将登陆被测试网站的用户名称设置为一个变
量,在执行性能测试时,虚拟多个不同的用户同时登陆被测试网站,通过将访问网
站的用户名称打印出来的方法,验证该变量在测试执行过程中被赋与了不同值。
正文:
作为测试工程师,不能只关注系统的功能,还必须对系统的性能进行全面的测
试,才能确认系统是否满足用户的需求。那么什么是性能测试呢?
“中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、
应用在网络上性能的测试和应用在服务器端性能的测试。应用在客户端性能测试的
目的是考察客户端应用的性能,测试的入口是客户端。它主要包括并发性能测试、
疲劳强度测试、大数据量测试和速度测试等,其中并发性能测试是重点。”(《性能测
试:软件测试的重中之重》作者:中国软件评测中心 发文时间:2003.08.26)
目前比较著名的并发性能测试工具有Rational Robot、QALoad、LoadRunner 和
微软的WAS 等。这其中QALoad、LoadRunner、Rational Robot 都是比较不错的商
业测试工具(价格也很贵哦),微软的WAS 是一个免费的测试工具,使用起来比较
简单,但是由于不能显示和编辑所录制的测试脚本,其可控性和图形化测试结果都
较弱,故造成一定的局限性。
OpenSTA 是专用于B/S 结构的、免费的性能测试工具。它的优点除了免费、源
代码开放的优点外,还能对录制的测试脚本进行,按指定的语法进行编辑。测试工程
师在录制完测试脚本后,只需要了解该脚本语言的特定语法知识,就可以对测试脚
本进行编辑,以便于再次执行性能测试时获得所需要的参数,之后进行特定的性能
指标分析。OpenSTA 以最简单的方式让大家对性能测试的原理有较深的了解,其较
为丰富的图形化测试结果大大提高了测试报告的可阅读性。
OpenSTA 是基于Common Object Request Broker Architecture (CORBA)的结构体
系。它是通过虚拟一个proxy, 使用其专用的脚本控制语言,记录通过proxy 的一切
HTTP/S traffic。测试工程师通过分析OpenSTA 的性能指标收集器收集的各项性能指
标,以及HTTP 数据,对被测试系统的性能进行分析。
首先,OpenSTA 都有哪些组成部分?
u OpenSTACommander – 主要控制应用程序;
u NameServer – CORBA 背景处理器,保证OpenSTA 各个组成部分之间的
交流;
(NameServer 是安装OpenSTA 的同时被安装的,正常运行时,可以在Windows
任务栏的右侧看到图标,如果没有正常运行或者被停止了,图标显示为。)
u ScriptModeler – 配置、启动HttpGateway 的工具程序,同时也是录制脚
本的工具程序;
u HttpGateway – 模拟proxy 处理器,执行录制;
(接受用户手工配置的proxy 设置,不接受任何自动配置proxy 机制);
u TestExecuter – 真正执行测试的背景处理器;
u WebRelayDaemon –使用XML RPC 在internet 上过滤 CORBA 限制;
u Repository–测试脚本、配置和测试结果存贮目录;
u TestManager–管理测试运行的背景程序;
u TaskGroupExecuter–运行TaskGroup 的处理器。
其次,什么是性能指标收集器(即Collector)呢?这是用户定义的一组问题,
决定在测试过程中哪些性能指标需要记录。包括两种类型:
1)NT Performance Collectors 用于采集运行WinNT 或Win 2000 的主机的性能
指标.
2)SNMP Collectors 用于采集主机和其他运行 SNMP agent 或 proxy SNMP
agent 的SNMP 数据.
Collector 的设置将在下面如何录制测试脚本中介绍。
第三,如何录制测试脚本呢?
1、 安装OpenSTA 后,在“程序”中出现OpenSTA 的三个工具程序,如下图:
检查OpenSTA NameServer 状态为运行中,即图标为,
运行“OpenSTA Commander”,界面显示为下图:
2、 录制新脚本
1)鼠标点“Scripts”,通过右键菜单“New Script”->“HTTP”生成新脚本,
脚本名称缺省为NEWSCRIP(如下图);
2) 双击新脚本,打开Script Modeler 窗口,在Options 菜单中设置Browser
和Gateway,一般情况下,保持Gateway 的缺省设置 ;
3)按工具栏中的红色圆钮,自动打开指定的浏览器,输入需要录制的系统
URL, 显示被测试网站的首页内容。在登陆成功之后,执行各个既定的操
作步骤。按工具条上的方框按钮,或直接退出浏览器,可以停止脚本的录
制,这是在Script Modeler 窗口中将看到被录制下来的脚本语句。
3、生成Collector
1) 鼠标点“Collectors”,通过右键菜单生成新指标收集器,缺省为
NEWCOLLECTOR;
2) 通过browse Queries 浏览并设置需要收集的性能指标。(各个性能指标
的含义不是这篇文章所包含的内容,这里不做介绍)
4、 组成测试环境
与脚本和性能收集器同样的方法,在Tests 中新建一个NEWTEST(下图中
已将新建的Test 进行了重新命名), 将测试脚本和性能指标收集器拖到该Test
中,如下图;
5、 按工具栏中的,执行测试,测试过程中可以查看“Monitoring”页签的
内容,测试结束后,该页签为空;
6、 测试结束后,点工具按钮下方的Results 页签,显示所记录的测试结果数据,
如下图。
至此,读者对如何使用OpenSTA 这个测试工具应该有了一个大概的了解,如果需要
详细了解使用的细节,可以查看该工具的使用手册,不过是E 文的哦:)。需要下载
OpenSTA 工具的朋友可以访问网站http://www.opensta.org/,使用手册也可以在这个
网站上下载。
另外,需要注意,OpenSTA 是GUI 界面,同时也支持命令行、批处理文件,但
是,不支持使用嵌入技术(如Applets, ActiveX, Flash or javascript),以及通过HTTP/S
以外的协议访问Web Server。
下面,介绍如何在OpenSTA 的测试脚本中引入变量,并给变量赋不同值的过程。
网络应用系统一般都会有一个登陆网页,需要用户输入正确的用户名称和密码,经
过系统验证后,用户才能进入该应用系统。在使用OpenSTA 录制测试脚本时,输入
的用户名称和密码将被OpenSTA 记录在脚本中,录制完成后,可以在脚本文件中发
现如下语句:
PRIMARY POST URI"http://demosite.opensta.org/gsg-v1
HTTP/1.0"ON 2 &
HEADER DEFAULT_HEADERS &
,WITH {"Accept: application/vnd.ms-excel, application/msword,
application/vnd.ms-powerp" & "oint, image/gif,
image/x-xbitmap,
image/jpeg, image/pjpeg, */*", &
"Referer: http://demosite.opensta.org/gsg-v1", &
"Accept-Language: en-us", &
"Content-Type: application/x-www-form-urlencoded", &
"Content-Length: 22", &
"Pragma: no-cache"} &
,BODY "loginid=mike&passwd=ekim"
这里“mike”、“ekim”就是录制脚本时登陆系统所输入的用户名称和密码。
问题是在执行性能测试时,往往需要模拟很多个不同的用户同时登陆系统,观
察系统的各项性能指标。为每个不同的系统用户录制单独的测试脚本是不现实的。
那么,如何修改已录制好的测试脚本,使其在测试过程中可以模拟多个不同的虚拟
用户,而每个虚拟用户的用户名称和密码都被写入测试脚本中呢?
1、 首先,在测试脚本的Definition 部分中增加变量USERNAME、PASSWORD 的定
义:
CHARACTER*512 USERNAME ( "mike", "allan", "david" , "robert" ),
SCRIPT
CHARACTER*512 PASSWORD ( "ekim", "nalla", "divad" , "trebor" ),
SCRIPT
这里假设mike、allan、david、robert 是该系统正确的用户名称,ekim、nalla、divad、
trebor 分别是这些用户的登陆密码
(说明:OpenSTA 测试脚本分三个部分, Environment、Definition、Code)
2、 同时,在脚本的Definition 部分增加变量MY_USERNAME、
MY_PASSWORD 的定义:
CHARACTER*512 MY_USERNAME, LOCAL
CHARACTER*512 MY_PASSWORD, LOCAL
(注意,这两个变量范围是LOCAL 型)
3、 在发送登陆请求的语句“PRIMARY POST
URI"http://demosite.opensta.org/gsg-v1 HTTP/1.0"ON 2…….”之前, 添
加下列语句:
ACQUIRE MUTEX "LOGIN"
NEXT USERNAME
NEXT PASSWORD
SET MY_USERNAME = USERNAME
SET MY_PASSWORD = PASSWORD
RELEASE MUTEX "LOGIN"
其中:
AQUIRE MUTEX 命令 的含义是: 将变量USERNAME 和PASSWORD 设置为
用户名称和密码这两个变量选择值序列中的第一个值,并设置为local 形式,避免
其他虚拟用户使用这个值;
RELEASE MUTEX 命令 的含义是:释放Mutex, 其他虚拟用户可以选择序列中的
第一个值(序列中的值是被循环使用的);
这里需要解释一下MUTEX 锁定机制 的含义,是为了避免多个虚拟用户测试时,
自动从变量选择值序列中进行选择时,出现选择同一值的现象(即选择了同一个用
户的现象);
4、 将发送登陆请求的PRIMARY POST 语句中BODY 的用户名和密码替换成变量:
PRIMARY POST URI"http://demosite.opensta.org/gsg-v1
HTTP/1.0"ON 2 &
HEADER DEFAULT_HEADERS &
,WITH {"Accept: application/vnd.ms-excel, application/msword,
application/vnd.ms-powerp" & "oint, image/gif,
image/x-xbitmap,
image/jpeg, image/pjpeg, */*", &
"Referer: http://demosite.opensta.org/gsg-v1", &
"Accept-Language: en-us", &
"Content-Type: application/x-www-form-urlencoded", &
"Content-Length: 22", &
"Pragma: no-cache"} &
,BODY "loginid=mike&passwd=ekim"

,BODY "loginid=mike&passwd=ekim"
改写为:
,BODY "loginid="+MY_USERNAME+"&passwd="+MY_PASSWORD
至此,对测试脚本的修改已经完成。按照本文前面所介绍的OpenSTA 操作步骤,
设置性能测试收集器,设置虚拟用户的个数为4,开始执行测试,OpenSTA 就会模
拟mike、allan、david、robert 这4 个不同的用户同时登陆系统的情况。说到这里,
读者可能又会问,怎么验证在测试执行过程中,确实是模拟了这几个用户进行登陆
的呢?我们可以通过将所有登陆系统的用户名称打印出来的方法进行验证。
方法是,在发送登陆请求的PRIMARY POST 语句之后,添加Report 语句:
REPORT "USER ", MY_USERNAME
这样在测试执行完成后,Test Report Log 中就可以看到打印出来的登陆用户
名称。(是不是很简单?大家可以来试试)
作者在自己的测试脚本中进行实验,设置虚拟用户为3 个,在登陆请求
语句之后增加Report 语句,以下是测试结束后Test Report Log 信息
这里,“admin”、“sjcj”、“data”是被测试系统的三个用户名称。
通过上边的一系列阐述,大家对Web 性能测试工具OpenSTA 应该有了一定的了
解。如何更有效的利用这个工具,收集系统的性能指标进行性能分析,希望大家共
同探讨。

goldfeng 发表于 2005-11-2 15:15:20

太谢谢了,正在学习使用中

konglingzhen 发表于 2007-4-25 16:37:13

刚看过,赫赫。。。。upsdlkfj2
页: [1]
查看完整版本: 有高手介绍一下opensta的用法吗?