基于Loadrunner的上线基础数据解决方案V5.0-Oracle EBS技术文档_第1页
基于Loadrunner的上线基础数据解决方案V5.0-Oracle EBS技术文档_第2页
基于Loadrunner的上线基础数据解决方案V5.0-Oracle EBS技术文档_第3页
基于Loadrunner的上线基础数据解决方案V5.0-Oracle EBS技术文档_第4页
基于Loadrunner的上线基础数据解决方案V5.0-Oracle EBS技术文档_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Loadrunner的上线基础数据解决方案PAGE2内部资料:仅供汉得使用基于Loadrunner的上线基础数据解决方案 内部资料:仅供汉得使用 PAGEi基于Loadrunner的上线基础数据解决方案Author: 王海军CreationDate: 2012-9-30LastUpdated: 2015-11-10Version: 5.0文档控制更改记录DateAuthorVersionChangeReference2012-09-30EricWang1无之前版本2012-10-02EricWang2文档范围扩展为基础数据解决方案2012-10-09EricWang3增加了普通错误的处理方式2012-10-19EricWang4增加了对socketmode的数据录入介绍(chapter2&chapter9)2015-11-10Tingting.Wang5进行整合梳理查阅人NamePosition分发CopyNo.NameLocation文档说明本文档主要介绍了loadrunner针对ERP的Form和web两种界面的据结构导入,对上线基础数据的高效导入提供思路。本文档所针对的录制环境为win7+R12(Serverletmode)+loadrunner11。网络资源/testtools/HPloadrunner版面HPloadrunner原文论坛Someotherforeignwebsites目录TOC\o"1-4"\h\z\u文档控制 iiChapter1 loadrunner简介 11.1loadrunner简介 11.1.1loadrunner简介 11.2loadrunner脚本构成 21.2.1Vuser_init 21.2.2action 21.2.3Vuser_end 21.3录制环境简介 21.3.1录制环境简介 2Chapter2 录制登陆ERP的脚本 32.1新建Form导入工程 32.1.1打开Loadrunner 32.1.2选择录制协议(serverletmode&socketmode) 42.1.3设置录制参数 52.1.3补充说明 62.2录制前设置 72.2.1录制选项设置 72.3登陆脚本录制 92.4脚本修改 112.4.1如果EBS是serverletmode进行录制,则需要进行如下脚本修改: 112.4.2如果EBS是socketmode进行录制 122.5脚本replay 122.6小结 12Chapter3 行结构数据的导入 133.1简介 133.2录制前的准备 133.2.1分析界面 133.2.2哪些操作需要循环? 143.3脚本的录制 143.3.1Vuser_init脚本录入 143.3.2action脚本录入 143.3.3vuser_end脚本录入 153.4参数和循环的设置 153.4.1如何设置参数化选项? 153.4.2如何设置循环次数? 173.5脚本的完成 17Chapter4 头行结构界面的分类 184.1本章简介 184.2头行结构的分类 184.2.1“一对一”的头行结构 184.2.2“一对多”的头行结构 194.3关系型数据库数据的唯一结构(行结构) 204.3.1由关系型数据库发散开去 204.3.2多层嵌套关系的变通实现 20Chapter5 C语言控制RadioButtonGroup的输入 215.1本章简介 215.1.1简介 215.2录制前的准备 215.2.1分析界面 215.3脚本的录制 225.3.1Vuser_init脚本录制 225.3.2action脚本录入 225.3.3vuser_end脚本录入 235.4参数和循环的设置 235.4.1测试数据说明 235.4.2参数化的设定 235.4.3循环的设定 255.5脚本的修改 255.6脚本的完成 26Chapter6 头行结构界面的数据导入 276.1本章简介 276.2录制前的准备 276.2.1分析界面 276.3区域数据的导入(头) 286.3.1脚本的录制 286.4货位数据的导入(行) 286.4.1流程分析 286.4.2脚本的录入 29Chapter7 几个疑难问题的解决 307.1本章简介 307.1.1简介 307.2 窗口名称动态变化 307.2.1问题描述 307.2.2问题解决办法 317.3 Grid界面的数据录入 317.3.1问题描述 317.3.2问题解决办法 317.4跨环境登陆脚本的录入 327.4.1问题描述 327.4.2问题解决办法 32Chapter8 web界面的数据导入 338.1本章简介 338.1.1简介 338.2web界面数据导入 338.2.1选择协议 338.2.2录制参数的设置 348.2.3脚本录制 358.2.4脚本修改 368.2.5设置参数替代和迭代次数 36Chapter9 基础数据解决方案 379.1本章简介 379.2三个主要问题 379.2.1基础数据整理部分的三个主要问题 379.3六步解决方案 379.3.1解决上述问题的六个步骤 379.3.2步骤一:制作loadrunner数据导入模板 389.3.3步骤二:录制基础数据脚本 389.3.4步骤三:收集并整理基础数据 399.3.5步骤四:将基础数据整理成loadrunner数据导入模板 399.3.6步骤五:在目标环境导入基础数据 399.3.7步骤六:数据校验 399.4小结 40Chapter10 总结 4110.1本章简介 4110.1.1简介 4110.2对界面开发的指导意义 4110.2.1级联LOV的界面设计 41Chapter11 附录 4211.1Q&A 4211.1.1问题:Windoworobjectisdisabled 4211.1.2问题:csv参数中包含comma 4411.1.3问题:ifErrorexpired(5) 4611.1.4问题:loadrunner记录不到脚本 4611.1.5问题:Windoworobjectisnotdisplayed 4711.1.6问题:职责找不到 4811.1.7问题:服务器是socket传输协议 4811.1.8问题:iteration数值设置 50Chapter

