




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除测试分为单元测试、集成测试、系统测试和确认测试 单元测试-针对程序中的模块或构件,主要揭露编码阶段产生的错误。 集成测试-针对集成的软件系统,主要揭露设计阶段产生的错误。 系统测试-主要揭露不符合系统工程中对软件要求的错误。 确认测试-检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准。 V模型 用户需求 确认测试 需求分析 系统测试 概要设计 集成测试 详细设计 单元测试 编码 软件测试的各个阶段 测试需求 -测试计划 -测试执行 -测试记录和缺陷跟踪 -提交报告PDCA:戴明循环n 计划(Plan) 执行(Do) 检查(Check/Study) 处理(Action) n 戴明循环有时也被称为戴明伦或者持续改进螺旋测试需求 检查软件需求(规格说明书) 1)什么是测试需求 测试需求就是在项目中要测试什么。 我们在测试活动中,首先需要明确测试需求,才能决定要怎么测,测试时间,需要多少人,测试的环境是什么, 测试中需要的技能,工具以及相应的背景知识,测试中可能遇到的风险等等,以上所有的内容结合起来就是就构成了测试 2)计划的基本要素 而测试需求是测试计划的基础与重点。 3)为什么要做测试需求 明确任务、目标、风险、策略等 有效地制定测试计划 测试工具 自动化工具分类 功能测试工具: HP QuickTest、Rational Rabit、Compuware TestPartener. 性能测试工具: HP LoadRunner、Compuware QALoad、Rational Robot、MS WAR. 测试管理工具 HP TestDirector、Rational TestManager、BugZilla. 其他测试工具 Rational Purify、Rational PureCoverage. 性能测试简述1.10性能测试 在正常、峰值以及异常负载条件下,测试系统的各项性能指标 通过自动化的测试工具进行模拟 性能测试目的 评估系统的能力 识别体系中的弱点 系统调优 验证稳定性和可靠性 用户角度的软件性能 计算性能 资源的利用和回收 启动时间 伸缩性:不同的用户同时使用软件时的响应时间 稳定性 消除软件对空间和时间的不必要的浪费 内存是软件运行的重要的空间资源,内存泄露时间上是浪费了软件的空间资源。 因此,内存泄露对软件的性能影响十分严重 案例 某网站Server经常CPU耗尽,点击网页响应慢或无响应,甚至Server死机。经分析,网站首页是PHP程序,每次用户访问都要多次查询数据库,没有Cache机制,数据库查询负荷过高,导致CPU耗尽。 解决:改写网站首页以及部分频繁访问的程序,增加Cache机制,减少数据库访问。 原理:将常用数据放在服务器的内存中,虽然增加了内存的开销,但带来了时间上的优化,对用户而言,提高了处理速度性能瓶颈 瓶颈本来是指玻璃瓶中直径较小并影响水流速度的一段,用它来比喻软件系统中出现性能问题的节点(可能不止一处)。 并发(Concurrency): 多用户在同一时刻对系统执行操作,一般p指执行同一事物或操作 在线:多用户在一段时间内对系统执行操作 响应时间(Response Time): 从client端发出请求到得到响应的整个时间。 (组成:client端响应时间+网络响应时间+Server端响应时间) 事物响应时间(Transaction Responsde Time): 完成响应事物所用的时间,是性能测试中重点关注的指标。 点击率(每秒点击数,Hits Per Second): Vuser每秒向Web服务器提交的HTTP请求数。 注:点击数不是鼠标点击次数,而是服务端向Web Server发起的http请求数,鼠标点击一次可触发错个http请求。 吞吐量(Throughput): Vuser在任意给定一秒从服务器中总共获得的数据量,单位是字节。 依据服务器的吞吐量来估计Vuser产生的负载量,以及评估服务器在流量方面的处理能力以及是否存在瓶颈。 吞吐率(Throughput per Second): 服务器每秒吞吐量(吞吐量/测试时间),反映服务器的处理速度和性能 吞吐率和点击率的区别: 吞吐率:指服务器每秒处理的数据量。 点击率:指客户端每秒向服务器提交的HTTP请求数。 TPS(Transactions Per Second):每秒钟系统能够 处理的交易或事物数量。是衡量系统处理能力的重要指标系统利用率:对不同系统资源的使用程度,如Cpu,内存,磁盘,网络等性能测试策略 1)基准测试(Benchmark Testing) 指测试环境确定以后,对业务模型中涉及的每种业务做测试基准 目的是获得单用户执行时的各项性能指标,为多用户并发和综合场景等性能测试分析提供参考依据 2)并发测试(Concurrency Testing) 指模拟多个虚拟用户在同一时刻执行测试点操作 目的是对测试点进行压力加载,测试系统性能测试是否存在死锁 3)综合场景测试 通过对系统体系结构和功能模块的分析以及对系统用户的分布和使用频率的分析,来构造系统综合场景的测试模型,模拟不同用户执行不同操作。 4)疲劳强度测试 5)内存泄露检测 6)数据容量测试 7)极限测试 8)递增测试:指每隔一定时间段(如5秒10秒)加载不同数目的虚拟用户执行测试点操作,对测试点进行递增用户压力加载测试。 负载测试(Load Testing):含义:检验AUT在不同给定负载下是否能达到预期性能指标; 目的:更多的是在正常的工作条件下,验证AUT的性能是否达到要求 压力测试(Stress Testing): 含义:通过不断向被测系统(AUT,Application Under Test)施加压力,测试系统在压力情况下的性能表现,考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在 目的:主要是发现AUT的负载极限(峰值处理能力)。 容量测试(Volume Testing) 含义:针对数据库而言,是在数据库中有较大数据容量情况下对AUT进行测试 压力测试与负载测试的比较 实现方法基本相同 不同:压力测试主要是在性能可以接受的前提下,测试系统支持的最大负载 负载测试前提是在不同负载下(负载一定)时,通过一些参数信息,对系统进行测试 测试计划的测试点:使用最频繁,用户最关心,数据库最相关的,最重要的 Load runner概述 Load Runner是什么? 预测系统行为和性能的工业标准及负载测试。 通过以模拟上千万用户实施并发负载及实现性能检测的方式来确认和查找问题。LoadRunner能够对整个架构进行测试。支持多种操作系统、数据库、应用服务、中间件等。 LoadRunner能做什么? 用于测试应用程序的性能。 在可控制的峰值负载条件下测试系统。 LoadRunner录制原理自动监控指定的URL或应用程序所发出的请求及服务器返回的响应。它作为一个第三方监视客户端与服务器的所有对话,然后把这些对话记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。(这个很重要的) LoadRunner三大组件 虚拟用户脚本生成器(Virtual User Generator) 压力调度控制器(Controller) 压力结果分析器(Analysis) LoadRunner工具组成 虚拟用户脚本生成器(Virtual User Generator):捕获最终用户业务流程和创建自动性能测试脚本,即产生测试脚本; 压力调度(Controller):根据用户对场景的设置,设置不同脚本的虚拟用户数量; 压力结果分析器(Analysis):辅助分析测试结果。 负载生成器(Load Generator):通过运行虚拟用户产生实际的负载; 代理程序(Agent):部署在各个客户端,协调、产生步调一致的虚拟用户; 监控系统(Monitor):监控重要的性能计数器; 如何使用LoadRunner? 主要步骤: 1、创建脚本:捕获在应用程序中执行的最终用户操作 2、设计场景:通过定义测试绘画期间发生的时间,设置负载测试场景。 3、运行场景:运行、管理并监控负载测试 4、分析结果:分析负载测试期间Loadrunner生成的性能数据。 Vuser(Virtual User,虚拟用户) 在场景中,LoadRunner用Vuser代替实际用户。Vuser模拟实际用户执行操作。一个场景可以包括几十,几百审计几千个Vuser。 Vuser脚本(Virtual User Scipt): 用于描述Vuser在场景中执行的操作。 事物(Transaction): 为度量服务器的性能,需要定义事物。事物表示要度量的最终用户业务流程或操作 场景(Scenario): 场景是一种文件,用于根据性能要求定义在每个测试会话运行期间发生的时间压力测试计划 从VU运行成功到controller运行成功,一般需要一下几个步骤: 确认到VU里SUSi(单用户单循环次数,single user&sigle iteration) 确认到VU里SUMI(单用户多循环次数,single user&multi iteration) 确认在controller中MUSI(多用户单循环次数,multi user&single iteration) 确认在controller中MUMI(多用户多循环次数,multi user&multi iteration)原理:第一步骤是验证脚本编写的正确,第二步骤可以验证数据池是否正常运作,第三步骤并发功能,第四步骤是最终目的,验证软件系统的性能 使用VuGen开发脚本的步骤: 录制测试脚本 完善测试脚本 配置Run-Time Settings项 单机运行测试脚本 创建运行场景 创建测试脚本 选择脚本协议 在脚本中插入事务 在脚本中插入集合点 脚本参数化 插入检查点 Run-time Settings LR录制脚本时录制方式的选择,要注意一下几点: 基于浏览器的运用,推荐用HTML-based script方式录制 不是基于浏览器的运用,推荐用URL-based方式录制; 如果基于浏览器的应用程序中包含JavaScript,并且该脚本向服务器产生了请求,就要使用URL-based方式录制 Vuser_init() 录制登陆脚本 此处的脚本只有在初始化时才会被执行 Action() 意义的语句块,真正执行测试点操作的主题部分 Vuser_end() 录制推出的脚本 此处的脚本只有在释放用户时才会被执行。 Vugen 插入事务(Transaction) 为了衡量某个任务的性能,需要在该任务的开始和结束位置插入事务。每个事务度量服务器响应指定的 Vuser 请求所用的时间。 事务可以是简单任务(如单个查询),也可以是复杂任务(如提交多个查询和生成报表) 插入集合点 集合点是并发访问的点 集合点策略(在Controller场景中设置) 注意:1、集合点经常和事务结合起来使用,常放在事务的前面 2、集合点只能插入到Action 部分,vuser_init和 vuser_end 中不能插入集合点。 调试、运行脚本 参数化 如果用户在录制脚本过程中,填写提交了一些数据,这些操作将都被记录到脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样做可能会被应用程序禁止而导致出,同时这也不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际操作,需要各种各样的输入。这时就需要用到参数化。 参数类型 File 、Date Time、Group Name 、Load Generator Name 、Iteration Number 、Random Number、Unique Number 插入检查点 定位要检查的页面 插入文字检查点 设定与检查点有关的选项 查看检查点是否通过 为了检查Web 服务器返回的网页是否正确,VuGen允许插入Text/Image 检查点。 验证网页上是否存在指定的Text或者Image。 测试在比较大的压力测试环境中,被测的网站功能是否保持正确。 插入检查点所需函数: web_find()函数 作用是“在页面中查找相应的内容”web_reg_find()函数 作用是“在返回的缓存中查找相应的内容 web_find()函数作用: 在页面中查找相应的内容(指使用HTML模式录制的脚本) 参数举例 web_find(web_find, RightOf=a,LeftOf=b,what=name,LAST) 参数的解释 web_find()定义该查找函数的名称,“LeftOF”和“Rightof=”来定义查找字符的左右边界;what定义查找内容 函数用法 放在相应请求函数后面 注意事项:使用该函数时,要在Vuser-Run-Time Settings勾选Enable Image and text check web_reg_find()函数作用: 在缓存中查找对应内容 参数示例 web_reg_find(Search=Body,SaveCount=ddd,Text=aaa,LAST); web_reg_find函数注册一个请求,在下一个操作函数(如web_url)检索到的缓存中搜索一个文本字符串 web_reg_find返回的0,1只代表注册是否成功。web_reg_find时注册类型函数,他本身并不执行,并不代表查找的内容是否存在 Search用来定义查找范围,可利用SaveCount来判断要查找的内容是否被找到,可记录在缓存中查找内容的次数,判断该值是否被找到 if(strcmp(lr_eval_string(abc_count),0)=0) lr_output_message(not found); else lr_output_message(abc_countfound); web_reg_find和web_find的区别 录制模式区别 web_find只能用在基于html模式录制脚本中,web_reg_find没有此限制 位置区别 web_reg_find时限注册(register)后查找:放在请求语句前面 而web_find时查找前面的请求结果:使用时放在请求语句的后面 设置区别 Run-time设置中的enable image and text check对web_find有效。而对web_reg_find无效 查找方式区别 web_reg_find参数中的SaveCount记录查找匹配的次数 web_find的机制是一旦匹配成功就立即返回,并不急需查找和记录匹配次数 查找范围区别 web_find时在返回的页面中进行内容查找,web_reg_find时在缓存中进行查找 效率区别 web_reg_find执行效率高 web_image_check()函数 函数作用 在页面中查找一个具体图片 参数说明 web_image_check(web_image_check,Alt=,Src=,LAST); 参数解释 Alt和Src的值这取该图片在网页源代码中相应参数的值 函数位置: 该函数用到相应(查找内容)后面。 设置 Run-time设置中的enable image and text check对web_find应开启 1.按进程运行Vuser:Controller将使用驱动程序mdrv运行Vuser。如果按进程方式运行每个Vuser,则对于每个Vuser实例,都将启动一个mdrv进程。如果设置了10个Vuser,则在任务管理器中出现10个mdrv进程。多个mdrv进程肯定会占用大量内存及其他系统资源,这就限制了可以在任意负载生成器上运行的Vuser的数量。 2.按线程运行Vuser:及设置了10个Vuser,其只会调用一个驱动程序mdrv.而每个Vuser都按线程运行,这些线程Vuser将共享父进程的内存段。这就节省了大量内存控件,从而可以在一个负载生成器上运行更多的Vuser。 任何选择都是有两面性的。选择线程方式运行Vuser会带来一些安全问题。因为线程的资源是从进程资源中分配出来的,因此同一个进程中的多个线程会有共享的内存空间,这样可能会引起多个线程的同步问题,调度不好,就会出问题,比如A线程要用的资源就必须等待B线程释放,而B也在等待其他资源释放才能继续。这就会出现这样的问题:同一个测试场景,用线程并发就会超时失败或报错,而用进程并发就没错。 Controller 负载发生器(Load Generators) 通过负载发生器可以设定生成模拟用户的机器,这些机器需要安装Load Generators,启动Agent进程,不需要脚本,只是调用它们的资源。 检测器 以监视Windows(Win2k Server)资源为例 前提:需要用管理员权限的账号连接被监控的service,比如:8 asadministrator,输入密码 然后 可以在Controller总直接添加计数器。 LoadRunner数据池技术解剖 Select next row :取下一数据方式 Sequential:按照顺序地取,每一个虚拟用户都会按照相同的顺序读取 Random:随机读取i个 Unique:每个VU顺序取唯一的值。注意:使用该类型必须注意数据池中数据充足 Same Line As某个参数(比如Name):和前面定义的参数Name取同行的记录。通常用在有关联性的数据上面。 Update value on 更新方式 Once:在所用的返回中都使用同一个值 each Iteration:每次迭代都取新值 each occurrence:只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一次就要重新取一个值 Runtime setting中可以设置log的生成方式 默认的log方式 Enable logging-Send messages only when an error occurs。 可以修改的日志方式: Always send messages(一直打印输出日志,不仅在错误时) standard log-所有请求反馈的日志,包括successful和fail的日志 Extended log-可提供扩展的日志信息 包括 substitution打印所有使用的参数值 Data returned by server打印每个客户端请求服务器返回的数据值 Advanced trace日志中打印所有的消息信息和函数执行的信息 log的存储路径在res文件夹下 如果从脚本中直接关联create scenario则在脚本的目录下res下 如果直接打开create scenario然后再选择脚本,则存储在c盘中 具体该场景的日志结果存放位置,可以查看controll的result界面的result setting定义的目录 Recording log 和Generation log区别 Recording log 是录制脚本时产生的日志名,主要是客户端和服务端通信时的一些交互信息。 将系统的Response打印在日志中式打印在Recording log中 Generation log 是录制完脚本后,LR调用相关协议的函数将录制的内容描述成LR脚本时产生的日志 选取系统的Response信息 单协议从Recording log 选取 多协议从Generation log 选取 什么是超文本 包含超链接和各种多媒体元素标记的文本。这些超文本文件彼此连接,形成网状,因此又被称为网页 链接使用URL表示。最常见的超文本格式是超文本语言。 什么是URL URL即统一资源定位符(Uniform Reszource Locator),用来唯一标示万维网中的某一文档。URL由协议、主机端口(默认为80)以及文件名三部分构成 :80/news/index.html 协议/ 主机:端口(80)/ 文件名及其路径 什么是超文本传输协议HTTP? 是一种按照URL指示,将超文本文档从一台主机(WEB服务器)传输到另外一台主机(浏览器)的应用层服务,以实现超链接的功能。 在用户点击URL为/index.html链接后,浏览器和web服务器执行以下动作: 浏览器分析超链接中的URL 浏览器向DNS请求解析http:/.地址 DNS将解析出的IP地址() 返回浏览器 浏览器与服务器建立TPC连接(80端口) 浏览器请求文档:GET/index.html 服务器给出响应,将文档index.html发送给浏览器 释放TCP连接 浏览器显示index.html中的内容 网络是有一组协议组成,TPC/UDP是核心层协议 TCP(Transmission Control Protocol,传输控制协议) 基于连接的协议,正式收发数据前,不需和对方建立可靠的连接 能保证传递全部数据(三次握手) UDP(User Data Protocol,用户数据包协议) 面向非连接的协议,不与对方进行连接,直接发送数据包 UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境 超文本传送协议-HTTP的报文结构 HTTP有两类报文 请求报文:从客户端向服务器发送请求报文 响应报文:从服务器到数据的回答 由于HTTP在报文中的字段都是一些ACCII码串 ,字段的长度都是不确定的。 报文由三个部分组成,即状态行,首部行和实体主题。在请求报文中,开始行就是状态行 方法(Method)是对所请求对象所进行的操作,也是一些命令 状态码(Status-Code): 是响应报文状态行中包含的以三位数字,知名特定请求是否被满足,失败原因等 1xx:通知信息 100=服务器正在处理客户请求 2xx:成功 200=请求成功(ok) 3xx:重定向 301=页面改变了位置 4xx:客户端错误 403=禁止的页面;404=页面未找到 5xx:服务器错误 500=服务器内部错误,503=以后再试 头(header) 类型说明 User-Agent请求关于浏览器和它的平台的信息 Accept请求客户能处理的页面类型关联(correlation) 把脚本中某些写死的(hard-coded)数据,转变成撷取自服务器所送的、动态的、每次都不一样的数据 何时做关联 正常录制,但是回放不成功,考虑是否关联。 会出现什么错误信息,与系统的错误处理机制有关。 错误信息有可能会提示重新登入,但也有可能直接就显示HTTP 404的错误信息 在LR的log中也有些错误的提示:比如:27979等的信息 一般的关联操作步骤: 1、从服务器返回的数据中选取需要进行关联的数据 2、将该数据存入脚本的参数中 3、将脚本中需要使用该数据的地方用参数化来替代 数据池策略:其他数据类型 Datetime:用当前的日期、时间替换参数 符号描述 c用数字表示完整的日期时间 #c完整的日期(用字符串表示)和时间 Group Name (组名)参数类型: 用Vuser组的名称替代参数。创建方案是,要制定Vuser组的名称,否则运行脚本时,组名始终为无从可用格式中选择其中一种或者新建一种格式,来制定参数的长度 Load Generator Name:在实际运行中,LoadRunner使用该虚拟用户所在Load Generator的机器名来替代 Iteration Number:在实际运行中,测试的循环次数 Random Number:随即取值来替代 Unique Number:唯一编号。在属性设置中可以设置第一个数以及递增的数的大小。 使用该参数类型必须注意可以接受的最大数。注:这里说的递增意思是各个用户取第一个数,最大为块大小 Vuser ID:设置比较简单。在实际运行中,LoadRunner使用该虚拟用户的ID来替换。注:也可设置格式 常用的函数 拷贝一个字符串到另外一个字符串 strcpy(str,hello); strcat函数 添加一个字符串到另外一个字符串的末尾 strcat(str,world); strcmp函数 比较两个字符串,如果相等返回0 strcmp(string1,string2); atoi函数 转换一个字符串为一个整形 atoi(string_to_convert_to_int); itoa函数 根据给定的进制,转换一个整形数据为字符串 itoa(integer_to_conver_to_string,destination_string,base); int sorubtf(char * string,cibst cgar * format_string,args); 格式化数字字符串 sprintf能够将整数打印到字符串中(类似itoa). 如: 把整数123打印到一个字符串保存到s中。 sprintf(s,%d,123);/产生123 可以指定宽度,不足的空格左边补空格 sprintf(s,%8d%8d,123,4567)/产生 123 4567 连接字符串 sprintf能够一次连接多个字符串(优于strcat) 例: char s128; sprintf(s,%s love %s,I,you); 例:参数名称格式化输出到变量中 sprintf(str2,Param_%d,1); lr_message(str2:%s,lr_eval_string(str2); lr_eval_string(参数名); 取得lr参数的数值。可将lr参数转化为C语言变量 strcpy(str,lr_eval_string(Param_1); lr_save_string(字符串变量,参数名); 将字符变量里的值传递给指定参数。通过该函数来改变DateFile类型参数的数值。 lr_save_string(lr_eval_string(Param),param_1); int srand(time) 利用时间设置随即种子。 srand(time(NULL);/利用当前时间设置随即种子 int rand(void): 获得0到最大数之间的随机数 rnd_number=rand()%100;/生成0-99之间的随机数 Memory:内存使用情况是性能中非常重要的因素。如果系统“页交换”频繁,说明内存不足。 “页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从RAM移动到磁盘的过程,其目的是为了释放内存空间。 尽管某些页交换使系统使用比实际更多的内存,也是可以接受的。 但频繁页交换将降低系统性能。减少页交换将更显著提高系统影响速度。 要监控内存不足的情况,请从以下的对象计数器开始: MemoryAvailable MBytes:当前系统的可用内存(以M为单位)至少要有10%的物理内存值。 当处理器向内存指定的位置请求一页(数据或代码)出现错误时,就构成了一个Page Fault 如果该页在内存的其他位置,该错误称为软错误(用Transtion Fault/sec 计数器衡量); 如果该页必须从硬盘上重新读取,称为硬错误。许多处理器可以在有大量软错误的情况下继续操作。但硬错误有可能导致明显的延迟。 Page Faults/sec是处理器每秒处理的错误页(包括软错误和硬错误) Pages Input/sec 是为了解决硬错误页,从硬盘上读取的页数,而Page Reads/sec是为了解决硬错误,从硬盘读取的错误。如果Page Reads/Sec比例持续保存为5,表示可能内存不足 Pages/sec是指解析硬页错误从磁盘读取或者写入磁盘的页数 MemoryCache Bytes文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIs5.0运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化。 System Context Switches/sec指计算机上的所有处理器全部从一个线程转换到另一个线程的综合速率。 为了避免错误,必须保证在恢复一个任务之后,其上下文环境跟即将挂起前是一样的。操作系统内核有责任通过在任务挂起前保存其上下文来确保这种情况。当任务恢复时,保存的上下文就被操作系统内核恢复到先前的执行情况。保存一个被挂起的任务的上下文并在任务恢复时恢复其上下文的这个处理过程就叫上下文切换(context switching)。 如果系统由于应用程序代码效率低下或者系统结构设计有缺陷而导致大量的上下文切换(Context Switches/sec显示的上下文切换次数比较大 ),那么就会占用大量的系统资源。 如果系统的吞吐量降低并且CPU的使用率很高,并且此现象发生时切换水平在15000以上,那么意味着上下文切换次数过高。 %Disk Time:指搜选磁盘驱动器用于为读或写入请求提供服务所用的时间的百分比 Avg.Disk Queue Length:指读取和写入请求(为所选磁盘在实例间隔中队列的)的平均数。该值应不超过磁盘数的1.5-2倍。要提高性能,可能要增加磁盘 Average Disk Read/Write Queue Length:指读取(写入)请求(队列)的平均数 Disk Reads(Write)/s:物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备的最大容量。Bytes Total/sec:为发送和接收字节的速率,包括帧字节在内。判断网络连接速度是否瓶颈,可以用该计数器的质和目前网络的带宽比较 分析原则: 具体问题具体分析(对于不同的应用系统,不同的测试目的,不同的性能关注点) 查找瓶颈时按一下顺序,由易到难 服务器硬件瓶颈-网络瓶颈(对局域网,可以不考虑)-服务器操作系统瓶颈(参数配置)-中间件瓶颈(参数配置,数据库,web服务器等)-应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等) 注:以上过程并不是每个分析都需要的,要根据测试目的和要求来确定分析的深度 分段排除法,很有效 分析的信息来源 1、根据场景运行过程中的错误提示信息 2、根据测试结果收集到的监控指标数据 查看错误发生情况。整个测试过程的错误发生情况是分析的重点。下面是查看错误发生情况的常用准则 查看错误发生曲线在整个测试过程中是否有规律变化(Vuser),如果是,则意味着程序在并发处理方面存在一定的缺陷 查看错误分类统计,作为优化系统的参考 如何选择协议 直接判断 直接判断系统使用的协议,如Web系统使用HTTP/HTML协议,Ftp服务使用办公FTP协议等 通过开发人员了解被测系统的协议 使用数据监听工具分析数据包 借助协议分析工具如:sniffer Pro,ethereal等;可以通过抓取数据然后对数据包进行分析得出相应协议 万能协议Winsocket协议 只要在Windows上的通信软件都可以使用这个协议,但是脚本调试困难,有时包含很多16进制,需要复杂的管理 很多高级协议如FTP,HTTP协议等,以及所有基于window应用(例如IE,WS-FTP)底层都是在Winsocket层上通信 何时选择Winsocket协议 大部分网络协议都是架构在winsocket协议之上的,对于lr不支持的协议,我们可以在winsocket层上录制脚本。或者当找不到何种协议的时候,可以选择winsocket来录制 Winsocket 是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范 是支持TCP/UDP的网络通信的基本操作单元,可以看到不同主机间的进程进行双向通信的断面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 winsocket脚本典型代码 lrs_create_socket(socket0,UDP,LocalHost=0,RemoteHost=doors:2084,LrsLasArg); lrs_create_socket(socket1,TCP,Loaclhost=0,RemoteHost=:80,LrsLasArg); lrs_send(socket0,buf0,LrsLasArg); lrs_receive(socket0,buf1,LrsLasArg); lrs_send(socket1,buf2,LrsLasArg); lrs_send(socket0,buf0,LrsLasArg); lrs_receive(socket0,buf4,LrsLasArg); 这是访问yahoo的一个应用,winsocket先打开一个winsocket连接,然后收发包 第四个文件时data.ws,它里面记载了在action里面所有收发包的内容 buf2包含了/的包,buf5包含了从server收到的回应 在buf序列号的后面是buff的字节数 注:很多buff中只有!,可以注视掉 注意 录制脚本时data.ws文件被创建,文件中收到的buffer内容在每次运行时不变 lr指判断buffer数据包大小,而不是具体内容,收到boo,server响应roo,对而server响应root就不对 lrs_save_searched_string 将静态或接受到的缓冲区中搜索指定的字符串,将出现字符串的缓存区部分保存到参数中 lrs_save_param 将静态或接受到的缓冲区保存到参数中 lrs_save_param_ex 将用户静态或接受到的缓冲区保存到参数中 通信层 Winsock,www,wap,net load 数据层 ODBC,MY SQL Server,Oracle,Oracle Forms Server,Sybase,DB2,ADO 应用层 SAP,Tuxedo,Uniface,Java workbench产生测试脚本c,c编译后生成dll文件 conductor产生一个session文件,里面保存了player信息和dll信息 conductor执行一个session,把dll交给player来运行 olayer执行dll,产生一个timing文件 conductor把所有player产生的timing文件交给Analyze分析 analyze生成各种报表,把测试结果展现给用户测试用例相关知识 测试过程中遇到的问题 不知道是否全面的测试了所有内容 测试的覆盖率无法衡量 对新版本的重复测试很难实施 存在大量的冗余测试影响测试效率 和别人合作时,出现冗余测试 测试用例 为实施测试而向被测试系统提供的输入数据,操作或各种环境设置以及期望结果的一个特定结合 解决要测什么,怎么测,和如何衡量的问题 用途 执行测试,发现缺陷 重复执行测试,发现缺陷 管理测试过程 回归测试,验证缺陷是否修复 优点 使测试更加方便的执行 提高测试效率 节省执行测试的时间 使测试更能按照时间计划执行 使测试过程更方便管理收集资料 需求文档 设计文档 遗留系统相关文档 与相关人员讨论 探索性测试 探索性测试与经过深思熟虑的、计划好的设计过程有所不同,它并不预先设计测试用例或者精确地按照一个计划来执行,它依靠的是测试人员的知识水平和创造力可用于重现和分析缺陷、研究缺陷和程序其他模块的相关性 是测试用例有利的补充 具体问题具体分析测试用例 项目名称(版本)-模块名称-测试功能项 测试人员-测试时间 测试目的-预设条件-其他参考信息 用例编号-相关用例 用例说明-输入条件-执行方法 预期结果 测试结果 结果编号黑盒测试 黑盒测试被称为功能测试或者数据驱动测试 测试时,把被测程序视为已个不能打开的黑盒子,在不考虑内部结构和内部特性的情况下进行。灰盒测试 灰盒测试,介于白盒测试与黑盒测试之间的测试 灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒那样详细,完整明知是通过一些表征性的现实,时间,标志来判断内部的运行状态 意义:有时实现正确,但内部有错误,但每次都进行白盒测试,效率会很低,因此需要采取灰盒测试。 黑盒测试的方法等价类划分 按照需求规格说明书,把程序输入域划分成若干部分,从每个部分中选取少数代表性数据当作测试用例。经过这种划分后,每一类的代表性数据在测试中的作用都等价于这一类中的其他值 等价类的划分分为有效的和无效的 合理的、有意义的输入数据构成的集合是有效等价类 不合理的、无意义的输入数据构成的集合是无效等价类。用来检查程序中功能的实现是否不符合规格说明要求 提供了完备性 保证了无冗余性 减少测试用例 边界值 决策表 猜错法确定测试用例根据等价类来设计测试用例,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源行业碳排放权交易市场政策解读报告
- 2024-2025学年度公务员(国考)常考点试卷【名师系列】附答案详解
- 广发银行贵阳市观山湖区2025秋招小语种岗笔试题及答案
- 招商银行青岛市李沧区2025秋招笔试创新题型专练及答案
- 浦发银行南京市浦口区2025秋招结构化面试经典题及参考答案
- 农发行绥化市青冈县2025秋招笔试EPI能力测试题专练及答案
- 华夏银行济南市槐荫区2025秋招笔试价值观测评题专练及答案
- 光大银行吉安市吉州区2025秋招笔试性格测试题专练及答案
- 浦发银行朔州市朔城区2025秋招笔试英语题专练及答案
- 浦发银行衡阳市雁峰区2025秋招信息科技岗笔试题及答案
- 国开电大《工程数学(本)》形成性考核作业5答案
- 部编版五年级上册语文教案1-6单元(表格式)
- GB/T 4798.5-2007电工电子产品应用环境条件第5部分:地面车辆使用
- GB/T 4513-2000不定形耐火材料分类
- 12YJ6 外装修标准图集
- 阅读与思考(选学)为什么要证明课件
- HPLC高效液相色谱解读课件
- 中医诊断学望诊
- DN1000顶管施工方案
- 《外科学》第七节 直肠癌
- DB32∕T 2975-2016 水运工程建设管理用表
评论
0/150
提交评论