性能测试面试题大全

简答题(2*10=20分)
客户交付一个性能测试项目,请阐述你的实施流程。
答案:

测试设计阶段:

1)了解被测系统的性能需求,定义测试目标和范围;

2)了解系统的技术信息,如系统架构等;

3)确定测试方案、进度安排,并制定测试计划,场景设置方案,及需要收集的测试数据;

4)同相关人员协商讨论测试方案;

5)准备数据收集模板;不同项目的性能测试,需要收集的数据不同;针对性的制定一个模板,更符合需要;

测试环境准备:

1)技术准备;选择性能测试工具;测试方案中涉及到的技术问题;测试数据的收集方案实现;如:如何监控系统资源等;

2)搭建测试环境;

3)创建初始数据;如虚拟用户使用的账号等;

测试执行阶段:

1)录制脚本;

2)调试脚本;

3)执行场景;

4)收集测试数据,并简单整理;

测试分析阶段:

1)分析测试数据;

提交测试报告。

解释5个常用的性能指标的名称与具体含义。
答案:

并发:所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作。
在线:所有用户在一段时间内对系统执行操作。
请求响应时间
从client端发出请求到得到响应的整个时间;

      包括:client端响应时间+网络响应时间+Server端响应时间。

事务请求响应时间
完成相应事务所用的时间;这个是性能测试中重点关注的指标。

TPS(Transaction Per Second)
每秒钟系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。TPS是LoadRunner中重要的性能参数指标。

点击率(Hit Per Second)
每秒发送的HTTP请求的数量;点击率越大对Server的压力越大

资源利用率
对不同资源的使用程度,如CPU,I/O,内存,……

写出5个Loadrunner中常用函数,并对其中2个举例说明用法。

答案:

字符串复制

strcpy(str,"Hello ") ;

字符串连接

strcat(str,"World !");

lr_message("str: %s",str);

sprintf(s, "%s love %s.", "I", “ocean"); //产生:“I love ocean. "

变量转为参数,将变量str的值存到参数Param中

lr_save_string(str,"Param");

参数复制

lr_save_string(lr_eval_string("{Param}"),"Param_1");

参数转为变量

strcpy(str1,lr_eval_string("{Param_1}"));

简述LoadRunner的工作原理?

答案:loadrunner会自动监控指定的URL或应用程序所发出的请求及服务器返回的响应,它做为一个第三方(Agent)监视客户端与服务器端的所有对话,然后把这些对话记录下来,生成脚本,再次运行时模拟客户端发出的请求,捕获服务器端的响应。

什么是集合点?设置集合点有什么意义?LoadRunner中设置集合点的函数是哪个?

答案:集合点:是一个并发访问的点,例如在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,并发访问的目的。
注意:集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。集合点函数如下:lr_rendezvous(“SubmitData”)

HTML-based script与URL-based script的脚本有什么区别?

答案:使用“HTML-based script”的模式录制脚本,VuGen为用户的每个HTML操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-based script”模式录制脚本时,VuGen可以捕获所有作为用户操作结果而发送到服务器的HTTP请求,然后为用户的每个请求分别生成对应方法。

通常,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。

如何设置LaodRunner才能让集合点只对一半的用户生效?

答案:在Loadrunner中,进入Controller->Scenario->Rendezvous …->Policy,系统弹出Policy对话框。在该对话框中可以设定集合点执行的策略。

第一项:表示当所有用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。

第二项:表示当前正在运行用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。

第三项:表示当X个用户到达集合点时,开始释放等待的用户并继续执行场景。

其中还有一项Timeout between Vusers,就30秒来说,当第一个用户到达集合点后,再等待30秒,如果在30秒内到达的用户数达到指定的数量,就开始继续执行场景。如果在30秒内还没有达到指定的用户数量,就不再等待,开始释放等待的用户并继续执行场景。

由上可知,将第一项用户数设置成50%可。

LoadRunner的Controller组件中Pacing参数的作用是什么?

答案: 设置LoadRunner中事务(trsaction)在每次循环中的间隔时间,系统可以利用该间隔时间进行相应事务的结束收尾工作的处理。加大Pacing参数,可使系统压力减小。

LoadRunner中如何监控Windows资源?

答案:进入被监视windows系统,开启以下二个服务:Remote Procedure Call(RPC)和Remote Registry Service;在controller 中,Windows Resources窗口中右击鼠标选择Add Measurements,添加被监控windows的IP地址,选择所属系统,然后选择需要监控的指标就可以开始监控。

如果让QALoad模拟LoadRunner中只对关注的性能点进行迭代测试,你有什么好方法?

答案:可以将QAload脚本中关注的事务点写成一个循环,如果进行长时间的综合场景测试,则可将其写成一个永真循环,如while (1) {事务点},则对关注的性能点进行循环,而脚本其他代码不会进行循环。

什么是负载测试?

负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。

什么是性能测试?
 性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等),确定系统所能承受的最大负载压力。

说明负载测试过程?

第一步:计划测试。在这里,我们需开发一个明确定义的测试计划,以确保该测试方案能完成负载测试目标。第二步:创建虚拟用户。创建的脚本需要包含单个虚拟用户需要执行的操作、多个虚拟用户作为一个整体要执行的操作、以及能够作为事务来度量的操作。第三步:创建场景。一个场景描述了在一个测试会话中发生的事件。它包含了当场景中运行时的机器、脚本和虚拟用户。我们使用LoadRunner中的Controller创建场景。我们可以创建手动场景也可以创建基于目标的场景。在手动场景中,我们定义虚拟用户的数量、负载生成器、被分配到每个脚本中虚拟用户的百分比。对于web测试,我们创建基于目标的场景,其中目标即测试过程中要达成的性能目标。LoadRunner会由此自动为我们创建一个场景。第四步:运行场景。我们通过配置多个虚拟用户同时执行任务来模拟对服务器加压。在测试之前,我们设置场景的配置和计划安排。我们可以运行整个场景、一组虚拟用户或单个虚拟用户。第五步:监控场景。我们使用LoadRunner联机运行来监测场景执行、事务系统资源,Web资源,Web服务器资源,Web应用服务器资源,数据库服务器资源,网络延迟,流媒体资源,防火墙服务器资源,ERP服务器资源,Java性能监视器。第六步:分析测试结果。在场景执行时,LoadRunner记录了应用软件在不同负载下的性能。我们可以使用LoadRunner的图表和报告来分析应用软件的性能。