1 loadrunner简介本章主要介绍loadrunner的原理1.1loadrunner简介1.1.1loadrunner简介问:Loadrunner是什么?答:Loadrunner是一款压力测试工具;问:Loadrunner是通过何种原理进行压力测试?答:Loadrunner是通过脚本来模拟用户在终端(web页面或应用),来产生虚拟用户访问。在Loadrunner的压力测试模块,可以同时并发大量(可指定)的虚拟用户,同时进行预录制的脚本操作,直接与server进行交互,对sever产生大量的负载。通过调节并发用户数,来查看系统能承受的压力负载情况。具体指标依照不同性能需求而定。 问:听说Loadrunner可以用来导数据?答:答案是肯定的。Loadrunner可以录制用户在web页面的脚本,事后运行脚本可模拟用户操作,因此,如果我们录制的脚本是数据录入的,那么我们只要在脚本录制后对其进行简单修改,通过reply和参数化替代,即可用来向系统中导数据。问:用loadrunner导入数据的时候,是否会和form录入一样有数据验证?答:有。因为loadrunner运行的脚本是通过form界面录制的,二者与server交互的原理均是一样的。而Form/server架构看似是C/S架构,实则是B/S架构。数据验证均是在server端进行,这也是为什么我们做客户化开发时,要遵循在Form上仅仅是事件触发,在server端进行数据验证的一个重要原因。问:作为功能顾问,为什么要学这种工具?答:1.导数据;2.压力测试。 问:我还有其他问题,怎么办?答:百度或者谷歌去。上述三个问题,让你了解Loadrunner的基本作用和原理,如果想了解更多,互联网无疑是最好的工具。1.2loadrunner脚本构成Loadrunner脚本主要由以下三个部分组成:Vuser_init、action、Vuser_end。下面将分别介绍这三者的含义和用途。1.2.1Vuser_initVuser_init是一个脚本的初始化部分,何为初始化部分?初始化就是在正式导数据或者模拟操作前,需要进行的系统操作。由于针对ERP的操作均需要登陆系统后,进入相应的界面,才能进行操作,那么,“登陆系统进入目标界面”这就是一个初始化过程。1.2.2actionAction是脚本中的主体,是录制数据导入的脚本部分。是系统登录之后,在目标数据导入界面导入一条完整数据的界面操作。在运行脚本录制的过程中,通过对该部分设置循环,即可自动运行多次实现脚本的导入。1.2.3Vuser_endVuser_end是脚本中结束的部分,一般是录制数据导入完成后的推出系统操作。Loadrunner脚本主要由上述三部分构成,可理解为“登陆系统”、“导入数据”和“退出系统”三部分组成。1.3录制环境简介1.3.1录制环境简介客户端操作系统:Win7;Oracle版本:R12;EBS通信模式:Serverletmode及socketmode;Loadrunner版本:11。下载地址:/us/en/software-solutions/loadrunner-load-testing/1.3.2数据库设置需要开启权限UPDATEfnd_nodesnSETn.server_id='OFF'--'SECURE'WHEREn.node_name='AUTHENTICATION';Chapter

