Be A Final Tester

发布新日志

  • 怎么学会使用RIATest(未来Flex GUI自动化测试工具)

    xiaoningln 发布于 2009-06-18 21:39:02

    我们先了解RIAtest工具

    RIATest是一个Flex自动化GUI测试工具,它刚刚公开发布了Beta版。InfoQ为此采访了RIATest的创造者Tigran Najaryan。 

    Najaryan首先谈到了创造RIATest的目的:

    RIATest 是一个用来对Adobe Flex 3程序进行自动化GUI测试的工具。创造RIATest的目的是为了给商业和专业开发者提供一个简单、干净的测试自动化方案,帮助他们保证产品的质量。我们在定价上非常激进,一心把测试自动化带给更多的Flex用户,而这些用户以前都负担不起其它的Flex测试自动化方案。

    说到RIATest如何工作的时候,Najaryan解释说:

    从技术上看,RIATest由两部分组成:Agent和IDE(或者命令行执行器)。Agent呆在浏览器一方,直接与被测程序打交道。Agent提供了组件查看器(Component Inspector),让你检查和监视被测程序的GUI组件及其属性。Agent还通过TCP连接与IDE相连。Agent与IDE在回放期间(IDE向 Agent发送指令并接收结果)以及录制期间(Agent把录下的动作通知给IDE)都经由这个TCP连接相互沟通。

    测试脚本是用RIAScript语言写的。RIAScript是一个简化版的ActionScript(另有些微扩展)——因此熟悉ActionScript的开发者很容易学会编写RIATest的测试脚本。

    RIATest是用什么开发的?Najaryan回答说:

    RIATest从一开始就是作为Flex 3测试自动化工具来设计的,它使用了Flex的测试自动化框架。RIATest IDE是用C++和wxWidgets库写的。RIATest Agent是用Flex 3开发的。 

    由于现在已经可以见到不少Flex测试工具,所以InfoQ请Najaryan将RIATest与其它工具比如FlexUnit作一下比较:

    RIATest作为一个自动化GUI测试工具,与单元测试等其他测试手段是相辅相成的。必须通过多种自动化测试手段才能得到最高质量的保证,自动化GUI测试和单元测试都包括在内。

    谈到如何测试连通性,如HTTP请求和SOAP连接:

    RIATest内建了按照指定条件自动或手动进行同步的功能,因此即使程序需要与远程数据源通信,RIATest也能完全胜任自动化测试的工作。QA工程师可以通过“'waitfor'”操作让测试脚本与被测程序的组件状态同步。

    最后,Najaryan给出了一段测试脚本的例子:

    RIATest Script

    查看英文原文:RIATest for Flex Released Beta Product

    http://en.wikipedia.org/wiki/RIATest

    http://www.infoq.com/news/2008/03/riatest-beta-released

    http://www.insideria.com/2009/02/getting-started-with-riatest-2.html

    下载可以官方网站下载,要是买还算便宜,相比MI等测试工具,然后我们装好RIATest2.3那就立刻开始使用它吧。

    RIATest系统需求

       使用RIATest需要下面软件:

    • Adobe Flex Builder 3 Professional
    • Adobe Flash Player 9,0,115,0 or newer
    • Microsoft Windows XP or Vista
    • Mozilla Firefox 2 or Internet Explorer 6

    例子

       RIATest包含一个展示基于Flex类的自动操作例子的项目.

       这个项目在 C:\Program Files\RIATest\samples\components.

    选择应用方案

       RIATest为你准备了两种方法: 使用 RIATest time Loader 或通过在编译应用程序时植入RIATest 代理.

       用 RIATest Loader是一个简单的方法不需用自动操作库来编译你的应用程序.不是所有的应用程序都能用time Loader 来操作. 对于多数复杂的案例(例如当你的应用程序需要HTML页面并且不用导入无格式的SWF文件) 你需要用 RIATest 代理和自动操作库植入你的应用程序.

    使用RIATest Loader

       你的SWF应用文件在服务器运行的话。你可以使用本地或者远程的RIATest Loader.

    使用本地RIATest Loader

      如果你在本地运行你的应用程序,没有特殊要求. 在创建RIATest 项目时你可以指定该项目选项为'Use local Loader'.

    使用远程RIATest Loader

      如果你通过web服务器来运行你的程序,你需要上传RIATest Loader去服务器,所以RIATest Loader和你的应用程序的URLs要来自相同的域名(否则安全策略不允许Loader去访问你的应用程序). 复制下面目录下C:\Program Files\RIATest\loader 的内容去你的web服务器目录(通常和你的主SWF程序所在的目录相同). 现在打开你的浏览器访问下面地址:

    http://your-server-name/your-directory/RIATestLoader.html?rtLoadURL=url-of-your-applicaiton.swf

    确定服务器名,路径,应用程序名字的参数正确. 如果每个设置都正确.RIATest Loader将在你的应用程序内载入和运行. 然后关闭浏览器进入RIATest 进入项目的创建.

     

    编译自动化库和静态代理

    如果决定使用静态的自动化库和代理需要执行下面步骤:

    1. 在Flex Builder 3中打开你应用程序项目.
    2. 选择Project -> Properties -> Flex Compiler.
    3. 在'Additional compiler arguments' 文本中增加下面内容:
      -include-libraries "C:\Program Files\RIATest\agent\RIATestAgent.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\libs\automation.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\libs\automation_agent.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\libs\automation_dmv.swc"

      你可能把Flex Builder 3和RIATest安装在其他目录,那么将需要更下面目录 C:\Program Files\Adobe\Flex Builder 3  和C:\Program Files\RIATest .

    4. 点击OK 保存内容关闭对话框.
    5. 编译你的应用程序.

     

    RIATest代理和Flex 自动操作库现在被植入你的应用程序中. 每次你的应用程序启动,RIATest 代理为了建立自动操作的会话将去连接RIATest工具.

    运行你的应用程序. 你将看到RIATest代理工具栏浮动在你的应用程序上. 工具栏标题将显示'为'RIATest Agent - Not connected'. 这是正常的,RIATest 代理没有连接到RIATest 工具.

    创建RIATest工程

    1. 运行RIATest工具选择 File -> New Project. 一个空工程被创建.选择 File -> Save All, 选择目录来保存你的工程, 输入工程名称点击Save..
    2. 选择 Project -> Options. 确信所以的选择项被选中. 根据你确定的程序导入方案,你有下面选择:
      A. 如果你想使用RIATest Loader 和你的SWF应用程序文件在本地,选中'Use local loader'.
      B. 如果你想使用RIATest Loader 但你的应用程序在一个web服务器上,选中'Standalone or remote loader'并且在'Application URL' 输入下面内容:
      http://your-server-name/your-directory/RIATestLoader.html?rtLoadURL=url-of-your-applicaiton.swf
      C. 如果你有包含静态编译的RIATet 代理和自动操作库的应用文件,选中'Standalone or remote loader'并且在'Application URL' 输入你的应用程序HTML文件的地址(例如: http://localhost/myapp/bin/app.html) 或者HTML文件的路径(例如: C:\My Projects\My App\bin\app.html).
    3. 选中 Run -> Launch Application. 默认浏览器将被启动,你的应用程序将被载入浏览器. RIATest 代理工具栏标题将显示'Connecting' 和'Ready' 信息.
    4. 返回RIATest tool窗口. 消息日志将显示下面内容:

      Launching C:\Program Files\Internet Explorer\iexplore.exe "C:\My Projects\My App\bin\app.html"
      Application launched. Waiting for connection from agent...
      Agent connection accepted.

      RIATest 工具标题也显示(Ready) 这样说明代理被连接和准备好,可以录制和运行action了.

     

    录制脚本

    确定RIATest 工具和代理被连接(标题都显示 'Ready'). 在RIATest 工具中选择 Project -> Add New Script. 输入新脚本的名称并保存.

    选择 Run -> Start Recording (或者点击RIATest代理工具栏上的'Record'按钮). RIATest 工具和代理的标题将显示'Recording'. 切换到你的应用程序窗口来录制你想要的内容. 注意RIATest 工具录制actions声明在测试脚本窗口.

    你可以按Ctrl-Shift 在你的应用程序点击任何元素来设置自动化确认和检查点. 当你按下Ctrl-Shift后鼠标点中组件将被高亮显示,用绿色半透明框来区别.

    你也可以使用'Inspect' 按钮检查你应用程序的用户界面组件. RIATest 代理将用户蓝色框高亮显示鼠标指定的组件, 将显示组件的类,名称和所有可用属性. 再点击组件将结束'Inspect' 模式.

    之后组件被检查你能在代理工具栏中点击'Verify'按钮. 所有的属性目录将被显示. 你可以选择任意一个你想要属性.然后点击OK一个检查点将被建立. 这个检查点将检验在选中属性中的值与当前值进行匹配.

    点击RIATest 代理工具栏的'Record' 按钮 或者选择RIATest工具 Run -> Stop Recording 来停止录制. 注意你可以在任何时间停止和重新录制. 如果你录制了错误的内容, 你可以停止录制, 去RIATest 工具, 选择不正确的actions删除, 然后重新再开始录制.

    当你完成录制你可以选择Run -> Terminate Application 关闭浏览器包括你的应用程序.

    运行测试

    在RIATest工具File -> Open Project 打开你的项目. 选择 Run -> Run Without Debugging . 浏览器将打开, 你的应用程序将被载入录制的actions和检查点将被回放.

     

    在RIATest工具中将显示回放进程的消息日志. 检查点成功通过将显示绿色信息, 失败的actions 和检查点将显示红色信息.

    回复结束后你的应用程序和浏览器将被关闭.消息日志将显示运行有多少错误和错误原因.

    注意: 如果你使用Flex 3 Beta 回放将被限制为30 actions. 请去Adobe获得Flex Builder 3 Professional license .

     

    调试测试

    如果你在运行你的测试时遇到错误,你能调试你的脚本. 开始调试选择 Run -> Run Tests . 项目脚本将正常开始运行当遇到错误时(如检查点或action失败) 脚本将被暂停错误行被高亮显示. 消息日志的最后会显示错误原因 (如: 期待值与实际值不同,检查点失败). 你可以切换到你的引用程序检查组件和他们的属性. 也可以检查你的脚本变量值(如果被使用)通过鼠标移动到变量名上.

    手动写测试脚本

    录制为我们快速创建测试脚本提供帮助. 可是有时你需要执行更多复杂的actions,如在你的应用程序中多次重复用户界面或者执行有条件的actions.

    RIATest 工具使用RIAScript. 语言来写测试脚本. RIAScript. 基于基本脚本语言. 你可以声明和赋值给变量,进行函数引用,写判断和循环方法.

    RIAtest帮助对手写脚本很有帮助。

    遗憾一:没有破解key

    遗憾二:RIAScript和ActionScript还是有些不一样

    遗憾三:对于自动化工具定义,他算是GUI加白盒自动化测试工具,上手还算容易。

    学习工具网站:http://www.vietnamesetestingboard.org/zbxe/?mid=downloadtool&listStyle=webzine&page=7&document_srl=66952&cpage=

  • QTP与QC的完美结合实现自动化测试框架-业务组件测试(转)

    shuishixingyu 发布于 2009-10-28 22:40:37

    摘要:利用QTP和QC相结合搭建功能自动化测试框架

           关键词:自动化测试    测试框架    组件

            做功能自动化测试都会不约而同的遇到一个比较棘手的问题-测试框架的搭建。这也是直接影响功能自动化测试成功与否的关键。框架做的好可以使测试事半功倍,反之轻则很难看到工作的成果重则会使整个测试失败。目前网上有很多关于测试框架的讨论,其中也有成型的测试框架,其中有很多好的思想在里边,很值得借鉴。但今天要讨论的不是网上已有的,而是HP已经为我们设计好的一个测试体系,业务组件测试。他是利用QTP与QC的完美结合组成的一个体系架构。它可以轻易实现目前比较流行的三层测试架构:脚本层,业务层,数据层相分离,为开展功能自动化测试提供一个高效、稳定、容易的测试实现。

            一.概述

            1.1业务组件(Bussiness Process Testing)简介

            业务组件是组成流程测试的基本单元,组合不同的业务组件可以实现不同的业务流程测试。如将fligt系统的登录最为一个组件,选择航班最为一个组件等。这样可以实现组件的复用,提高开发效率。

             1.2 Bussiness Process Testing的优点

            1)   相关业务人员可以在没有脚本的环境下组合业务组件,实现业务流程。

            2)   对业务人员的编程能力没有要求,业务人员只需了解系统的业务流程,不用关心具体的脚本实现。这一点也实现了业务层和脚本层的分离。

            3)   一旦某个组件开发完毕,即可在不同的流程中使用该组件,实现高可复用性,从而加快业务流程测试的速度。

            4)   明确的角色分工,业务人员负责流程的开发、组织;QTP工程师负责脚本的开发、维护以及相应函数库的开发、维护。

            5)   因为实现了脚本的复用,提高了自动化开发的效率,无形中就降低了测试过程中维护的时间和成本。

            1.3 Bussiness Process Testing的简易流程

    软件测试

            如图所示,整个过程分为2条线:第一个是由业务测试人员划分组件并组合不同的组件实现不同的流程测试;其次QTP专家负责组件的脚本具体实现并负责调试成功,上传到QC供业务测试人员调用。

            注:测试数据的组织后边介绍,以便实现三层的测试架构;此过程需要QC有Bussiness Process Testing组件许可的支持,也就是需要单独向HP购买。

            下边以QTP自带的示例程序演示整个流程的开发过程

            2.1划分组件

            本次将系统划分为:登录;选择航班并插入;打开订单;更新订单;删除订单;注销。这样划分仅为演示之用,不用在实际的测试之中。

            2.2组织业务测试流程

            本次只是用于演示,所以流程不会100%覆盖,在实际的测试过程中要达到100%的流程覆盖。本次测试流程如下:

            流程1:登录-选择航班并插入-注销

            流程2:登录-选择航班并插入-更新订单-注销

            流程3:登录-选择航班并插入-更新订单-删除订单-注销

            流程4:登录-打开订单-更新订单-删除订单-注销

            下边需要根据划分的组件来实现组件脚本的实现。

            2.3创建应用程序区域

            在开发脚本之前首先要做的是要创建一个应用程序区域。应用程序区域提供创建业务组件所需的所有资源和设置,每个业务组建都居于一个应用程序区域,并从这些应用程序区域集成这些资源和设置。在此创建一个名为“订票系统流程测试”的区域,如图所示。

            创建过程:依次选择:file-New-Function library。保存后自动上传至QC默认目录。

    软件测试

            在此也可以加载自己的函数库,对象库,恢复场景等,这样以后创建的组建都可以共享该应用程序区域的资源。同时也方便维护,这也是一个优点所在,例如一旦函数库改变在此从新加载新的函数库即可,不用在脚本理修改。总之这个应用程序区域很重要,以后所有的脚本均是基于这个区域。应用程序路径一定要加载正确,否则录制时不能生成脚本。

            2.4创建脚本

            在创建脚本之前最好在QC中组织好目录树,方便保存及调用。关于脚本的开发过程,每个人、每个公司都有自己的方法。在此源代码也没法一一贴出。所以在此只列出输入参数和输出参数,方便后边的参数化以及数据组织。本次也采用最通用的方式即对象库解决对象识别问题。脚本的开发规范以及参数命名也以我自己惯用方式。

    软件测试

    注:“-”为无相应参数。
            在QTP中创建组件脚本有2中模式:Bussiness Component和Scripted Component。区别:Bussiness Component只能见关键字视图,QC中亦可见关键字视图;Scripted Component可以看见专家视图,在QC中脚本代码不可见。一般创建后者,本次也是采用后者,方便编辑脚本,控制脚本结构。
            注意:参数一定要合理设置并对代码中的输入项做参数化与参数关联,否则测试数据传不到脚本,导致脚本运行失败。参数可以在QTP中创建,也可以在QC中创建,效果等同。
            脚本开发完保存至QC,如图:

     

            至此脚本开发完毕。也实现了脚本和业务层、数据层的脱离,现在单个组件脚本实现业务流程中的某一个功能且脚本中不会涉及具体的测试数据,从而为实现三层结构打下基础。接下来的工作就是在QC中组织需要测试的业务流程以及需要的测试数据。
            这里有一个需要注意的地方,就是在QTP创建脚本如果选择Bussiness Component类型,在“设计步骤”选项卡可以看到QTP中的关键字视图,相关人员可以像在QTP操作一样,但是看不到代码。这也是为何上边为何创建脚本组件的原因。
            2.5业务流程的组织
            业务流程的组织主要是在“测试计划”模块中实现。这的主要工作是由业务测试人员完成。规划好目录结构以后,根据需要测试的业务流程拖拽需要的组件即可。这一步和在“测试计划”中拖拽测试用例很相似,区别就是这个是组合业务流程,而且可以自动执行。组织好后的效果如图:

            需要注意的是,创建用例是请选择“BUSINESS-PROCESS”测试类型,否则组件脚本拖拽不过来。拖拽脚本是在“测试脚本”选项卡中进行,如上图。限于篇幅,在此创建目录和拖拽等动作不再详述,请参见QC的用户手册。另外,根据实际的系统,可以把组件分组,以组的形式控制流程。例如,选择如图的2到4的组件,然后选择工具栏叉号旁边的图标,即可把组件分成一组。这样可以更好的控制流程。
    至此,所有的业务流程均以实现。可以在QC中选择运行(绿色箭头),进行相关的调试。
            这里实现的是三层结构中的业务层。这里进行的业务流程组织和脚本没有任何关系,相关人员不用关心脚本如何实现,只要保证所有的流程均已覆盖即可。
            接下来就是要实现数据层的工作了,从而实现三层的测试架构。
            2.6测试数据的组织
            测试数据的组织也是在“测试计划”模块中实现。选择某一个流程,在“测试脚本”选项卡中右击要设计数据的组件,在弹出窗口中选择“迭代”,弹出组件迭代设置窗口,如图:

            在此可以根据测试需求设置组件要迭代的次数,以及每次迭代的参数值。如上图,设置了3次迭代每次迭代输入的订单信息均不相同。同时可以设置输入参数选择上一个组件的输出参数(在复选框中打勾,按提示操作即可),如下图。是流程4中的“打开订单”组件,orderNo参数使用的是“选择航班并插入”组件的输出参数。注意,此流程的“选择航班并插入”设置了三次迭代,所以“打开订单”也要对应三次迭代,否则会提示错误。


     
            在组织数据时,可以在单个组件中设置每次迭代的数据,由于组件的重用次数很多,所以这样做还是有些麻烦。解决方法就是在外部组织好数据后,批量导入。QC默认是txt文本文件,格式可以把现有参数导出,参照它给的格式设计自己数据即可。
            至此,数据层的设计也已完毕。同时也实现了测试数据和具体的业务流程相分离。
            其实,这里的数据和业务层的分离并不是很彻底,不能根据自己的想法去设计,所以还有很大的改进空间,还需要进一步研究。
            通过以上几个步骤,开发工作基本结束。以后就是需要相关的维护即可。当然,最后还是要执行测试。

    2.7执行测试
            测试的执行是在“测试实验室”中进行的。这里和操作QC执行用例很相似。也是组织目录,拖拽相应的测试流程即可,这里也不在累述。可参见用户手册执行测试用例部分。当然执行测试可以选择本机执行,也可以选择在远程机器上执行测试,但要注意要安装相应组件和设置主机。执行效果如下图:

            QC会记录每次执行的结果,包括流程中每个组件的执行状态,执行时间等信息。这也是QC的强大之处,它会给出一个很人性化的结果,方便我们后续的分析工作,以及对系统给出一个量化的指标。这一点QC做的相当完善,从需求开始到最后的缺陷分析以及测试报告,都会有一个图形的界面供我们参考,这对我们写测试报告提供了极大的方便,给我们提供了强有力的,可靠的数据支持。
            注:以上全部工作在WinXP(sp3)+QTP9.5+QC9.0环境下完成。
            三.总结
            本文只是针对业务组件测试给出了一个简单叙述,QTP以及QC的强大之处远不及这些。对于QTP和QC的其他功能本文没有提及,其他功能在自动化测试中起到的作用,是有些工具不能代替的,也许这也是现在很多公司、很多人都在学习、使用的原因之一吧!前一段时间51的调查文件就是一个很好的证明,HP(Mercury)的所有产品都是遥遥领先其他工具。当然有很多公司也有自己的测试框架,也有自己开发的测试工具。但不可否认QTP确实是一个很好的测试工具,虽然它很贵。
    需要提到的是,QTP和QC是一个开放式的架构,HP(也就是以前的MERCURY)为我们提供了很多接口,我们完全可以利用这些接口开发出自己的框架,实现三层乃至更高的框架结构。这些接口以及函数说明都能在QTP的帮助文档中找到。
            最后希望国内的测试发展越来越好,中国的软件越做越好。

  • LoadRunner常见测试结果分析(zt)

    rejoicexu 发布于 2009-03-15 18:12:18

    LoadRunner常见测试结果分析

       在测试过程中,可能会出现以下常见的几种测试情况:

      一、当事务响应时间的曲线开始由缓慢上升,然后处于平衡,最后慢慢下降这种情形表明:

      * 从事务响应时间曲线图持续上升表明系统的处理能力在下降,事务的响应时间变长;

      * 持续平衡表明并发用户数达到一定数量,在多也可能接受不了,再有请求数,就等待;

      * 当事务的响应时间在下降,表明并发用户的数量在慢慢减少,事务的请求数也在减少。

      如果系统没有这种下降机制,响应时间越来越长,直到系统瘫痪。

      从以上的结果分析可发现是由以下的原因引起:

      1. 程序中用户数连接未做限制,导致请求数不断上升,响应时间不断变长;

      2. 内存泄露;

      二、CPU的使用率不断上升,内存的使用率也是不断上升,其他一切都很正常;

      表明系统中可能产生资源争用情况;

      引起原因:

      开发人员注意资源调配问题。

      三、 所有的事务响应时间、cpu等都很正常,业务出现失败情况;

      引起原因:

      数据库可能被锁,就是说,你在操作一张表或一条记录,别人就不能使用,即数据存在互斥性;

      当数据量大时,就会出现数据错乱情况。

  • 内存泄漏,Memory Usage,Working Set

    kakamissyou 发布于 2009-06-29 23:45:08

     

      其实内存泄漏一直存在,只是开始阶段大家都只是关注功能,只处理一两条数据,这时候只关注功能的正确性。

    内存泄漏其实已经出现,只是你没有去关注他而已。如果有一个工具能够帮助我们监视内存,报告整个工作过程的内存变

    化,那qi不是很棒,有这样那样的工具,其实最棒的还是系统自身的性能监视器。

    在run里面输入perfmon即可打开。

     打开之后,将系统默认的计数器按del全部删除掉,自己来建一个。我们测产品,肯定是观察特定于某个进程的是吧,针对整个系统的没什么用。添加个计数器,性能对象选择process,范例选择你要监视的进程,那内存点用率是选哪个啊。看来看去好多啊,Bytes的,咦,这个好像是,那个也好像是,到底是哪个啊,头痛!而且计数器的说明也不通啊,中文翻译的真是zao糕,让人摸不着头脑。

      其实是有个叫workingset的计数器,就是内存占用率,选上进程和WorkingSet计数器之后,就可以在图表中看到了。咦,怎么老是在100的位置啊,这个100到底是100M还100%啊,用进程管理看下被监控内存占用量,对不上啊。真晕。

    今天有个高材生给我指点了下,这个是要cheng上此计数器的Scale值,就是比例尺啦。一直显示100%是因为比例尺

    选得太小的缘故,值一直就冲出了这个比例尺的最大值,选择一个大点的就不会了。再看下值和任务管理器里的一样。

    真棒,找着了,就是他了。

    看着出来的图表,真高兴,漂亮。终于解释通了。原来就搞不懂为什么,这部分比较费劲,而且没人知道啊。所以这个

    问题一直保留到今天才弄明白。哎,惭愧!

    那为什么要用0-100这样的刻度来表示呢,因为这个纵轴可以同时表示几个计数器

    纵坐标啊。他们的大小又不一样,有的相差又很大,怎么办啊,所以他们设计了比

    例尺以便使他们可以在同一刻度上显示。

    晕,ms,都说你设计的软件易用性最高,看来还是只有在你们ms工作过的人才知道啊

    晕!

    另外一个小问题顺便附上下,看图表中的数据只是一段时间内的最新值,并不能保留全过程的。这样测试起来意义不是

    很大。从网上搜了下。新建个计数器即可。不过不是在图表里面,在性能和日志警报下面计数器。

    右键,新建日志设置,输入个有意义的名称,再按如上的方法选择计数器,在日志文件选项中,选择二进制文本文件

    (逗号分割)其实这个格式就是excel的csv格式,方便=会,我们用生成的数据建图表。

    计划选择手动,启动被测程序,准备执行case,选中新建的计数器点上方的启动按钮,执行case的操作,系统将为

    您每隔15秒钟取一次内存值,记录在csv文件中,操作完毕,点停止即可。

    然后到systemdriver:\PerfLogs\去找便有了。然后用插入图表作一下。

    出来的结果很漂亮,也不比LR的差嘛。

  • WebService性能测试研究(原创)

    junqinghuang 发布于 2009-06-28 12:21:26

    WebService性能测试研究

    黄进青 2009-3-31

    1 概述

    在某项目中,遇到手机客户端与服务器端交互的性能测试问题,其实现方式为手机客户端与服务器端通过webservice进行交互,如下:

    2 性能测试策略

    使用工具模拟多用户进行webservice在手机客户端和服务器端的交互。

    3 测试工具

    LoadrunnerSoupUI

    4 Loadrunner进行webservice测试

    4.1   访问url,将网页保存为wsd文件

    http://10.192.17.40/PanasonicQR/MobileService/UploadInventoryService?wsdl

    4.2   新建脚本

    4.3   问题

    按照上面的步骤执行脚本,发现有错,提示信息如下:

    该问题暂时无法解决,需要再进一步的研究,现用soap_request函数实现webservice的测试。

    4.4   实现webservice测试

    使用web_add_header(用户添加webservice头)、soap_request(用户向服务器发送webservice请求)、lr_convert_string_encoding(用于将webservice请求的XML转换为UTF-8格式,必须要转换为UTF-8格式,否则在请求的XML中如果含有中文字符的话将会请求失败)、和lr_eval_string(用于向soap_request函数传递转换后的UTF-8格式参数值)函数实现webservice测试,代码如下:

    Action()

    {

    int rc = 0;

    unsigned long converted_buffer_size_unicode = 0;

    char *converted_buffer_unicode = NULL;

    char *strnew = NULL;

     

    web_add_header("SOAPAction",

                  "\"\"");

    web_add_header("User-Agent",

                  "Jakarta Commons-HttpClient/3.1");

    web_add_header("Content-Type",

                  "text/xml;charset=UTF-8");

     

    strnew=  "SOAPEnvelope= <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.qr.ufmobile.cn/\">   <soapenv:Header/>   <soapenv:Body>      <web:uploadException><arg0>{NewParam_1}</arg0><arg1>number</arg1><arg2>有实物无帐</arg2><arg3>该产品没有入账</arg3><arg4>77804179</arg4><arg5>huangjq</arg5><arg6>96</arg6></web:uploadException></soapenv:Body></soapenv:Envelope>";

     

    rc = lr_convert_string_encoding(strnew,

           LR_ENC_SYSTEM_LOCALE,

           LR_ENC_UTF8,

           "new");

     

    //上传异常盘点信息

    soap_request("StepName=login",

    "URL=http://10.192.17.40/PanasonicQR/MobileService/UploadInventoryService",

                  lr_eval_string("{new}"),

                  "Snapshot=t1.inf",

                  "ResponseParam=result",

                  LAST);

           return 0;

    }

    4.5   日志查看

    Run-time中设置Log显示方式,显示更多的日志,以便追踪脚本运行状况。

    4.6   模拟多用户并发测试

    LoadrunnerWebservice测试licenseAEAMAUIK-YAFEKEKJJKEEA-BCJGI

    缺点:该license最多只支持100个用户并发测试。

    5 SoupUI

    5.1  新建项目

    项目对应url格式为:

    http://10.192.17.3/PanasonicQR/MobileService/UploadInventoryService?wsdl

    5.2 运行方法,提交请求

    5.3Testsuite

    5.4    Loadtest

    通过线程数虚拟多个用户进行测试。

     

    (说明:本文章为本人原创,如需转载请注明出处,谢谢!)

Open Toolbar