我们什么时候做负载和性能测试?

我们一旦完成界面(GUI)测试,我们就可以执行负载测试。现代的软件系统架构庞大而复杂的。而单用户测试主要是侧重于系统组件的功能和用户界面的测试,应用测试侧重于整个系统的性能和可靠性。例如,一个典型的应用测试场景,描绘了1000个用户,同时登录到系统。这就产生了问题,如系统的响应时间是多少,它会崩溃么;是否兼容不同的应用软件和系统平台;它是否可以支撑成千上万的用户等,这时我们就需要做负载和性能测试。

什么是LoadRunner的组件?
LoadRunner的组件有虚拟用户生成器,控制器、代理程序、LoadRunner的分析器和监控器,LoadRunner在线帮助

你用LoadRunner的哪个组件录制脚本?
虚拟用户生成器(VuGen)可以用来录制脚本。它通过多种应用程序类型和通讯协议来确保你开发一个Vuser脚本。

在多用户模式下你用LoadRunnner的哪个组件来回放脚本?

虚拟用户生成器(VuGen)可以用来录制脚本。它通过多种应用程序类型和通讯协议来确保你开发一个Vuser脚本。

在多用户模式下你用LoadRunnner的哪个组件来回放脚本?
Controller组件可以用来在多用户模式下回放脚本。这个过程可以在一组虚拟用户以组的形式执行脚本的场景中运行时完成。

什么是场景
场景定义了发生在每个测试会话中的事件。例如,一个场景定义和控制了要加载的虚拟用户的数量,要被执行的动作,虚拟用户模拟压力时的机器。

解释Web Vuser脚本的录制模式
我们使用VuGen通过记录一个用户在客户端执行典型的业务流程来开发一个Vuser脚本。VuGen通过记录客户端和服务器之间的交互来创建脚本。例如,基于Web的应用程序,VuGen监测客户端直到数据库,跟踪所有发送出的请求,再从数据库服务器接收。我们使用VuGen:监测应用程序和服务器的交互;使形成函数调用;插入生成的函数调用到一个Vuser脚本中。

为什么创建参数?

参数就像脚本中的变量。他们被用来改变对服务器的输入值来模拟真正的用户。每次当脚本运行时,不同的数据设置被发送到服务器。为了更精确的在Controller中测试,从而更好的模拟使用模型;一个脚本在系统上模拟很多不同的用户。

什么是关联?解释自动关联和手动关联的区别

关联是用来获取每次脚本运行时由嵌套请求产生的唯一的数据。关联提供值以避免产生重复值的错误,并且优化代码(避免嵌套请求)。自动关联是我们自己为关联设置的一定规则。它可以是应用服务器特定的。这里的值被通过规则创建的数据取代。在手动关联里,我们要关联的值被浏览和创建关联以用来关联。

什么是关联?解释自动关联和手动关联的区别
你在哪里设置自动关联的选项

从web自动关联的观点来说,可以在录制选项中和关联表单中设置。这里我们可以使整个脚本关联,选择在线信息或者离线的动作,在这里我们可以定义关联的规则。为数据库自动关联可以使用显示输出窗口和为了关联浏览,找出关联查询的图表,选择我们想关联的查询值来完成。如果我们知道要被关联的特殊值,我们只用为这个值创建关联,指定如何创建这个值

什么函数可以捕捉到web Vuser脚本的动态值?

Web_reg_save_param函数保存动态的数据信息到一个参数中。

什么时候你在虚拟用户产生器中禁用日志,什么时候选择标准日志和扩展日志?

一旦我们调试脚本来验证它的功能,我们可以只记录错误。当我们在场景中添加一个脚本,日志记录将自动被禁用。标准日志选项:当您选择标准日志,它在脚本执行调试时创建一个标准的功能和发送信息的日志。大负荷的测试场景时,禁用此选项。当你复制一个脚本到一个场景,日志自动禁用扩展日志选项:选择扩展日志创建一个扩展的日志,包括警告和其他信息。禁用此选项为大负荷的测试场景。当你复制一个脚本的场景,将被自动禁用日志记录。我们可以指定附加信息,用扩展日志选项添加到扩展日志中。

你如何调试LoadRunner的脚本?

VuGen包含两个选项帮助调试VuGen脚本—通过逐步命令和断点运行某一步。选项对话框中的Debug设置,使我们决定在场景运行期间进行跟踪的程度。Debug信息被写到输出窗口,我们可以使用lr_set_debug_message函数手动设置你的脚本中的信息类。如果我们希望得到关于一小部分脚本的调试信息时,这就有意义了。

你怎么写LR中用户自定义的函数?写几个你以前项目中的函数?

在我们创建用户自定义的函数之前我们需要创建外部的库函数。我们添加这个库到VuGen bin目录下。一旦库被添加,然户我们分配给用户自定义的函数作为参数。函数应该有以下格式:__declspec(dllexport)char<函数名称>(char,char *)。用户自定义函数如下:GetVersion,GetCurrentTime,GetPltform,这些都是我之前的项目中用到的用户自定义的函数。

在run-time setting里你可以设置哪些改变?
Run Time Setting中我们所做的是:a)Pacing—它有迭代次数。b)Log—在此,我们有已禁用的标准日志。c)扩展Think Time—在Think Time里有两个选项,忽略think time和回放think time。d)General—在General选项卡中,我们可以设置vusers作为进程或者多线程,将每一步作为一个事务。