2 录制登陆ERP的脚本本章通过录制一个简单的ERP登陆脚本,来讲解loadrunnerVuser_init部分脚本的录制操作。在每个步骤中,将详细介绍录制参数的含义。2.1新建Form导入工程2.1.1打开Loadrunner打开Loadrunner11,选择“creat/EditScripts”。2.1.2选择录制协议(serverletmode&socketmode)我们需要根据EBS的通信协议模式来决定选择何种协议进行脚本录制,EBSForm共分为两种形式:Serverletmode及socketmode。(具体这两种模式的区别,可以百度或谷歌。本文档主要讲解如何进行数据录入。)Serverletmode:如果我们的form登陆URL类似下面的,即网址后紧跟的参数为forms,则该EBS就是使用的serverletmode。:8005/forms/frmservlet?play=&record=names&lang=ZHS&env=NLS_LANG='SIMPLIFIED+CHINESE_AMERICA'+FORMS_USER_DATE_FORMAT='DD-MON-RRRR'+FORMS_USER_DATETIME_FORMAT='DD-MON-RRRR+HH24%3AMI%3ASS'+NLS_DATE_LANGUAGE='NUMERIC+DATE+LANGUAGE'+NLS_SORT='BINARY'+NLS_NUMERIC_CHARACTERS='.,'对于此种情况我们就选择oracleapplication11i协议进行录制。socketmode:如果我们的form登陆URL类似下面的,即网址后面紧跟的参数为OA_HTML,则该EBS就是使用的socketmode。:8099/OA_HTML/frmservlet?play=&record=names&lang=ZHS&env=NLS_LANG='SIMPLIFIED+CHINESE_AMERICA'+FORMS_USER_DATE_FORMAT='DD-MON-RRRR'+FORMS_USER_DATETIME_FORMAT='DD-MON-RRRR+HH24%3AMI%3ASS'+NLS_DATE_LANGUAGE='NUMERIC+DATE+LANGUAGE'+NLS_SORT='BINARY'+NLS_NUMERIC_CHARACTERS='.,'对于此种情况,我们选择oracleNCA协议进行录制。操作截图:进入VirtualUserGenerator界面,点击“新建”按钮,选择需要录制需要的协议。2.1.3设置录制参数Recording必输参数界面:参数说明:Applicationtype:需要录制的应用类型,有两个选项,一个是windows本地程序,一个是互联网应用,我们选择互联网应用。Programtorecord:录制脚本的程序,我们选择使用IE浏览器,在win7下就是IE9.0.URLAddress:因为我们录制的是互联网应用,需要填写录制的URL。这里,直接输入EBS的form界面的网址来进行输入。该参数可以在下面界面的URL栏中找到:由于EBSform的通信mode不同,他们的form打开的URL也不同,根据不同的URL进行选择:Serverletmode::8005/forms/frmservlet?record=names,问号后面的参数是针对form界面的配置参数,包含了语言等参数,如果要进入中文的form环境,则需要使用加上下列参数的网址::8005/forms/frmservlet?play=&record=names&lang=ZHS&env=NLS_LANG='SIMPLIFIED+CHINESE_AMERICA'+FORMS_USER_DATE_FORMAT='DD-MON-RRRR'+FORMS_USER_DATETIME_FORMAT='DD-MON-RRRR+HH24%3AMI%3ASS'+NLS_DATE_LANGUAGE='NUMERIC+DATE+LANGUAGE'+NLS_SORT='BINARY'+NLS_NUMERIC_CHARACTERS='.,'Socketmode::8099/OA_HTML/frmservlet?record=names,问号后面的参数是针对form界面的配置参数,包含了语言等参数,如果要进入中文的form环境,则需要使用加上下列参数的网址::8099/OA_HTML/frmservlet?play=&record=names&lang=ZHS&env=NLS_LANG='SIMPLIFIED+CHINESE_AMERICA'+FORMS_USER_DATE_FORMAT='DD-MON-RRRR'+FORMS_USER_DATETIME_FORMAT='DD-MON-RRRR+HH24%3AMI%3ASS'+NLS_DATE_LANGUAGE='NUMERIC+DATE+LANGUAGE'+NLS_SORT='BINARY'+NLS_NUMERIC_CHARACTERS='.,'WorkingDirectory:工作文件夹,默认即可。RecordintoAction:表示需要将动作录制到哪个section中,可选Vuser_init、action和Vuser_end,可根据需要选择:如果是需要录入初始化信息,则选择Vuser_init。2.1.3补充说明说明:问:何为数据传输协议?答:协议是网络传输数据的一种标准。这里选择某种协议,就会决定你将使用何种协议进行脚本录制,以及使用何种协议进行脚本的reply(运行脚本时所基于的协议)。问:在这里我们选择何种协议?答:针对oracleform界面的数据导入,我们根据EBS的通信模式进行选择,serverletmode,我们选择oracleapplication11i;如果是socketmode,我们选择oraclenca协议。2.2录制前设置在录制之前,需要对录制选项进行设置:2.2.1录制选项设置PortMapping设置:大图:Correlation设置:上述两点设置完成之后,点击“StartRecording”界面的的“OK”按钮,即可开始进行脚本的录制。Recordscript设置:2.3登陆脚本录制我们需要将登陆脚本录制在Vuser_initsection中,点击OK,开始录制;直接进入form界面,登陆系统:登陆系统,选择职责,选择组织,进入到数据录入目标界面:Loadrunner脚本记录,在进行脚本录入的时候,我们可以看到在操作的同时,该软件会不断的记录操作并生成脚本:结束录制:点击该按钮,即可停止录制。2.4脚本修改2.4.1如果EBS是serverletmode进行录制,则需要进行如下脚本修改:在R12中,只能通过Oraclewebapplication11i的方式录制和运行脚本,录制脚本之后,更新登陆系统的程序段vuser_init中的web_concurrent_start(NULL);web_url("lservlet;jsessionid=c0a8000856278fe2b7b526604585b11a98f9ec0f459c.e38Lb3aObxqLc40TahmQbhqNbhb0","URL=http://xxx:8011/forms/lservlet;jsessionid=c0a8000856278fe2b7b526604585b11a98f9ec0f459c.e38Lb3aObxqLc40TahmQbhqNbhb0?ifcmd=getinfo&ifhost=***&ifip=*****","Resource=1","RecContentType=application/octet-stream","Referer=","UserAgent=Mozilla/4.0(WindowsXP5.1)Java/1.6.0_07",LAST);将上段程序更改为web_concurrent_start(NULL);web_url("lservlet;jsessionid=","URL=http://xxx:8011{NCAJServSessionId}?ifcmd=getinfo&ifhost=***&ifip=*****","Resource=1","RecContentType=application/octet-stream","Referer=","UserAgent=Mozilla/4.0(WindowsXP5.1)Java/1.6.0_07",LAST);2.4.2如果EBS是socketmode进行录制无需修改脚本2.5脚本replay点击replay按钮,即可针对刚才录制的脚本进行回放:回放过程中,有可能会出现问题,请重新核对是否按照本文档正确设置。如果本文档未提及,请自行解决。2.6小结至此,一个最简单的脚本就录制完成了。通过这个例子,我们可以看到loadrunner的工作过程,在体会到它是如何工作的同时,可以多了解一下该软件的工作原理。本章我们还介绍了针对serverletmode和socketmode两种模式下,如何进行脚本的录制。通过后面的实践,我们可以知道,两种协议的区别,仅仅存在于用户登录部分。即:对于serverletmode和socketmode两种情况下的界面,我们分别用oracleapplication11i和oraclenca协议进行录入,只有用户登录部分(vuser_init)不同,后续的界面操作记录的脚本均相同。下面几章会介绍如何针对EBS进行数据导入脚本的录制和设置。Chapter

