0事务为衡量服务器的性能,需要定义事务。 LoadRunner运行到该事务的开始点时,LR就会开始计时,直到运行到该事务的结束点,这个事务的运行时间在结果中会有反映。集合点(Rendezvous)
00 插入集合点是为了衡量在加重负载的情况下服务器的性能情况。 在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LR 中可以通过在提交数据操作前面加入集合点,当虚拟用户运行到提交数据的集合点时,LR 就会检查同时有多少用户运行到集合点,从而达到测试计划中的需求。
000 集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init和vuser_end中不能插入集合点00
01 (Text/Image)检查和contents check点 在进行压力测试时,为了检查Web 服务器返回的网页是否正确,这些检查点验证网页上是否存在指定的Text 或者Image,还可以测试在比较大的压力测试环境中被测的网站功能是否保持正确。
1 使用LOADRUNNER时系统的瓶颈:1 CPU限制vmstat, 当%user|%sys超过80%时 2 磁盘I/O限制vmstat,当iowait超过40%时 3 应用磁盘限制 虚拟内存空间少 当%tm_act超过70%时,当分页空间的活动率超过70%时 4 换页限制,系统失效 虚拟内存逻辑卷超过I/O的30%,激活的虚拟内存率超过CPU数量的10倍时,页交换增大,CPU等待并运行队列
2 (1)监视服务器资源? 在Controller的场景运行中,在Graphs中选中System Resource Graphs下Windows Resources节点,点击Windows Resources的右键菜单项add measurements,加入你要监视的机器名称。注意监视的服务器必须启动Remote Registry Service。(2)找不到设置多IP运行方式 必须在Cotroller中设置Expert Mode才能设置多ip方式。(3)分析结果中如何处理think time Analysis 可以设定 Filter,Filter 就可以把 think time 过略掉。
3 使用loadrunner完成测试分为四个步逐:1 创建虚拟用户脚本,包括创建脚本->选择协议->录制脚本->编辑脚本->检查脚本是否有错2 使用中央控制器来调度虚拟脚本,包括创建场景,->选择脚本->设置虚拟用户数->设置schedule进度表 3 运行脚本 分析scenario 4 分析测试结果
手机软件:第一层次是Operating System(OS,操作系统),主要与RF(射频信号)芯片进行沟通与指令处理,它基于一些基础的网络协议(如GSM、GPRS或CDMA、W-CDMA)等;第二层次是内置的手机本地应用,例如电话簿、短信息等内容,更为重要的是,在一些手机上已经集成了J2ME开发平台,即它可以运行第三方开发的应用程序;第三层次是在J2ME平台上开发的一些KJava应用程序(如各种游戏、图片浏览等),还有一些API的接口函数,可以同外部的PC通过线缆进行数据传送,也可以通过无线方式与外界应用服务提供商传递数据。
4 就OS而言,由于硬件设备(主要是芯片)是不同的,因此各个厂商都拥有自己的操作系统,现在还不完全开放。目前主流的操作系统有Symbian、Linux、Win-CE等。中间的KVM平台基本上是开放的,国际上通行的是J2ME MIDP1.0 标准,只要大家都遵照这个标准,就可以保证最上层的开放性。但在这一层,因为手机的键盘或触屏方式等设备功能是不同的,各个厂商及不同型号的手机在接口方面有一些差异。最上面的应用层是比较开放的,使用KJava这种开放的语言,第三方也可以进行手机应用软件的开发。
PIN码(PIN1)就是SIM卡的个人识别密码。如果启用了开机PIN码,那么每次开机后就要输入4位数PIN码,PIN码是可以修改的,用来保护自己的SIM卡不被他人使用。需要注意的是,如果输入三次PIN码错误,手机便会自动锁卡,并提示输入PUK码解锁,这个时候已经接近了危险的边缘,因此,如果擅自修改了PIN码,一定要牢记。 PIN2码是设定手机计费时使用的。如果输入三次错误,手机会需要用PUK2码解锁,过程与先前介绍的PIN码、PUK码相同。不过这两种密码与网络计费及SIM卡内部资料的修改有关,所以不会公开,而且即便PIN2密码锁死,也不会影响手机的正常使用。因此,PIN2码和PUK2码不必去刻意理会。 PUK码(PUK1)由8位数字组成,这是用户无法更改的。当手机PIN码被锁,并提示输入PUK码时,千万不要轻举妄动,因为PUK码只有10次输入机会,10次都输错的话,SIM卡将会被永久锁死,也就是报废。
6 POP服务器会将用户邮箱中的邮件下载到客户端的计算机中,同时会在服务器端删除邮件(可以设置不删除)。用户可以离线阅读邮件。 IMAP协议在验证身份后,并不把所有的邮件直接下载到本地,而是下载邮件的一个摘要,用户在阅读摘要决定是否下载邮件,还是在服务器端就对邮件进行处理。IMAP支持三种操作模式:离线模式、在线模式和中断连接模式。
7 软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。 用户认证安全的测试要考虑问题:明确区分系统中不同用户权限 系统中会不会出现用户冲突 系统会不会因用户的权限的改变造成混乱用户登陆密码是否是可见、可复制 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统 系统网络安全的测试要考虑问题 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上 模拟非授权攻击,看防护系统是否坚固 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列和 IPhacker IP ) 采用各种木马检查工具检查系统木马情况 采用各种防外挂工具检查系统各组程序的外挂漏洞 数据库安全考虑问题:系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)系统数据可管理 系统数据的独立性系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
8 关联脚本 关联目的是为了让你在一个并发中用到一个商业流程的结果,在web脚本中有这样的过程,从web脚本中sessionid关系到后面的流程能不能运行,winsock脚本有同样的问题。所以需要捕获到session id然后把它关联起来在一个典型的web脚本中,你用web_create_html_param函数,用“PID“ 和“q2”定义边界扑获数据。 在Winsock脚本中,用lrs_save_param函数从静态数据或收到的数据包中截获数据
9 web_find函数。找到要截取的脚本
10 压力测试/负载测试 按照设计连接的客户端连接数量进行测试,把应用服务器处理请求的设计频度增加1-10倍,分别测试出现错误的状态和和出现错误的比率,考察是否出现不可恢复错误,系统设计要考 虑出现严重错误情况下负荷减轻错误自动恢复的实现方法。 在测试过程中每隔一段时间记录一次计算机或者服务器的内存及CPU使用情况,包括被测程序的内存占用百分比、数据库管理系统的内存占用百分比、操作系统的内存占
11 LoadRunner transaction(事务)”用于度量一个或者多个业务流程的性能指标,如登陆或者提交或者多用户使用等,或者下订单使用 LoadRunner transactions(事务)可以度量: 业务流程中每一步所花费的时间 整个业务流程所花费的时间 业务流程中每一步的性能指标可以自动度量
12 压力测试前需要搜集和准备哪些资料 首先要对系统使用信息的分析 包括(1)任务分配图 有哪些任务?同一时间内有多少次操作? 事务统计文件 事务平均值、和峰值是多少? 数据库连接是多少? 如果任务失败会产生多少业务风险? 用户统计文件 每个真实用户会执行多少任务? 不同任务在每个真实用户中的分配比例?
13 我对脚本中的一个变量进行参数化,共10条数据。运行时有100个虚拟用户,那我参数化的时候应该做怎样的设置, 答: 可以将参数类型定义为FILE(文件)类型,连接数据库取得数据,在参数属性页面中可以设置,如更新值时间的选择:每次迭代选择下一行中设置选择:顺序这样的效果是这样的:所有的vuser在第一次迭代中用的都是第一条数据,在第二次迭代中用的是第二条数据
14 判断LoadRunner返回的页面是否正确 验证的方法是从返回的页面中查找关键的字符串,如果能找到,则说明系统行为正确。当然,我们不可能手工去完成这个工作,因此,在实际工作中,我们借助于LR的一个函数web_reg_find来完成这个工作。web_reg_find的具体使用可以查看LR的Function Reference文档,这里简单描述一下几个要点。
15 controller显示联机监视器的最多数量是16个
16 打开:开始-〉程序-〉loadrunner-〉tools-〉ip wizard 说明:如果想增加新IP选择第一项; 使用保存的文件增加IP选择第二项; 释放已经设置的IP选择第三项。点“下一步” 此步让输入web server的IP地址(尚不清楚有何意义),不输入,直接点‘下一步’,说明:使用remove按钮可以删除选定的虚拟IP ,点add按钮
17 用telnet <MI> 443互测服务监视器与MI的443端口是否打开
18 函数赋值时不能使用关系运算符“==”来比较两个字符串,只能用strcmp() 函数来处理
19 在“监视服务器配置”中,要同时添加几个服务器可用逗号分隔服务器名或IP范围。如:255.255.255.0-255.255.255.5,server1,server219
20 为了不让出错后停止继续运行: Run-time Settings->Error Handing->Continue on error.
21 一般要保留10%的可用内存。最低最低不能<4M,此值过小可能是内存不足或内存泄漏Page Faults/sec、Pages Input/sec、Page Reads/sec 注(重要):导致严重的延迟原因:是因为硬件分页错误。 说 明: Page Faults/sec 是指处理器处理错误页的综合速率。Pages Input/sec 指为解决页错误从磁盘上读取的页数 Page Reads/sec 是指为解析硬页错误而读取磁盘的次数 Processor错误,处理器一般情况下速率小于90%,如果大于则处理器性能不能满足需求 Avg. Disk Queue Length 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。正常值<0.5,此值过大表示磁盘IO太慢 网络容量、等待时间及带宽 分析关键应用程序的性能 ,定位问题的根源是在客户端、服务器、应用程序还是网 哪些应用程序占用大量带宽 服务器在受压情况下,cpu最佳占用率为60%~80%,多了cpu受不了,少了资源浪费;
5、服务器在不受压情况下,内存占用率最佳为25%,多了影响服务器性能;
压力负载测试中也需要注意:
22 如何监视服务器资源输入要监控性能的机器ip,如//111.111.111.111 .在弹出的登陆窗口输入那台机器的管理员帐户和密码 .运行CONTROLLER添加那台机器的性能指标后就可以监控到了
23 如果Process/Private Bytes计数器和Process/Working Set计数器的值持续升高 同时Memory/Available bytes计数器的值缺却持续降低的话 说明很有可能是存在内存泄漏
24 一般在吞吐量最大时,也就是事务响应时间最长的时候
25 监视服务器资源?在Controller的场景运行中,在Graphs中选中System Resource Graphs下Windows Resources节点,点击Windows Resources的右键菜单项add measurements,加入你要监视的机器名称。注意监视的服务器必须启动Remote Registry Service
26 找不到设置多IP运行方式 必须在Cotroller中设置Expert Mode才能设置多ip方式
27 分析结果中如何处理think time Analysis 可以设定 Filter,Filter 就可以把 think time 过略掉。
28 tracert IP地址或主机名 [-d][-h maximumhops][-j host_list] [-w timeout] 参数含义: -d 不解析目标主机的名字;
-h maximum_hops 指定搜索到目标地址的最大跳跃数; -j host_list 按照主机列表中的地址释放源路由; -w timeout 指定超时时间间隔,程序默认的时间单位是毫秒。
29 netstat [-r] [-s] [-n] [-a] 参数含义: -r 显示本机路由表的内容; -s 显示每个协议的使用状态(包括TCP协议、UDP协议、IP协议); -n 以数字表格形式显示地址和端口; -a 显示所有主机的端口号。
30 性能测试过程中如何需要记录什么数据?
性能测试过程中,根据性能测试的不同类型和不同目标,记录的数据也不同。例如,对于一个以调优为目的的性能测试,可能需要重点关注测试过程中各可能的性能制约点(例如磁盘IO、网络拥塞状况、服务器内存使用情况、数据库使用情况等),通过对参数调整后的系统进行反复测试来找到制约性能的因素;而一个以验证为目的的性能测试可能会重点关注是否能达到性能指标要求,重点集中在用户体验上。
31 时间设置 Run Logic: 重复的数目 Øacing:在每次循环时的等待时间ØThink Time:在每个步骤间用户的思考时间Log:记录在回放时的各种信息
32如何看脚本运行选择Tools > General Options, 选择Display标签 选择Show browser during replay 和 auto arrange window 选项,清除脚本执行选项末端的Display report选项 单击Run按钮
33如何知道测试是否通过 选择 View > Test Result 可以看到所用时间及执行结果
34如何查找过滤结果(错误结果)展开循环分支 展开第一个分支,然后点击左侧面板中的”+”号展开动作摘要分支。在展开的分支中你可以看到在循环中的每个步骤。展示结果镜像 选择Submit Form. 在结果窗口中显示了那个相关步骤的回放镜像 查看这个步骤摘要 结果窗口右上侧的面板显示了该步骤的信息摘要:对象或者步骤名。页面是否正确加载等信息,结果(Passed, Failed, Done, 或者 Warning),以及该步骤的执行时间
35几种场景类型的选择 录制好脚本之后,就可以把脚本加入到场景里面去了,这里首先介绍一下LR的场景类型,LR有2种大的场景类型: 1. Manual Scenario:该项要完全手动的设置场景,可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在Controller的Scenario菜单下设置。2. Goal—Oriented Scenario:如果测试计划是要达到某个性能指标,比如:每秒多少点击,每秒多少transactions,能到达多少VU,某个Transaction在某个范围VU(500-1000)内的反应时间等等,那么就可以使用面向目标的场景。
2 每次回放文件时VUGEN(虚拟用户生成器)把快照放到SCRIPT文件中,扩展名为.inf,回放脚本位于ITERATION中
3 Vuser脚本函数分两种 1 常规脚本函数(ir_start_transition(标记事务开始) ir_end_transition(标记事务结束)) 2 基于协议的脚本函数(),他们共同构成了Vuser API,该API可以直接与服务器通信
4 数据库协议格式(ird.h) FTP协议格式(mic_ftp.h) 常规C函数(irun.h) POP3(mic_pop3.h) SMTP(mic_smtp.h) WAP(as_wap.h) WEB(as_web.h) WINDOWS套接字(irs.h)
5 录制部分(除WEB服务,C和不可录制的协议外)包含两部分:录制应用程序和录制概要
6 事务编辑器使用规则:1事务必须开始和结束于单个操作,不能跨越多个操作2事务名必须是唯一的3 要更改事务的起始点,将事务起始点括号移至新位置,结束点同 4 在事务中可以创建事务,称嵌套事务
7 设置负载的步逐1 迭代 (要指定迭代次数使用F4打开运行时设置,选择运行逻辑节点,指定迭代次数)2并发用户(使用loadrunner->controller创建场景的过程,在场景中可以指定并发用户的个数,也可以查看系统在并发用户下行为)
8 录制脚本包括三部分Vuser_int(登陆信息,执行时间:Vuser初始化) action(客户活动 执行时间:Vuser运行时) Vuser_end(注销信息 执行时间:Vuser完成或停止)
9 选择生成代码的脚本 ->单击脚本选项 指定端口信息->单击端口映射
10 如果启用了出现错误时仍继续,则在出现错误后,脚本仍然会被执行,若对特定的脚本出错了仍继续则使用 ir_continue_on_error()将其括起来
11 同步VuserTE_wait_cursor 等待光标在窗口的指定位置出现 TE_wait_silent 以指定秒数等待用户应用程序的静默 TE_wait_text 等待字符串在指定的位置出现 ir_think_time 模拟用户思考时间(手动添加思考时间语句:插入->添加步住-> 选择思考时间->输入思考时间)
12 ir_get_attrib_double 检双精度浮点型变量索ir_get_attrib_long 检索长整形变量ir_get_attrib_string 检索字符串变量
13 设置端口映射录制选项步逐: 打开录制选项->选择 网络:端口映射->新建项(打开服务器项)->在套接字服务部分输入服务ID,服务类型,目标服务器,目标端口和连接类型
14 在LR中可以定义事务来度量服务器的性能,每个事务度量服务器响应指定Vuser请求所用的时间
15 执行负载测试时,需要模拟系统上有较重任务的负载,可以通过创建集合点配制多个Vuser同时执行操作,当到达指定要求时释放所有的Vuser,然后进行操作(插入集合点步逐:插入->集合->键入集合点名称->)
16 创建文件或表类型参数时,必须创建一个.dat文件以存储数据,或打开一个现有文件,然后定义参数的其他属性(如参数类型文件路径,参数名等)
17 从Vuser创建场景 工具->创建controller场景,将打开创建场景对话框,选择面向目标的场景或手动场景,面向目标场景中LR将根据指定目标自动创建场景,手动场景中需要指定虚拟用户数量,在负载生成器中输入要运行的虚拟用户的计算机的名称,手工场景中具有共同特征的用户将组织成组,需要在组名框中指定一个新组名,而面向目标的场景需要指定脚本名,在结果目录框中输入要保存结果的位置
18 怎样使多台测试机均能对系统施压: 默认模式下使用控制功能(controller) 添加多台虚拟机时真正起作用的只有一台,为使多台同时对系统施压我们要把组 模式改为百分比模式(选择场景下的改变组模式为百分比模式),然后在生成负载 选香里边同时选中所有机器
19 LR性能参数解析:WEB资源参数 每秒点击次数:虚拟用户每秒向WEB服务器提交的HTTP请求数,吞吐量:按运行过程中服务器上每秒的吞吐量(表示虚拟用户在任何给定的一秒从服务器上获得的数据量)每秒HTTP响应数,每秒下载页面数,每秒重试次数,每秒TCP/IP连接数,依据这些来评估虚拟用户产生的负载量
20 系统性能分析命令: 监视CPU使用情况(vmstat 2;iostat -t 26;sar -PALL23;)监视内存使用情况(vmstat 2 10; ps aux;svmon -Pau 10;)监视I/O使用情况
![](http://bbs.51testing.com/images/smilies/default/sad.gif)
22 手机测试:1、压力测试 用自动测试软件连续对手机拨打1000/10000个电话,检查手机是否会发生故障。2、抗摔性测试 还仿真人把手机抛到桌面,抛上几百次看会不会坏,而手机所用的电池,也要经过最少4m的高度,单独的向着地面撞击跌落100次而不能有破裂的情况出现。 3、高/低温测试 让手机处于不同温度环境下测试手机的适应性,低温一般在零下20摄氏度,高温则在80摄氏度左右。 4、高湿度测试 用一个专门的柜子来作滴水测试,仿真人出汗的情况(水内渗入一定比例的盐分),约需进行30个小时。 5、性能测试 用铅笔在手机外壳上画很多格子,看看手机的外壳是否会掉下油漆,有些要求更严格的手机,会在手机的外壳上再涂抹上一些“名牌”的化妆品,看看是否因有不同的化学成分而将手机的油漆产生异味或者掉漆的可能。 6、翻盖可靠性测试 对翻盖手机进行翻盖10万次,检查手机壳体的损耗情况,是用一部翻盖的仿真机来进行,它可以设置翻盖的力度、角度等 7、扭矩测试 直机用夹具夹住两头,一个往左拧,一个往右拧。扭矩测试主要是考验手机壳体和手机内面大型器件的强度。8、静电测试 进行这种测试的工具,是一个被称为“静电枪”的铜板,静电枪会调较到10-15KV的高压低电流的状况,对手机的所有金属接触点进行放电的击试,时间约为300ms-2s左右,并在一间有湿度控制的房间内进行,而有关的充电器(火牛)也会有同样的测试9、按键寿命测试 借助机器以给设定的力量对键盘击打10万次,假使用户每按键100次,就是1000天,相当于用户使用手机三年左右的时间。10、密封性测试 察看手机密封性是否完好,容易进灰尘不,11比如把手机放在铁板上打电话加以测试,是否可以找到SIM卡,信号是否会变弱是否会没有信号等。12用铁丝在手机底部连接器内拨来拨去,主要是要考虑到手袋内有锁匙的情况下,是否会令手机出现短路的问题。13把充电器/电池反接测试,看看手机的保护电路设计是否能正常运作14 多次插拔充电器看手机是否可以正常工作15 不插入SIM卡看手机是否支持紧急呼叫功能 16 当手机正在通话时,另有人打电话过来,看是否可以呼叫转移(前提开通遇忙呼叫功能)17 当设置了无应答呼叫转移时,用户在无应答时呼叫转移功能是否实现
22概要设计的目的 将软件系统需求转换为未来系统的设计; 逐步开发强壮的系统构架; 使设计适合于实施环境,更好的提高系统性能; 结构应该被分解为模块和库。
23概要设计的任务 1制定规范:代码体系、接口规约、命名规则。这是项目小组今后共同合作的基础,有了开发规范和程序模块之间和项目成员彼此之间的接口规则、方式方法,大家就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。2总体结构设计: 功能(加工)->模块:每个功能用那些模块实现,保证每个功能都有相应的模块来实现; 3 模块层次结构:某个角度的软件框架视图;
模块间的调用关系:模块间的接口的总体描述; 模块间的接口:传递的信息及其结构; 处理方式设计:满足功能和性能的算法 用户界面设计;数据结构设计: 详细的数据结构:表、索引、文件; 算法相关逻辑数据结构及其操作;上述操作的程序模块说明(在前台?在后台?用视图?用过程?······) 接口控制表的数据结构和使用规则 其他性能设计。
24 概要设计写什么 结构化软件设计说明书结构 任务:目标、环境、需求、局限(遵循1 软件设计应该表现出层次结构,应巧妙的利用各个软件部件之间的控制关系 2 设计应该从逻辑上被划分成多个部件,分别实现各种特定功能和子功能 3 设计最终应当给出具体的模块(如子程序和过程),这些模块应具有独立的功能特性); 总体设计:处理流程、总体结构与模块、功能与模块的关系; 接口设计:总体说明外部用户、软、硬件接口;内部模块间接口(注:接口≈系统界面) 数据结构:逻辑结构、物理结构,与程序结构的关系; 模块设计:每个模块“做什么”、简要说明“怎么做”(输入、输出、处理逻辑、与其它模块的接口,与其它系统或硬件的接口),处在什么逻辑位置、物理位置; 运行设计:运行模块组合、控制、时间; 出错设计:出错信息、处错处理; 其他设计:保密、维护; OO软件设计说明书结构 1 概述 系统简述、软件设计目标、参考资料、修订版本记录 这部分论述整个系统的设计目标,明确地说明哪些功能是系统决定实现而哪些时不准备实现的。同时,对于非功能性的需求例如性能、可用性等,亦需提及。需求规格说明书对于这部分的内容来说是很重要的参考,看看其中明确了的功能性以及非功能性的需求。这部分必须说清楚设计的全貌如何,务必使读者看后知道将实现的系统有什么特点和功能。在随后的文档部分,将解释设计是怎么来实现这些的。 2 术语表 对本文档中所使用的各种术语进行说明。如果一些术语在需求规格说明书中已经说明过了,此处不用再重复,可以指引读者参考需求说明。 3 用例 此处要求系统用用例图表述(UML),对每个用例(正常处理的情况)要有中文叙述。 4 设计概述 4.1 简述 这部分要求突出整个设计所采用的方法(是面向对象设计还是结构化设计)、系统的体系结构(例如客户/服务器结构)以及使用到的相应技术和工具(例如OMT、Rose)5. 从应用方面看,相对而言,结构化方法更加适合数据类型比较简单的数值计算和数据统计管理软件的开发;面向对象方法更加适合大型复杂的人机交互式软件和数据统计管理软件的开发
25 客户端——服务器模式
在这种环境下进行的测试由数据库客户端向数据库服务器直接发起测试,不需要其他配合设备
功能测试的方法 功能测试采用直接通过数据库客户端软件进行数据库服务器功能验证的方法;测试中,由数据库客户端发起相应的测试请求进行验证,对于不需要客户端发起请求的功能验证,可以采用直接验证服务器提供的相应功能组件的方法进行。