你在哪里设置Vuser测试时迭代?
我们在VuGen中的Run Time Setting中设置迭代。这个导航是Run Time Setting,Pacing选项卡,设置迭代次数。

你如何在负载下执行功能测试?
负载下的功能可以通过同时运行多个Vuser来测试。通过增加一定数量的Vuser,我们可以判断服务器可以承受多少负载。

什么是Ramp up?你如何设置?
这个选项被用来逐步增加Vuser的数量/服务器上的负载。初始值设置,间隔的等待值可以被指定。要设置Ramp up,进入“场景调度选项”

Vuser作为线程运行的优势是什么?
VuGen提供使用多线程的设施。这使每个产生器中运行更多的Vuser。如果Vuser作为进程运行,相同的驱动程序为每个Vuser加载到内存,从而占用大量的内存。这限制了在单发生器中运行的Vuser的数量。如果Vuser作为线程运行,为给定数量的Vuser(如100),只有一个驱动程序的实例被加载到内存。每个线程共享父驱动程序的内存,从而使每个产生器运行更多的Vuser。

如果你想停止执行出错的脚本,怎么做?
Lr_abort函数中止执行Vuser 脚本。它指示Vuser停止执行Action部分,执行vuser_end部分,并结束执行。这个函数是有用的,当你需要手工停止一个脚本的执行,作为一个指定错误条件下的结果。当你使用这个函数停止一个脚本,Vuser被分配成停止状态。为让它生效,我们必须首先在Run—Time Setting中取消选择“Continue on error”

响应时间和吞吐量间的关系是什么?
吞吐量图表显示的是Vuser每秒从服务器收到的以字节为单位的数据量。当我们比较它和事务响应时间,我们会发现,若吞吐量下降,响应时间也会下降。同样,高峰时期的吞吐量和最高的响应时间大约在同一个时间。

你如何识别性能瓶颈?
性能瓶颈可以使用监控器监测。这些监控器可能是应用服务器监控器、web服务器监控器和网络监控器。它们帮助找出在场景中导致响应时间增加有问题的区域。通常所做的测试指标是性能响应时间、吞吐量,点击率,网络延迟图等

如果web服务器、数据库服务器、网络都一切正常,那么哪里可能有问题?
问题可能是系统本身,应用程序服务器或为应用程序编写的代码。

你如何找出web服务器相关的问题?
利用web资源监控器,我们可以发现web服务器的性能。使用这些监测器我们可以分析发生在场景中的web服务器的吞吐量,每秒点击数、以及每秒HTTP响应数,每秒下载的网页数量。

你是怎么找到数据库中的相关问题?
监视运行“数据库”监测器和在“数据资源图”的帮助下,我们可以发现数据库中的相关问题。例如您可以在Controller运行前指定您想要的资源来监控,然后你可以看到数据库中的相关问题

覆盖图和关联图之间的区别是什么?
覆盖图:它覆盖两个图表的内容,使共用一个X轴。合并后的图形左Y轴显示当前图形中的值,右Y轴显示合并图的Y轴的值。关联图:绘制相互对立的两个图表的Y轴。活动图的Y轴,成为合并后的图的X轴。合并图的Y轴成为合并后的图的Y轴

你是怎么计划负载的?标准是什么?
计划负载测试,以决定用户数量,我们将使用的机器型号,在哪里运行。它是基于两个重要文件,任务分配图和事务状况。任务分配图,给我们提供用户数量为一个特定的业务信息和负载时间。从这个图决定使用高峰期和不工作时段。事务配置文件,为我们提供了有关交事务方面的情况,包括事务的名称和我们决定的它们关于场景的优先等级。

vuser_init动作包含什么?
Vuser_init动作包含登录到服务器的程序

vuser_end动作包含什么?
Vuser_end部分包含注销的程序。

什么是Think Time?你如何改变这个阈值?
Think Time是一个真实的用户动作之间的等待时间。例如:当一个用户从服务器接收数据时,用户可以在响应前等待几秒钟来检查响应数据。此延迟就是Think Time。更改这个阈值:阈值是一个标准水平,思考时间低于阈值水平时将被忽略,Vugen不会生成思考时间语句。默认值是5秒。我们可以在Vugen录制选项中改变Think Time阈值。

简述使用Loadrunner的步骤
制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果

什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?
在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;
  集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。
  设置集合点函数:lr_rendezvous(“Meeting”); // Meeting是集合点名称

请解释一下如何录制web脚本?
请解释一下自动关联和手动关联的不同。
哪个函数是用来截取虚拟用户脚本中的动态值?(手工关联)
Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。
  1.函数原型:
  int web_reg_save_param (const char *ParamName, , LAST);
  2.参数说明:
  ParamNam:存放动态数据的参数名称
  List of Attributes:其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。

你何在负载测试模式下执行功能测试?
在负载测试模式下,可以通过同时运行数个虚拟用户,通过增加虚拟用户数,确定服务器在多大的负载量下,仍然可以正常运行,我一般进行核心功能操作,验证核心功能运行是否正常。

什么是逐步递增?你如何来设置?
虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。
  可以在“加压”选项卡中进行设置:如下图所示,将设置更改为:“每 30 秒启动 2 个 Vuser”

当你需要在出错时停止执行脚本,你怎么做?
响应时间和吞吐量之间的关系是什么?
当系统吞吐量未达到系统处理极限时,系统性能不会衰减,交易平均响应时间一般也不会递增,当系统达到吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,故交易平均响应时间一般会递增。

说明一下如何在LR中配置系统计数器?
以windows资源监控为例,可右键点“添加度量”,输入系统IP、选择平台类型,确定即可,详细参加LR自带操作手册_
  对于监控不同类型的操作系统,需要做一些准备工作,可参见监控操作系统资源部分。