3 行结构数据的导入本章介绍用loadrunner导入货位。3.1简介一个完整的数据导入脚本,除了ERP的登陆脚本之外,还包含action和Vuser_end部分,其中action部分是数据导入的主体部分。本章节,我们介绍针对一个简单的行结构如何进行脚本录制。后续章节中,我们将针对各种界面进行录制的介绍。3.2录制前的准备3.2.1分析界面货位界面:可以看到,货位界面是一个纯粹的行结构界面。根据前面的介绍,我们知道,录制货位的脚本主要包含以下几步:录制Vuser_init部分:录制从系统登陆到货位界面的操作;录制action部分:完整录制“一个货位录入系统”的所有操作,这是用于录制脚本循环的主体;录制Vuser_end部分:录制关闭界面、退出系统的操作。3.2.2哪些操作需要循环?我们可以看到,WMS的货位录入界面,是一个简单行结构界面。那么需要循环的其实就是每一条货位数据的录入操作。请参考下面的循环图:a.登陆b.到达录制界面,F11+F4c.点击“新建按钮”d.a.登陆b.到达录制界面,F11+F4c.点击“新建按钮”d.退出EBS3.3脚本的录制我们知道脚本总共分为三部分:Vuser_init、action、Vuser_end。下面从这三个角度来考虑如何针对这三个部分进行录入。3.3.1Vuser_init脚本录入登陆ERP并进入目标界面的操作录制详见Chapter2。即上图的a、b、c三个步骤。不要忘记对相应的地方需要做修改。记住要将登陆部分与重复操作部分区分开,这样有利于脚本的跨环境重用。因为只有这两个section耦合度低,才可以在新环境使用时,只录入vuser_init的section,就可将脚本重用。3.3.2action脚本录入登陆系统之后,进入到目标界面,进行数据录入。即上图的1~4的步骤。注意,在步骤c录制结束时,就需要将录制目标section更改为action,即在action中录制数据录入的操作:3.3.3vuser_end脚本录入在完整录入完一条货位之后,即完整录入1~4的所有步骤。将目标section更改为Vuser_end,对退出系统进行录制。推出系统的录制是为了关闭与服务器通信的session,及时释放资源。3.4参数和循环的设置脚本目前录制的仅仅是针对单条数据的录入,需要通过参数化和循环的设置,来实现批量数据的录入。下面,将分别详细的介绍这两点。3.4.1如何设置参数化选项?Keyparameter的设置:在录制脚本之后,用参数代替要输入的数据,下面的locatorname是第一个参数,是一个keyparameter,按照图中进行设置。对于界面上可留空的字段,我们建议在loadrunner基础数据模板中也要有该字段,如果是空值,留空即可。如果非空,可按基础数据填充。注:此处选择“序列”、“每次循环”为参数,其余的参数如有兴趣,可以去百度,由于两种参数组合太多,这里不再一一赘述。非keyparameter的设置:其余参数按照下图设置:最后将代码中的参数用形参替代(选中原录制时的变量,右键选择替代为已有的形参)。3.4.2如何设置循环次数?设置循环次数:3.5脚本的完成在设置完参数替代和迭代之后,一个行数据录入的脚本就算完成了。下次如果要在正式环境中录入数据,只需要重新录制Vuser_init部分的登陆操作即可。Chapter

