基于字符终端的行业应用系统性能测试脚本方案

Crystal ·
更新时间:2024-11-14
· 838 次阅读

  一、综述

  对于性能测试工程师来说,大家比较熟悉的是通过Loadrunner对B/S系统进行性能测试。但是目前很多行业应用仍然采用的是传统的C/S模式,那么在字符终端模式下的性能测试该如何开展呢?用什么方法呢?使用什么协议呢?围绕这些问题及结合相关的项目经验,笔者初步总结形成以下的方案。

  二、性能测试脚本方案

  1、使用Terminal Emulation (RTE)(字符终端)协议的方案

  使用过Loadrunner做过web系统性能测试的测试工程师都知道,Loadrunner通过录制用户和界面的交互操作自动生成虚拟用户脚本。但是现在我们面对的系统是字符终端类型,如何才能做到像测试web系统那样方便地得到测试脚本?那么我们应该选择Terminal Emulation (RTE)协议。

  1)录制前必须设置Recording Options

  由于RTE协议录制时是依靠光标和坐标进行定位的,所以在“RTE”选项卡中,必须勾选Cursor和Prompt,取消勾选X-System(IBM only)(如图一)。

图一

  2)由于国内大部分银行使用的是中文系统,而一个汉字是两个字节,所以在测试中文,日文,韩文系统时,应该在“Configuration”选项卡中,选择“Character Set”为“DBCS”。如果不选该项则在录制时中文字符将会显示乱码(如图二)。

图二

  3)字符终端设置

  点击“Start Record”按钮,系统弹出LR自带的终端仿真器,在菜单栏选择“Terminals”,在下拉框中选择“Setup”,在弹出的对话框中,选择“Emulation”选项卡,设置终端类型为“VT 220-8”(具体配置根据不同系统有变化)(如图三)。

图三

  选择“General”选项卡,设置“UPS Set:Chinese(Simplified)”(如图四)

图四

  4)脚本的录制和优化

  设置完成后,可以根据业务流程录制测试脚本。录制脚本前要先熟悉整个流程,以免在录制过程中录入大量不必要的操作步骤(由于RTE协议是记录屏幕的光标和坐标来定位的所以会记录一些不必要的操作),录制完成后通过回放脚本来判断脚本是否正确,RTE协议在回放时会自动调用自带的终端仿真软件,完全按录制的步骤播放(类似QTP做自动化功能测试)。

  5)关于RTE协议中有些键不起作用的解决办法

  如果录下来的脚本中<ESC>键是:TE_TYPE("<K-ESCAPE>"),(作用是发送<ESC>键指令),但在脚本回放到这一步后,是走不下去,达不到要到的游标点,如果可以肯定脚本正常,出现这种情况怎么解决呢?换一种思路:可以用“SOCKET”协议来录制脚本,看看在SOCKET中这些功能键(组合键)的指令是什么,然后把这些十六进制的指令拷贝过来替换。如<ESC>键,在“SCOCKET”协议中发送指令为"x1b",所以把脚本中TE_TYPE("<K-ESCAPE>")直接替换成TE_TYPE("x1b")可以了。其他类似的问题,可用同样的方法来解决。

  2、使用Tuxedo协议的方案(如图五)

图五

  如图我们初步了解到Tuxedo作为中间件,主要是通过接受客户端发送的报文,服务器端程序对发送的报文进行处理并返回结果的过程。如果有前台的客户端程序那么我们可以通过录制在客户端上的操作进行性能测试脚本的开发,但是通过了解知道测试的项目是Tuxedo中间件,并且没有客户端程序,因此不能使用工具录制脚本时,手中只有一些数据(比如服务器报文等等)的时候,我们只有通过手工编写测试脚本。

  通常编写Tuxedo脚本的工作分为三个重要部分。

  1)脚本调研部分

  A.了解服务器端Tuxedo版本,本地控制机安装Tuxedo客户端,配置环境变量;

  B.了解WSL访问方式(IP:Port);

  C.了解开发使用的Tuxedo服务名、数据缓冲类型(如CARRAY、FML32等)、缓冲区长度(如1024*1024*3);

  D.了解这个缓冲区类型的缓冲结构(包括哪些字段、这些字段的属性(数据类型、数据长度等),以及这些字段要放置什么数据,是任意数据还是指定的死数据);

  E.了解报文(报文长度、内容、详细信息;哪些数据需要做参数化;调研报文的格式,是否可以通过在脚本中组装报文,是否可以通过从报文文件中获取报文[从文件中读取的报文不能做参数化处理])

  F.了解报文发送后服务器返回的数据内容、长度等,用作在脚本中判断事务是否成功。

  2)脚本编写部分

  A.在脚本开头书写脚本详细描述,也是脚本的名称、脚本语言、作者、脚本编写时间。

  B.编写Action_init初始化脚本,设置Tuxedo端口。

  C.编写Action中的交易脚本,通过在Action中的脚本模拟一个完整的客户端发送数据的过程。

  ● 首先进行判断是否初始化成功

  ● Lrt_tpalloc分配缓冲区空间

  ● 通过编程组装报文

  ● 发送lrt_tpcall请求

  ● 判断返回的信息是否正确

  ● 使用lrt_tpfree释放申请的请求和应答buffer空间

  3)脚本调试部分

  调试对脚本来说是十分重要的一部分,手工编写完成脚本后,必须验证脚本。运行脚本对不同的日志提示进行相应的调试即可,可以通过设置断点(F9),单步执行(F10),增加日志函数等方法调试脚本。

  4)补充说明

  手工编写脚本是一项技术性要求很强的工作。尽管通过纯手工编写的脚本也对服务器施加了压力,但是它忽视了客户端的处理逻辑。在尽量模拟真实环境中用户操作的原则下,优先考虑使用RTE协议模拟用户的操作。如果仅仅是为了对服务器进行加压,那么选择Tuxedo协议进行测试脚本的开发将会有更好效果。



系统 性能测试 性能 测试脚本 脚本 测试 字符

需要 登录 后方可回复, 如果你还没有账号请 注册新账号