.如果web服务器、数据库以及网络都正常,问题会出在哪里?
如何发现web服务器的相关问题?
.如何发现数据库的相关问题?
解释所有web录制配置?
你如何设计负载?标准是什么?
什么是吞吐量?
在LoadRunner中为什么要设置思考时间和pacing
录制时记录的是客户端和服务端的交互,如果要精确模拟 用户的行为,那么客户操作客户端时花费了很多时间要怎么模拟呢?

录入 填写提交的内容,从列表中下拉搜索选择特定的值等,这时LOADRUNNER 不会记录用户 的客户端操作,而是记录了用户这段

时间,成为思考时间(Think-time),因为用户的这些客户端操作不会影响服务端,只是让服务器端在这段时间内没有请求而已。,所

以加入思考时间就能模拟出熟练的或者生疏的用户操作,接近实际对于服务端的压力。

Vuser 思考时间模拟实际用户在不同操作之间等待的时间。例如,当用户收到来自服务器的数据时,可能要等待几秒钟查看数

据,然后再做出响应。这种延迟就称为“思考时间”。VuGen 使用 lr_think_time 函数将思考时间值录制到 Vuser 脚本中。以下录

制的函 数指明用户等待了 8 秒钟才执行下一个操作:

lr_think_time(8);

当您运行了 Vuser 脚本并且 Vuser 遇到了上述 lr_think_time 语句时,默认情况下,Vuser 将等待 8 秒钟后再执行下一个操作。可

以使用思考时间运行时设置来影响运行脚本时 Vuser 使用录制思考时间的方式。

如何理解TPS?

TPS主要还是体现服务器对当前录制的事务的处理速度快慢。TPS高并不代表性能好。

TPS 是Transactions Per Second 的 缩 写,也就是事务数/ 秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服

务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时

间和完成的事务个数,最终利用这些信息来估计得分。客户机使用加权协函数平均方法来计算客户机的得分,试软件就是利用

客户机的这些信息使用加权协函 数平均方法来计算服务器端的整体TPS得分。

loadrunner中的设置线程和进程的区别
loadrunner中,在进行运行设置中有一项选择,是按进程运行Vuser或按线程运行Vuser?下面进行分别来讲:

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也在等待其他资源释放才能继续。这就会出现这样的问题:同一个测试场景,用线程并发就会超时失败或报错,而用进程并发就没错。

虽然会有区别,但两种方式的运行都会给服务端造成的压力是一样的。

loadrunner如何遍历一个页面中的url并进行访问?
HTML-Based scrīpt 和URL-Based scrīpt 录制的区别?
基于浏览器的应用程序推荐使用HTML-Based scrīpt。

不是基于浏览器的应用程序推荐使用URL-Based scrīpt。

如果基于浏览器的应用程序中包含了Java scrīpt并且该脚本 向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-Based scrīpt方式录制。

基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-Based scrīpt方式录制。

录制过程中不要使用浏览器的“后退”功能,LoadRunner对其支持不太好。

本次通过loadRunner录制SQL Server介绍一下如何测试一个sql语句或存储过程的执行性能。
主要分如下几个步骤完成:

第一步、测试准备

第二步、配置ODBC数据源

第三步、录制SQL语句在Sql Server查询分析器中的运行过程

第四步、优化录制脚本,设置事务

第五步、改变查询数量级查看SQL语句的性能

第六步、在controller中运行脚本

LoadRunner如何创建脚本?
启动VuGen:选择需要新建的协议脚本,可以创建单协议,或是多协议脚本

  1. 点击Start Record按钮,输入程序地址,开始进行录制

  2. 使用VuGen进行录制:创建的每个 Vuser 脚本都至少包含三部分:vuser_init、一个或多个 Actions 及vuser_end。录制期间,可以选择脚本中 VuGen 要插入已录制函数的部分。运行多次迭代的Vuser 脚本时,只有脚本的Actions部分重复,而vuser_init和vuser_end部分将不重复

LoadRunner如何设置Recording Options 选项?(以单协议http/html为例)
1.菜单tools->Recording Options进入录制的设置窗体

2.Recording标签页:选用哪种录制方式

3.Browser标签页:浏览器的选择

4.Recording Proxy 标签页:浏览器上的代理设置

5.Advanced 标签页:可以设置录制时的think time,支持的字符集标准等

6.Correlation标签页:手工设置关联,通过关联可在测试执行过程中保存动态值。使用这些设置可以配置 VuGen 在录制过程中执行的自动关联的程度。

LoadRunner如何选择协议?
LoadRunner属于应用在客户端的测试工具,在客户端模拟大量并发用户去访问服务器,从而达到给服务器施加压力的目的。所以说LoadRunner模拟的就是客户端,其脚本代表的是客户端用户所进行的业务操作,即只要脚本能表示用户的业务操作就可以。

1.LR支持多种协议,请大家一定要注意,这个地方协议指的是你的Client端通过什么协议访问的Server,Client一般是面向最终使用者的,Server是第一层Server端,因为现在的体系架构中经常Server层也分多个层次,什么应用层,什么数据层等等,LR只管Client如何访问第一层Server.

2.特别要注意某些应用,例如一个Web系统,这个系统是通过ActiveX控件来访问后台的,IE只是一个容器,而ActiveX控件访问后台是通过COM/DCOM协议的,这种情况就不能使用Web协议,否则你什么也录制不到,所以,LR工程师一定要了解应用程序的架构和使用的技术。   3. 象HTTPS,一般来讲一定要选择多协议,但在选择具体协议的时候一定只选Web协议,这时候才能作那个端口映射。

n通常协议选择

1.对于常见的B/S系统,选择Web(Http/Html)