4 头行结构界面的分类本章介绍头行结构的分类。4.1本章简介通过第二章的介绍,我们可以知道,界面的数据结构对于我们设计Loadrunner的脚本录制非常重要。我们可以发现,对于行结构的数据来说,制作脚本是非常容易的,但是oracleEBS中除了行结构外还有大量的头行结构界面,如何对头行结构的界面进行数据导入呢?本章,我们会先对OracleEBS的头行结构做一个简单的分类,然后对于每个分类,我们详细的探讨,用何种方案顺利完成数据的导入。4.2头行结构的分类我们分析OracleEBS中的头行结构,按照头行的对应关系可分为两种:头行关系:一对一;头行关系:一对多;4.2.1“一对一”的头行结构举例说明:头行结构为“一对一”关系的界面:物料的定义其实就是一个典型的“一对一”的头行结构。因为虽然一个物料有多个属性,但是每个属性的数据结构均是唯一的。这类数据,其实本质上是一种行结构数据;从数据表的角度,其实每条物料数据,实际上就是一个行记录。4.2.2“一对多”的头行结构举例说明:头行结构为“一对多”关系的界面:WMS中将货位分配给区域,是典型的“一对多”的头行结构;销售订单、采购订单等的头行结构,也是属于这种一对多的关系。这类最大的特征是,行的数据结构基本是相同的。下面分别是区域的头行界面、销售订单的界面:在数据表中,区域数据是由两个表存储:区域数据头表;区域数据行表,即区域所包含的货位的数据表。4.3关系型数据库数据的唯一结构(行结构)4.3.1由关系型数据库发散开去事实上,我们在前台看到的所有数据在后台表中,均是以二维表的形式进行存储,头行的关联关系是通过行表中的某些字段记录头信息,实现关联。因此,所有数据均可以转为二维的行结构数据。目前的数据库模型还是关系型数据库,在后台就是一张张二维表,每列是一个字段,每行是一条记录。所以可以大胆的推测,只要是关系型数据库的,且loadrunner支持其应用所使用的协议,均可以转化成行结构,进行数据的导入。4.3.2多层嵌套关系的变通实现到目前为止,我们知道,loadrunner可以通过设置参数替换和迭代的方式实现批量数据的导入,但是如果是头行结构,逻辑上来看是一个嵌套循环。Loadrunner支持C语言编程,可实现多层循环,但是增加了脚本制作的难度,我们可以逐层分解,用loadrunner的单层迭代即可实现导入。下面简单说明头行结构录入的方式:我们可以看到在此头行结构中,头是区域,行是货位。我们可以先批量录入区域,后面再批量录入货位与区域的关联(可以把区域看做是货位数据表中的一个属性)。Chapter