2.测一个C/S系统,根据C/S结构所用到的后台数据库来选择不同的协议,如果后台数据库是sybase,则采用sybaseCTlib协议,如果是SQL server,则使用MS SQL server的协议,至于oracle 数据库系统,当然就使用Oracle 2-tier协议。

3.对于没有数据库的C/S(ftp,smtp)这些可以选择Windwos Sockets协议。

4.至于其他的ERP,EJB(需要ejbdetector.jar),选择相应的协议即可.

  1. 一般可以使用Java vuser协议录制由java编写的C/S模式的软件, ,当其他协议都没有用时,只能使用winsocket协议

Loadrunner支持哪些常用协议?
Web(HTTP/HTML)

Sockets

.net 协议

web services

常用数据库协议(ODBC,ORACLE,SQLSERVER 等)

邮件(SMTP、pop3)

其它协议

性能测试的类型都有哪些?
负载测试(Load Test)

通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。

压力测试(Stress Test)

通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能够提供的最大服务级别的测试。

压力测试是一种特定类型的负载测试。

疲劳强度测试

通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。

疲劳强度测试可以反映出系统的性能问题,例如内存泄漏等。

大容量测试(Volume Test)

对特定存储、传输、统计、查询业务的测试。

Loadrunner常用的分析点都有哪些?
Vusers:

提供了生产负载的虚拟用户运行状态的相关信息,可以帮助我们了解负载生成的结果。

Rendezvous(负载过程中集合点下的虚拟用户):

当设置集合点后会生成相关数据,反映了随着时间的推移各个时间点上并发用户的数目,方便我们了解并发用户的变化情况。

Errors(错误统计):

通过错误信息可以了解错误产生的时间和错误类型,方便定位产生错误的原因。

Errors per Second(每秒错误):

了解在每个时间点上错误产生的数目,数值越小越好。通过统计数据可以了解错误随负载的变化情况,定为何时系统在负载下开始不稳定甚至出错。

Average Transaction Response Time(平均事务响应时间):

反映随着时间的变化事务响应时间的变化情况,时间越小说明处理的速度越快。如果和用户负载生成图合并,就可以发现用户负载增加对系统事务响应时间的影响规律。

Transactions per Second(每秒事务):

TPS吞吐量,反映了系统在同一时间内能处理事务的最大能力,这个数据越高,说明系统处理能力越强。

Transactions Summary(事务概要说明)

统计事物的Pass数和Fail数,了解负载的事务完成情况。通过的事务数越多,说明系统的处理能力越强;失败的事务数越小说明系统越可靠。

Transaction performance Summary(事务性能概要):

事务的平均时间、最大时间、最小时间柱状图,方便分析事务响应时间的情况。柱状图的落差越小说明响应时间的波动小,如果落差很大,说明系统不够稳定。

Transaction Response Time Under Load(用户负载下事务响应时间):

负载用户增长的过程中响应时间的变化情况,该图的线条越平稳,说明系统越稳定。

Transactions Response time(事务响应时间百分比):

不同百分比下的事务响应时间范围,可以了解有多少比例的事物发生在某个时间内,也可以发现响应时间的分布规律,数据越平稳说明响应时间变化越小。

Transaction Response Time(各时间段上的事务数):

每个时间段上的事务个数,响应时间较小的分类下的是无数越多越好。

Hits per Second(每秒点击):

当前负载重对系统所产生的点击量记录,每一次点击相当于对服务器发出了一次请求,数据越大越好。

Throughput(吞吐量):

系统负载下所使用的带宽,该数据越小说明系统的带宽依赖就越小,通过这个数据可以确定是不是网络出现了瓶颈。

HTTP Responses per Second(每秒HTTP响应):

每秒服务器返回各种状态的数目,一般和每秒点击量相同。点击量是客户端发出的请求数,而HTTP响应数是服务器返回的响应数。如果服务器的响应数小于点击量,那么说明服务器无法应答超出负载的连接请求。

Connections per Second(每秒连接):

统计终端的连接和新建的连接数,方便了解每秒对服务器产生连接的数量。同时连接数越多,说明服务器的连接池越大,当连接数随着负载上升而停止时,说明系统的连接池已满,通常这时候服务器会返回504错误。需要修改服务器的最大连接来解决该问题。

LoadRunner不执行检查方法怎么解决?

在录制Web协议脚本中添加了检查方法Web_find,但是在脚本回放的过程中并没有执行。

错误现象:在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,但是在回放过程中并没有对设置的检查点进行检查,即Web_find失效。

错误分析:由于检查功能会消耗一定的资源,因此LoadRunner默认关闭了对文本以及图像的检查,所以在设置检查点后,需要开启检查功能。

解决办法:打开运行环境设置对话框进行设置,在“Run-time Settings”的“Internet Protocol”选项里的“Perference”中勾选“Check”下的“Enable Image and text check”选项。

并发用户数是什么?跟在线用户数什么关系?
并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响。因此,并发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量,这种交互既可以是单向的传输数据,也可以是双向的传送数据。

  并发用户数是指系统运行期间同一时刻进行业务操作的用户数量。

  该数量取决于用户操作习惯、业务操作间隔和单笔交易的响应时间。

  使用频率较低的应用系统并发用户数一般为在线用户数的5%左右。

  使用频率较高的应用系统并发用户数一般为主线用户数的10%左右

LoadRunner请求无法找到如何解决?
在录制Web协议脚本回放脚本的过程中,会出现请求无法找到的现象,而导致脚本运行停止。

错误现象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]

Action.c(41): web_submit_form. highest severity level was “ERROR”,0 body bytes, 0 header bytes [MsgId: MMSG-27178]”

这时在tree view中看不到此组件的相关URL。

错误分析:所选择的录制脚本模式不正确,通常情况下,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这时则使用“URL-based script”模式进行录制。

解决办法:打开录制选项配置对话框进行设置,在“Recording Options”的“Internet Protocol”选项里的“Recording”中选择“Recording Level”为“HTML-based script”,单击“HTML Advanced”,选择“Script. Type”为“A script. containing explicit”。然后再选择使用“URL-based script”模式来录制脚本。

LoadRunner HTTP服务器状态代码都有哪些?如何解决?
在录制Web协议脚本回放脚本的过程中,会出现HTTP服务器状态代码,例如常见的页面-404错误提示、-500错误提示。

错误现象1:-404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运行直到结束。

错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。

解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。

错误现象2:-500 Internal Server Error服务器内部错误,脚本运行停止。

错误分析:服务器碰到了意外情况,使其无法继续回应请求。

解决办法:出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,此时需要此程序的开发人员配合来解决,而且产生的原因根据实际情况来定,测试人员无法单独解决问题,而且应该尽快解决,以便于后面的测试

HTTP的超时有哪三种?
HTTP-request connect timeout、HTTP-request receive timeout、step download timeout

在什么地方设置HTTP页面filter?
在runtime_settings中download filter里面进行设置。

如何设置可以让一个虚拟IP对应到一个Vuser?
利用线程和进程做中介,逻辑上的对应。

选中Expert Mode,设置Options中的General

什么是contentcheck?如何来用?
ContentCheck的设置是为了让VuGen 检测何种页面为错误页面。如果被测的Web 应用没有使用自定义的错误页面,那么这里不用作更改;如果被测的Web 应用使用了自定义的错误页面,那么这里需要定义,以便让VuGen 在运行过程中检测,服务器返回的页面是否包含预定义的字符串,进而判断该页面是否为错误页

面。如果是,VuGen就停止运行,指示运行失败。

使用方法:点击在runtime settings中点击“contentcheck”,然后新建立一个符合要求的应用程序和规则,设定需要查找的文本和前缀后缀即可使用。

network中的speed simulation是模拟的什么带宽?
模拟用户访问速度的带宽。

生成WEB性能图有什么意义?大概描述即可。
可以很直观的看到,在负载下系统的运行情况以及各种资源的使用情况,可以对系统的性能瓶颈定位、性

能调优等起到想要的辅助作用。

WAN emulation是模拟什么的?
可以很直观的看到,在负载下系统的运行情况以及各种资源的使用情况,可以对系统的性能瓶颈定位、性

能调优等起到想要的辅助作用。

如何设置才能让集合点只对一半的用户生效?
在设置windows资源图监控的时候,用到的是什么端口和协议?在这一过程中,会有大概哪些问题?(大概描述)
microsoft-ds :445 ;要有权限、开启服务。树视图和脚本视图各有什么优点?

需要关联的数据怎么确定?

树视图和脚本视图各有什么优点?
Tree View的好处是使用户更方便地修改脚本,Tree View支持拖拽,用户可以把任意一个节点拖拽到他想

要的地方,从而达到修改脚本的目的。用户可以右键单击节点,进行修改/删除当前函数参数属性,增加函

数等操作,通过Tree View能够增加LoadRunner提供的部分常用通用函数和协议相关函数。

Script View适合一些高级用户,在Script View中能够看到一行行的API函数,通过Script View向脚本中增加一些其他API函数,对会编程的高手来说很方便

LR中的API分为几类?
A:通用的API:,就是跟具体的协议无关,在任何协议的脚本里都能用的;

B:针对协议的:像lrs前缀是winsock的;lrd的是针对database;

C:自定义的:这个范围就比较广了;

解释以下函数及他们的不同之处。
Lr_debug_message

Lr_output_message

Lr_error_message

Lrd_stmt

Lrd_fetch

二、选择题(2*5=10分)

During the run of a scenario, which LoadRunner component stores the performance monitoring data?B
A. Analysis B. Controller C. File server D. Load generator/host

Where are the results stored during the run of a scenario?D
A. Analysis B. Controller C. Utility server D. Load generator

A script was recorded with an average think time for an advanced user. An advanced user pauses 5 seconds between clicks. A first-time user pauses an average of 10 seconds between clicks. How can you modify the think time run-time settings to emulate a first-time user?C
A. Set the think time to s recorded
B. Set the think time to multiply the recorded think time by 4
C. Set the think time to a random percentage between 150% - 250%
D. Set the think time to replay as recorded, but limit the think time to 10 seconds
Which HTTP error code indicates that an individual business process is failing under load or the web application itself has crashed?D
200 B. 403 C. 401 D. 500
What is an intersection point in a business process?B
A. Scenario B. Rendezvous C. Transaction D. Service level agreement

三、LoadRunner工具使用题:(10*2=20分)

web系统中,username参数表为file类型,表中有12个值,分别A、B、C、D、E、F、G、H、I、J、K、L。测试场景中虚拟并发用户数设为4,迭代次数设为3,参数中Select next row与Update value on分别为(Sequential, Each Iteration)与(Unique, Once)时,写出迭代3次的取值情况。
(Select next row, Update value on) 虚拟用户取值(VUi:迭代时取值)

(Sequential, Each Iteration)

VU1:

VU2:

VU3:

VU4:

(Unique, Once)

VU1:

VU2:

VU3:

VU4:

web系统脚本录制过程中,两次录制同一功能点,在View Tree的Server Response中产生的字符串分别为:
Server Response:name="_id_Node " value=" RSDP0013425" />", ENDITEM,

Server Response:name="_id_Node " value=" RSDP1203655" />", ENDITEM,

为脚本回放成功,需要对字符串中某些字符做一定处理,写出详细实现方法。