5 C语言控制RadioButtonGroup的输入本章介绍本质为行结构的头行结构的数据导入(或修改),重点介绍利用C语言控制结构。5.1本章简介5.1.1简介本章以主组织物料的数据为例,来介绍如何结合C语言编程,控制物料属性的导入。本章的重点是说明通过C语言来控制特定属性控件的导入(如:radiobuttongroup),为了突出重点,本案例操作是在系统已有的物料基础上,对radiobutton属性进行修改。5.2录制前的准备5.2.1分析界面主组织物料界面:因为每个物料的属性并不一样,需要根据基础数据来实时判断选择哪些属性。比如:有下列三种物料,但是对于“转换”的值却不一样。metiarialconvert100200138311R16400501210040004463注:1表示选择标准; 2表示选择特定物料; 3表示选择二者。可以看出,对于这种情况,需要根据源数据模板实时判断。正好loadrunner也提供基于C语言的编程,可以通过C语言解决此问题。5.3脚本的录制5.3.1Vuser_init脚本录制登陆ERP并进入目标界面的操作录制详见Chapter2。5.3.2action脚本录入登陆系统之后,进入到目标界面,进行数据修改操作。查找出一个系统已有物料,录制分别选择“转换”的三种值的脚本,然后再在后面利用C语言对其进行结构控制。下面是录制的脚本:nca_button_set("MTL_SYSTEM_ITEMS_ALLOWED_UNITS_LOOKUP_CODE_MIR_STANDARD_0",1);//选择“标准”nca_button_set("MTL_SYSTEM_ITEMS_ALLOWED_UNITS_LOOKUP_CODE_MIR_ITEM_SPECIFIC_0",1);//选择“特定物料”nca_button_set("MTL_SYSTEM_ITEMS_ALLOWED_UNITS_LOOKUP_CODE_MIR_BOTH_0",1);//选择“两者”注意:在Vuser_initsection结束的时候,就需要将录制目标section更改为action,即在action中录制数据录入的操作。5.3.3vuser_end脚本录入在完整录入完一条货位之后,将目标section更改为Vuser_end,对退出系统进行录制。推出系统的录制是为了关闭与服务器通信的session,及时释放资源。5.4参数和循环的设置5.4.1测试数据说明脚本目前录制的仅仅是针对单条数据的修改,需要通过参数化和循环的设置,来实现批量数据的录入。下表中就是进行测试的模拟数据:metiarialconvert100200138311R16400501210040004463注:1表示选择标准; 2表示选择特定物料; 3表示选择二者。5.4.2参数化的设定选择loadrunner数据模板:设置选项:Material:Convert:5.4.3循环的设定因为只有三条数据,我们只要设置action循环数量为3.5.5脚本的修改由于不同的物料,可能需要设置的“转换”属性不同,而RadioButtonGroup与LOV不同,不可以直接进行输入,需要手工点选。因此我们采用C语言的控制结构,来实现不同物料的不同属性设置,尤其是针对radiobutton类型的属性控件。下面是修改后的actionsection的代码:Action(){char*convert[100];//声明字符串变量 strcpy(convert,lr_eval_string("{convert}"));//获取loadrunner数据模板中本次迭代的参数值 nca_obj_type("MTL_SYSTEM_ITEMS_INVENTORY_ITEM_MIR_0",'z',0); nca_edit_set("MTL_SYSTEM_ITEMS_INVENTORY_ITEM_MIR_0","{material}"); nca_obj_type("MTL_SYSTEM_ITEMS_INVENTORY_ITEM_MIR_0",'z',MODIF_CONTROL); lr_think_time(9); //判断勾选哪个属性 if(!strcmp(convert,"1")){ nca_button_set("MTL_SYSTEM_ITEMS_ALLOWED_UNITS_LOOKUP_CODE_MIR_STANDARD_0",1);//选择“标准” } if(!strcmp(convert,"2")){ nca_button_set("MTL_SYSTEM_ITEMS_ALLOWED_UNITS_LOOKUP_CODE_MIR_ITEM_SPECIFIC_0",1);//选择“特定物料” } if(!strcmp(convert,"3")){ nca_button_set("MTL_SYSTEM_ITEMS_ALLOWED_UNITS_LOOKUP_CODE_MIR_BOTH_0",1);//选择“二者” }nca_obj_type("MTL_SYSTEM_ITEMS_INVENTORY_ITEM_MIR_0",'S',MODIF_CONTROL); nca_obj_type("MTL_SYSTEM_ITEMS_INVENTORY_ITEM_MIR_0",'z',0); nca_obj_type("MTL_SYSTEM_ITEMS_INVENTORY_ITEM_MIR_0",'s',0); return0;}5.6脚本的完成通过上面的修改之后,我们的脚本基本可以完成了。可以看到,针对无输入数据的控件,完全可以通过C语言来“翻译”,将数据模板里的代号,翻译成相应的动作,实现对类似radiobuttongroup控件的数据录入。更进一步,我们可以知道,loadrunner可是更灵活的对程序运行进行控制,至于C语言对loadrunner脚本的控制,大家可以继续去探究。Chapter