四、 英文面试题

  1. What is load testing?

  2. What is Performance testing?

  3. Did u use LoadRunner?

  4. Explain the Load testing process?

  5. When do you do load and performance Testing?

  6. What are the components of LoadRunner?

  7. What Component of LoadRunner would you use to record a Script?

  8. What Component of LoadRunner would you use to play Back the script in multi user mode?

  9. What is a rendezvous point?

  10. What is a scenario?

  11. Explain the recording mode for web Vuser script?

  12. Why do you create parameters?

  13. What is correlation?

  14. How do you find out where correlation is required?

  15. Where do you set automatic correlation options?

  16. What is a function to capture dynamic values in the web Vuser script?

  17. When do you disable log in Virtual User Generator, When do you choose standard and extended logs?

  18. How do you debug a LoadRunner script?

  19. How do you write user defined functions in LR?

  20. What are the changes you can make in run-time settings?

  21. Where do you set Iteration for Vuser testing?

  22. How do you perform functional testing under load?

  23. What is Ramp up? How do you set this?

  24. What is the advantage of running the Vuser as thread?

  25. If you want to stop the execution of your script on error, how do you do that?

  26. What is the relation between Response Time and Throughput?

  27. Explain the Configuration of your systems?

  28. How do you identify the performance bottlenecks?

  29. If web server, database and Network are all fine where could be the problem?

  30. How did you find web server related issues?

  31. How did you find database related issues?

五.项目分析题

(试题一)阅读下列说明,回答问题1 至问题3,将解答填入答题纸的对应栏内。
【说明】软件系统性能调优的关键是首先作好性能故障定位,面对软件系统中运行在不同平台上的多个服务器、多种应用、大量工作站以及局域网、广域网和其他类型的网络体系结构,故障点交错,故障定位测试非常复杂。下述是《工作流平台系统》的性能测试案例描述及结果数据:
  ● 测试案例描述:模拟多用户登录《工作流平台系统》,针对工作流A、B、C 分别连续创建20 个实例,在单机和集群运行环境下分别对系统进行负载压力性能测试。单机环境下测试用机与一台应用服务器连在同一交换机上,压力直接加在一台应用服务器上。集群环境下测试用机与服务器集群连接在同一交换机上,压力由负载均衡模块分摊到俩台应用服务器上。在单机和集群运行环境中应用服务器和一台数据库服务器连接。
  ● 客户端交易并发执行测试数据:

1 单机运行环境

测试
案例

并发用
户数

响应时间(秒)

最大值

平均值

最小值

创建
工作
流A
实例

120

0.675

0.686

0.03

240

0.756

0.479

0.034

2 集群运行环境

测试
案例

并发用
户数

响应时间(秒)

最大值

平均值

最小值

创建
工作
流A
实例

120

0.113

0.088

0.01

240

0.103

0.117

0.01

● 服务器资源占用情况
  1 单机运行环境①应用服务器资源占用情况

测试案例

并发用户数

资源占用指标

最大值

平均值

最小值

创建工作流
A 实例

120

CPU Utilization(%)

33.8

10.054

2.9

Paging Rate(page/s)

2.5

0.082

0

Disk traffic(Mbyte/s)

9.75

0.813

0

240

CPU Utilization(%)

38.1

8.713

0.875

Paging Rate(page/s)

0.25

0.015

0

Disk traffic(Mbyte/s)

2.6

0.336

0

②数据库服务器资源占用情况

测试案例

并发用户数

资源占用指标

最大值

平均值

最小值

创建工作流
A 实例

120

CPU Utilization(%)

44.875

5.085

0.5

Paging Rate(page/s)

4.75

0.274

0

Disk traffic(Mbyte/s)

8.8

1.824

0.6

240

CPU Utilization(%)

12.2

1.766

0.5

Paging Rate(page/s)

5.4

0.244

0

Disk traffic(Mbyte/s)

7.2

1.584

0.6

测试案例

并发用户数

资源占用指标

最大值

平均值

最小值

创建工作流
B 实例和工
作流C 实例

60

CPU Utilization(%)

100

87.082

0.875

Paging Rate(page/s)

268.992

158.865

0

Disk traffic(Mbyte/s)

193.319

110.948

2.25

120

CPU Utilization(%)

99.3

88.419

1.15

Paging Rate(page/s)

751.358

189.785

1.8

Disk traffic(Mbyte/s)

217.775

146.304

2

240

CPU Utilization(%)

100

88.909

0.6

Paging Rate(page/s)

521.447

151.829

0

Disk traffic(Mbyte/s)

197.725

146.285

0.6

2 集群运行环境①俩台应用服务器资源占用情况

测试
案例

并发用户数

资源占用指标

应用服务器1

应用服务器2

最大值

平均值

最小值

最大值

平均值

最小值

创建工
作流
A 实例

120

CPU Utilization(%)

46

21.005

14

46.25

14.025

7.667

Paging Rate(page/s)

3.5

0.392

0

2.167

0.206

0

Disk traffic(Mbyte/s)

65.334

6.647

0

73.833

7.588

0

240

CPU Utilization(%)

42

27.163

1.583

37.333

17.856

0.75

Paging Rate(page/s)

3

0.206

0

0.667

0.045

0

Disk traffic(Mbyte/s)

7

0.849

0

6

0.674

0

②数据库服务器资源占用情况

测试案例

并发用户数

资源占用指标

最大值

平均值

最小值

创建工作流
A 实例

120

CPU Utilization(%)

13

2.868

0.333

Paging Rate(page/s)

0

0

0

Disk traffic(Mbyte/s)

6.667

1.767

0.6

240

CPU Utilization(%)

34.5

5.644

0.25

Paging Rate(page/s)

10.667

0.508

0

Disk traffic(Mbyte/s)

5.6

1.596

0.75

【问题1】单机运行环境和集群运行环境下,系统能够提供的客户端并发性能服务等级哪种更好?为什么?
【问题2】试分析系统应用服务器和数据库服务器资源使用情况如何?是否有瓶颈存在?单机运行环境和集群运行环境相比,哪种环境下资源占用率更高?为什么?随着系统并发负载的加大,试预测哪种环境下资源占用率递增更快?
【问题3】
集群对系统性能有哪些贡献?有哪些弊端?该系统是否应该采用此集群部署策略?