6 头行结构界面的数据导入本章介绍“一对多”头行结构的数据导入。6.1本章简介本章主要介绍针对R12中WMS中的区域数据的录入,该界面有以下几个难点:窗口名称动态变化:loadrunner是靠窗体名称来定位数据录制窗体的,而在oracle的有些界面,窗口名称是事实变化的,需要通过C语言来动态拼接生成窗口名称,以解决此问题;JavaGrid控件脚本的录入:针对JavaGrid控件的操作,在录制成脚本后,再次回放时,总是报错,该问题具有普遍性,在查看了外国友人的大量的文档之后,使用一种hack的方式可以解决。下面,会依托WMS的区域数据的导入,来介绍如何解决上述两个问题,同时介绍对头行结构的界面进行基础数据录入的解决思路。6.2录制前的准备6.2.1分析界面本章介绍针对头行结构的界面的数据导入,我们以区域为例,来介绍数据的导入。可以看到,区域的界面其实是由两个界面组成:区域头界面、区域包含的货位界面。按照对头行结构的分类,我们可以看到实际上是由两个行结构的界面组成。针对这类的界面,我们一般将录制步骤进行分解,分解成两步:头数据导入:区域头数据的导入;行数据导入:查找区域,并为每个区域导入相应的货位。6.3区域数据的导入(头)6.3.1脚本的录制从界面可以看到,每一个区域的头记录其实就是一行,可以仿照货位的录入方式,来录制脚本。这里不做赘述。6.4货位数据的导入(行)6.4.1流程分析分析区域货位界面,可以看出,其实最终的操作对象还是货位,与其说为区域添加货位,实际上还不如说是将货位分配给区域,loadrunner的操作对象永远要考虑最底层的数据项:actionVuser_endVuser_initc.退出EBSb.进入物料主组织界面a.登陆系统actionVuser_endVuser_initc.退出EBSb.进入物料主组织界面a.登陆系统因此,我们的数据整理模板应该如下:zonenamesubinvlocatorzone100219172050120501-000001zone100219172050120501-000002zone100219172050120501-000003zone100219172050120501-000004zone100219172050120501-000005zone100219172050120501-000006zone100219172050120501-000007zone100219172050120501-000008zone100219172050120501-000009每次查询zonename,然后向其中添加货位,这就是一次循环,就完成了一次操作。下次循环就是重新查询头,在添加行。6.4.2脚本的录入可以看到,将所有的输入都转化成行结构之后,其实脚本的录入都很简单。不过本界面有两个问题,在本章开始就已经提到,这两个问题将在第7章统一介绍。Chapter

7 几个疑难问题的解决本章介绍Loadrunner的几个比较难的问题。7.1本章简介7.1.1简介在学习使用loadrunner的过程中,出现以下几个问题:名称动态变化的窗口的数据录入;OracleGrid界面的数据录入(包含nca_java_action无法解析问题的解决);跨环境的脚本录入;窗口名称动态变化7.2.1问题描述在第六章,为区域分配相应的货位时,会出现如下界面:我们可以看到:在点击了Addlocators之后,弹出窗的窗体名称为”FindLocatorstoAddToZone(“+zonename+”)”,为不同的区域添加货位,弹出的窗体名称就会不同。当我们在URL中使用“?record=names”作为录制参数的时候,就是根据窗体名称来定位操作的,因此需要动态实现窗体名称的拼接。7.2.2问题解决办法下面是用C语言实现的窗体名称拼接,并且将拼接后的字符串转换成LPSTR格式,以供nca_set_window()函数调用。 char*head[100]; char*head2[100]; LPSTRwindowname; LPSTRwindowname2; //取参数 strcpy(head,"FindLocatorstoAddToZone("); strcat(head,lr_eval_string("{zonename}")); strcat(head,")"); windowname=(LPCSTR)head; strcpy(head2,"AddLocators(V05)-"); strcat(head2,lr_eval_string("{zonename}"));windowname2=(LPCSTR)head2;上述代码就是实现窗体重新拼接的代码,大家有兴趣可以尝试一下。Grid界面的数据录入7.3.1问题描述在Grid界面进行数据录入的时候,会录制产生下列的脚本:nca_java_action("LOCATORS_GRID_0","rowSelectionEvent","selectedRows==[2]-1[2]-1;");NCA_TIMER_SCHEDULE();NCA_TIMER_EXPIRED();在对包含有该段的脚本运行时,会报错,无法运行通过。7.3.2问题解决办法Step1:将“NCA_TIMER_SCHEDULE();”和“NCA_TIMER_EXPIRED();”删掉,在nca_java_action语句前后添加如下语句:nca_step_begin();nca_java_action("LOCATORS_GRID_0","rowSelectionEvent","selectedRows==[2]-1[2]-1;");nca_step_end();Step2:需要将脚本录制产生的文件夹中的default.cfg文件,找到下面的段,添加“NcaTimerWaitMode=0”[NCA_GENERAL]NcaTimerWaitMode=0将NcaTimerWaitMode的值设置为0,该参数的值是从0~37.4跨环境登陆脚本的录入7.4.1问题描述由于我们都是在测试系统中录入测试脚本,无法直接在目标环境使用,如何才能做到尽量少更改脚本,实现在多个环境的数据录入呢?7.4.2问题解决办法在到正式环境导入数据之前,需要将Vuser_initsection中的登陆信息重新录入,用正式环境(目标环境)的登陆数据进行替代。由此可知,为了使得在测试环境中的数据导入脚本在换了一个环境之后能够直接使用,或者尽量减少修改,那么需要将于环境相关的信息最好放在一个section中,即Vuser_init中去。因此,在录入脚本的时候,要考虑好,将Vuser_init与action区分开来,在更换环境的时候,就只需要重新录入Vuser_init部分的登陆信息至进入目标界面即可。Chapter

8 web界面的数据导入本章介绍web界面的数据导入。8.1本章简介8.1.1简介Web界面的数据导入比较简单,本章以批量创建客户为例,说明web界面如何进行大量数据的导入。8.2web界面数据导入8.2.1选择协议在web界面导入数据,我们也使用OracleApplication11i协议进行导入。8.2.2录制参数的设置Applicationtype:InternetApplicationsProgramtorecord:MicrosoftInternetExplorerURLAddress::8005/OA_HTML/RF.jsp?function_id=28910&resp_id=-1&resp_appl_id=-1&security_group_id=0&lang_code=ZHS¶ms=RTtKCNJS0M3thl.S40dr8Q&oas=f_Rcd8tcRDxSYlMaD0Z32g..上述网址来源:Recordtoaction:Vuser_init.录制选项:去掉recordsocketleveldata和enablegenerationofout-of-contextsteps8.2.3脚本录制Vuser_init:从登陆到点击创建客户按钮;Action:在创建客户界面输入客户信息,并点击保存、应用,到“标准客户”页面,点击创建客户按钮;退出系统,关闭页面登陆系统,进入目标页面点击创建退出系统,关闭页面登陆系统,进入目标页面点击创建Vuser_end:退出EBS登陆。注意点:Web界面要以鼠标事件为主,这样脚本才能准确的记录控件事件;8.2.4脚本修改Vuser_initsection的脚本要做修改:原始脚本: web_browser("RF.jsp", DESCRIPTION, ACTION, "Navigate=:8005/OA_HTML/RF.jsp?function_id=28910&resp_id=-1&resp_appl_id=-1&security_group_id=0&lang_code=ZHS¶ms=RTtKCNJS0M3thl.S40dr8Q&oas=f_Rcd8tcRDxSYlMaD0Z32g..", LAST);修改后: web_browser(":8005/OA_HTML/RF.jsp?function_id=28910&resp_id=-1&resp_appl_id=-1&security_group_id=0&lang_code=ZHS¶ms=RTtKCNJS0M3thl.S40dr8Q&oas=f_Rcd8tcRDxSYlMaD0Z32g..", DESCRIPTION, ACTION, "Navigate=:8005/OA_HTML/RF.jsp?function_id=28910&resp_id=-1&resp_appl_id=-1&security_group_id=0&lang_code=ZHS¶ms=RTtKCNJS0M3thl.S40dr8Q&oas=f_Rcd8tcRDxSYlMaD0Z32g..", LAST);8.2.5设置参数替代和迭代次数与form数据导入一样设置。不再赘述。Chapter

9 基础数据解决方案9.1本章简介本章将从loadrunner模板整理、基础数据收集、基础数据校验等几个方面来讨论项目上线阶段的基础数据部分的解决方案。9.2三个主要问题9.2.1基础数据整理部分的三个主要问题数据对于企业来说,重要性不言而喻。目前在项目实施的过程中,基础数据基本存在以下几个问题:基础数据收集项不全:数据项收集是否完整取决于顾问素质是否过硬,做事是否细致,考虑是否全面;基础数据收集模板转化成数据导入模板工作量大:如针对大量数据制作dataload模板,头行结构的数据尤甚;基础数据校验难度大:通过SQL直接从数据库中将导入的基础数据导出,与原基础数据进行核对。如果使用的是dataload作为导入工具,无论是将导出的数据和原基础数据核对,还是和dataload模板核对,由于格式的原因,均难以高效的完成数据校验。9.3六步解决方案解决方案只有六步,做好这六步,就能保证基础数据无忧。9.3.1解决上述问题的六个步骤在这段时间整理基础数据的过程中,个人总结出一个基于loadrunner为导入工具的基础数据解决方案,通过这个方案,可以有效的解决上述三个问题。主要工作流程如下:Step1:制作loadrunner数据导入模板;(头行结构)Step2:录制loadrunner脚本;(测试环境录入)Step3:收集并整理基础数据(由客户参与);Step4:将基础数据整理成loadrunner数据导入模板;(基于loadrunner模板)Strp5:导入基础数据;(跨环境,目标环境)Step6:数据校验。(由于step1中已经头转换成行了,所以很方便核对)9.3.2步骤一:制作loadrunner数据导入模板EBS按照界面形式分类可以分为web和Form,按照界面的数据结构角度可分为行结构和头行结构。通过前面章节的介绍,我们知道,其实无论web还是form,真正数据模板的结构取决于界面是行结构还是头行结构。因此,我们制作loadrunner数据导入模板时,主要考虑以下几个问题:分析并确定界面的数据结构:行结构:简单的行结构界面类似于货位界面,每条记录就只有一行;复杂的行结构界面类似于物料主组织界面。后者表面上是头行结构,而后台本质上确实一个行表。因此,要正确分析界面的数据结构,详见chapter4.头行结构:头行结构类似于采购订单界

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论