答案:

单用户查询的响应时间为51.77秒,时间过长,表明查询工作量大。建议优化查询SQL语句,尽可能用上合适的索引,明显缩短查询时间;
从资源占用情况来看,应用服务器没有明显压力,数据库服务器存在明显的资源争用现象;
数据库服务器磁盘读表现明显,20用户并发执行时磁盘读平均值为110.74M字节/秒,

(试题二)

下面是一个项目的性能测试结果,请分析可能存在的性能问题。

峰值达到196.72M字节/秒,这是总体响应时间过长的主要原因;

数据库服务器CPU的占用率情况表现正常,但CPU的等待率较高,40用户并发执行时CPU平均等待率为45.51%,峰值达到89.40%,表明CPU经常处于磁盘I/O读入数据的等待之中,这同样能够证明磁盘I/O构成当前系统主要性能瓶颈

Unix服务器性能监控(数据库服务器内存8G,上千万行大量数据)

监控对象

性能参数

说明

内存

Memory

Real Free MBytes

可用自由内存总量,单位是兆字节

Virtual Free MBytes

可用自由虚拟内存总量,单位是兆字节

网络Network Interface

Bytes Total/s

网络发送和接收的速率,单位是字节/秒

磁盘

Physical Disk

Disk Read KB/s

磁盘读取速率,单位是千字节/秒

Disk Write KB/s

磁盘写入速率,单位是千字节/秒

处理器

Processor

CPU Time%

处理器执行非闲置线程时间的百分比

Wait Time%

处理器执行等待时间的百分比

Linux服务器性能监控(应用服务器内存4G)

监控对象

性能参数

说明

内存

Memory

Available Swap MBytes

显示Swap空间的剩余量,单位是千字节

Free Memory MBytes

可用自由内存总量,单位是千字节

网络Network Interface

Bytes Total/s

网络发送和接收的速率,单位是字节/秒

磁盘

Physical Disk

Disk Read KB/s

磁盘读取速率,单位是千字节/秒

Disk Write KB/s

磁盘写入速率,单位是千字节/秒

处理器

Processor

CPU Time%

处理器执行非闲置线程时间的百分比

Wait Time%

处理器执行等待时间的百分比

表1 单用户执行XX查询

时间特性表

测试过程说明

测 试 结 果 (时间单位:秒)

用户数

响应时间

XX查询

1

51.77

资源特性表

最小值

平均值

最大值

数据库服务器资源特性

内存

Memory

Real Free MBytes

4474.00

4479.05

4487.40

Virtual Free MBytes

16116.60

16116.60

16116.60

网络Network Interface

Bytes Total/sec

0.00

11.36

393.00

磁盘

Physical Disk

Disk Read KB/s

0.00

5539.28

8437.50

Disk Write KB/s

0.00

21.99

339.80

处理器

Processor

CPU Time%

0.00

1.78

3.60

Wait Time%

0.00

13.67

17.30

应用服务器资源特性

内存

Memory

Available Swap KBytes

2045.60

2045.60

2045.60

Free Memory KBytes

49.40

49.44

49.50

网络Network Interface

Bytes Total/sec

0.00

24.29

807.40

磁盘

Physical Disk

Disk Read KB/s

0.00

0.00

0.00

Disk Write KB/s

0.00

15.25

143.20

处理器

Processor

CPU Time%

0.00

0.26

4.00

Wait Time%

0.00

0.00

0.00

表2 20用户并发执行XX查询

时间特性表

测试过程说明

测 试 结 果 (时间单位:秒)

并发用户数

成功用户数

最小响应时间

平均响应

时间

最大响应

时间

90%响应

时间

XX查询

20

20

82.29

83.15

84.42

83.60

资源特性表

最小值

平均值

最大值

数据库服务器资源特性

内存

Memory

Real Free MBytes

4430.50

4963.65

6477.20

Virtual Free MBytes

16115.70

16116.97

16120.90

网络Network Interface

Bytes Total/sec

2.40

175.82

2198.20

磁盘

Physical Disk

Disk Read KB/s

0.00

110732.71

196719.10

Disk Write KB/s

0.00

30.80

441.60

处理器

Processor

CPU Time%

0.10

23.30

59.00

Wait Time%

0.20

39.17

86.60

应用服务器资源特性

内存

Memory

Available Swap KBytes

2045.60

2045.60

2045.60

Free Memory KBytes

48.00

49.26

49.80

网络Network Interface

Bytes Total/sec

0.00

494.85

6245.60

磁盘

Physical Disk

Disk Read KB/s

0.00

0.00

0.00

Disk Write KB/s

0.00

19.53

163.20

处理器

Processor

CPU Time%

0.00

2.70

36.80

Wait Time%

0.00

0.00

0.00

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • 一:LoadRunner常见问题整理1.LR 脚本为空的解决方法:1.去掉ie设置中的第三方支持取消掉2.在系统属...
    0100阅读 4,097评论 0 11
  • 软件测试教程 性能测试Loadrunner篇(二) 上节课主要讲述了性能测试的基本知识,现在开始介绍性能测试工具L...
    zzulj阅读 3,632评论 0 12
  • VU——用户行为的模拟器2 LoadRunner之所以强大,很大原因是VU的功能强大。VU几乎支持模拟当今所有主流...
    WinterM9阅读 954评论 0 1
  • 性能测试用户的设计策略—“普遍撒网,重点查看”原则 性能测试是一个复杂的过程,因为它的对象是一个由多个模块甚至多个...
    WinterM9阅读 311评论 0 0
  • 一:查看用户 $who am i 或 $who mom likes 或 $who -m who 命令及其他常用参数...
    胭脂扣_阅读 356评论 0 0