安全
简述DOS和DDOS的区别:
答:DOS意思是 Denial of service 的缩写,也就是网络产生的初期,用一台高配的设备去攻击一台低配的设备,造成被攻击的设备死机
DDOS意思是 Distributed Denial of service 的缩写,随着技术的进步,IT设备的配置都在飞速增长,DOS的方式已经变的水土不服,那就产生了分布式的DOS,形象的说就是我一个人打不过你,那我可以多叫几个兄弟过来揍你,我可以雇佣很多打手,(也就是控制很多傀儡机)这样的攻击就是DDOS
信息安全的基本属性主要表现在哪几个方面?
答:(1)完整性(Integrity) (2)保密性(Confidentiality) (3)可用性(Availability) (4)不可否认性(Non-repudiation) (5)可控性(Controllability)
PMI与PKI的区别主要体现在哪些方面?
答:PKI证明用户是谁,并将用户的身份信息保存在用户的公钥证书中;
PMI证明这个 用户有什么权限,什么属性,能干什么,并将用户的属性信息保存在授权证书中。
请回答数据容灾的四个层次?
第0级 本地备份、保存的冷备份
第1级本地备份和异地保存的冷备份
第2级热备份站点备份
第3级活动互援备份
请简述网站保护的方法?
答:
方法一:提高网站代码的质量,对客户端输入的内容做好检测和过滤。
方法二:部署WEB防火墙(WAF产品),用设备来替代程序做好检测和过滤。
什么是数字签名?并简述数字签名与数字签名验证有何区别?
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程。
性能
什么是性能测试,其应用领域分别是什么?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,应用领域有四个:能力验证、能力规划、性能调优、缺陷发现。
什么是负载测试?
负载测试:通过被测试系统不断增加压力,直到性能指标超过预期值或者某种资源达到饱和状态;
可靠性测试、可用性测试的定义,有什么区别?
可靠性测试:通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。
可用性测试:故名思议是测试设计方案或者产品在一定的环境下的可用性水平。
性能测试包含了哪些测试(至少举出3种)?
压力测试、负载测试、并发测试、疲劳强度测试、大数据量测试;
什么时候可以开始执行性能测试?
在产品相对比较稳定,功能测试完成后;
Web服务器指标指标有哪些?
* Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
* Successful Rounds:成功的请求;(成功回合)
* Failed Rounds :失败的请求;
* Successful Hits(点击) :成功的点击次数;
* Failed Hits :失败的点击次数;
* Hits Per每 Second秒 :每秒点击次数;
* Successful Hits Per Second :每秒成功的点击次数;
* Failed Hits Per Second :每秒失败的点击次数;
* Attempted Connections :尝试链接数;
LoadRunner由哪些部件组成?
virtual user generator、contorller、running contorller、analysis;
简述使用Loadrunner的步骤:
脚本录制设置—录制脚本—调试脚本—场景设置—结果分析;
什么是关联?
关联:很多构架用sessionid等方法标识不同任务和数据,应用在每次运行时方式发送数据不完全相同,需要利用的机制对录制的脚本进行处理,这种机制叫做关联(服务端发送到客户端)
什么是think time?
思考时间是真实用户在action之间等待的时间。例如:当一个用户从服务器接收到数据时,用户可能需要在响应之前等待几分钟回顾数据,这种推迟被称为思考时间
场景设置有哪几种方法?
目标场景和手工场景
性能测试工具有哪些?
LR、Jmeter、OpenSTA(WEB测试工具)、DBMonster(数据库测试工具)、TPTEST、Web Application Load Simulator(负载模拟器)等
用IP欺骗能对外网进行测试吗?
关于IP欺骗一般只用在内网,不管你在内网如何欺骗,经过网络地址转换后到了外网上的IP地址表现就是你的公网的IP,除非你一开始就设置成公网的IP地址,但这个一般不可能。
测试自动化和手工测试的区别和联系?
手工测试是传统的测试方法,由测试人员手工编写测试用例,缺点在于测试工作量大,重复多,回归测试难以实现;
自动化测试利用软件测试工具自动实现全部或者部分测试工作:管理、设计、执行和报告,自动化测试节省大量的测试开销,并能够完成一些手工测试无法实现的测试。
自动化测试是对手工测试的一种补充,自动化测试不可能完全替代手工测试,因为很多数据的正确性、界面是否美观、业务逻辑的满足程度等都离不开测试人员的人工判断。而仅仅依赖手工测试的话,则会让测试过于低效,尤其是回归测试的重复工作量对测试人员造成了巨大的压力。
系统调优由易到难的先后顺序是什么?
硬件问题
网络问题
应用服务器、数据库等配置问题
源代码、数据库脚本问题
系统构架问题
为什么要使用关联,使用关联可以带来哪些方便?
首先,它可以生成动态的数据;其次,我们可以将冗长的数据参数化,通过应用关联技术,有效地减少代码的大小,这样不仅代码量会减少,脚本层次看起来更清晰明了
如何利用“拐点”分析法来定位系统的性能瓶颈?
("拐点分析"方法是一种利用性能计数器曲线图上的拐点进行性能分析的方法。它的基本思想就是)
性能产生瓶颈的主要原因就是因为某个资源的使用达到了极限,此时表现为随着压力的增大,系统性能却出现急剧下降,这样就产生了"拐点"现象。当得到"拐点"附近的资源使用情况时,就能定位出系统的性能瓶颈。
("拐点分析"方法举例,如系统随着用户的增多,事务响应时间缓慢增加,当用户数达到100个虚拟用户时,系统响应时间急剧增加,表现为一个明显的"折线",这就说明了系统承载不了如此多的用户做这个事务,也就是存在性能瓶颈。
)
如何发现性能测试的规律?
根据测试用例按照由轻到重,对系统逐渐施压的过程执行性能测试,发现性能测试模型。根据模型的重要性能指标如:响应时间、吞吐量、资源利用率、最大用户数找到性能测试的规律。
测试用例设计的方法有哪几种?
等价类划分法
边界值分析法
判定表法
因果图法
错误推测法
状态转换测试法
功能图分析
正交实验设计
测试场景的设计要注意什么?
测试场景的设计应该注意:集合点、集合点策略、迭代次数、思考时间、参数化取值方式等性能指标。在进行场景设计时,如果在脚本中应用了集合点函数,要确认在Controller应用中启用了集合点并设置了对应的策略。同时关注运行时设置、相关的迭代、思考时间等是否与预期的设置的一致。
比较常见的负载均衡技术有哪几种?
基于DNS的负载均衡
反向代理负载均衡
基于NAT的负载均衡技术
如何结合企业特点进行性能测试?
大型企业、大型项目的应用策略。
解决方案一:构建自己的性能测试团队。
解决方案二:专业性能测试机构为系统测试。
中型企业、中型项目的应用策略。
解决方案一:临时组建性能测试团队。
解决方案二:自行编写测试程序。
小型企业、小型项目的应用策略。
解决方案一:临时组建性能测试团队。
解决方案二:专业性能测试机构为系统测试。
简述性能测试的步骤:
计划测试—测试设计—创建脚本—创建场景—分析结果;
响应时间和吞吐量之间的关系是什么
吞吐量图显示的是虚拟用户每秒钟从服务器接收到的字节数。当和响应时间比较时,可以发现随着吞吐量的降低,响应时间也降低,同样的,吞吐量的峰值和最大响应时间差不多在同时出现.
您认为性能测试工作的目的是什么?
目的:是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。
寻找瓶颈:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。
系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。
检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。
验证稳定性和可靠性:在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
请问您是如何得到性能测试需求?怎样针对需求设计、分析是否达到需求?
在查看需求文档,从中提取性能测试需求,与用户交流,了解实际使用情况。结合业务信息设计操作场景总结出需测试的性能关键指标。执行用例后根据提取关键性能指标来分析是否满足性能需求
性能测试数据如何准备?
能测试数据分成两部分:业务数据+基础数据。
业务数据是符合业务逻辑规则的数据,常见的如表和表中相关联的数据。一旦缺少某个环节,页面就无法打开,即便打开也会报错;相应的性能测试脚本执行过程中,服务器端也会报错。
两方面,一是构造业务数据,需要工程师熟悉业务逻辑;基础数据不一定要符合业务逻辑规则。它们的存在,是为了将表中数据量占用率到某种程度,以验证SQL语句的执行效率、索引创建的合理性和正确性,数据库相关参数设置是否合理等。二是,构造基础数据,不需要工程师熟悉业务逻辑,但需要工程师具备编写高效存储过程或者高效SQL语句的能力。
cookie和session什么意思,有什么区别
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。Cookie是客户端的存储空间,由浏览器来维持。
路由器,集线器,交换机的区别?
路由器的作用是用于连接不同网段并且找到网络中数据传输最合适的路径。
集线器的作用是将一些pc机连起来组成一个局域网。
交换机的作用与集线器的相似
什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?
集合点:设置多个用户到达某个用户数量点集合,同时触发一个事务,以达到模拟真实环境下同时多个用户操作,同时模拟负载,实现性能测试的最终目的,LR_rendezvous(“集合点名称”)
什么是场景?场景的重要性有哪些?如何设置场景
场景:模拟真实环境中,用户运行状况。
场景的重要性是
1.通过场景来模拟实际用户的操作,性能测试结果才具有代表性
2.在运行过程中也需要关注场景性能测试值,测试过程是否正常;
设置场景的步骤:
选择场景中需要的脚本,选择为目标场景,还是指定的手工场景,设置用户数、设置产生负载的设备,设置执行策略;
请解释一下如何录制web脚本?
LR通过转发请求,来捕获数据包,来形成脚本;
如何调试LoadRunner脚本
在Run Step by Step 命令和断点(breakpoints)设置插入断点。
在Option对话框中的调试设置(Debug setting)项,可以确定在场景执行过程中执行轨迹范围。
可以用lr_set_debug_messag函数在脚本中手工设置信息类型,调试信息写在output窗口。。
当你需要在出错时停止执行脚本,你怎么做?
lr_abort函数放弃虚拟用户脚本的执行。说明虚拟用户停止Action的执行,直接执行vuser_end 然后结束执行。在出现错误情况下想手工放弃脚本的执行,这个函数是有用的。用这个函数停止脚本时,Vuser被指定为“Stopped”状态。为了这个函数起作用,开始时候就不能选择Run-Time Settings中的Continue on error选项。
说明一下如何在LR中配置系统计数器?
通过Web资源监视器,利用这些监控器可以分析web服务器的吞吐量、点击率、每秒http响应数以及每秒下载的页面数
标准日志和扩展日志的区别是什么?
Standard Log Option:选择标准日志时,就会在脚本执行过程中,生成函数的标准日志并且输出信息,供调试用,扩展日志包括警告和其他信息。用扩展日志选项,可以指定哪些附加信息需要加到扩展日志中
执行性能测试的基本原则是什么?
原则一:测试前,要确认系统级的关键参数已经基本配置正确(例如:数据库、WEB容器、线程池、JDBC连接池、对象池、JVM、操作系统、应用系统等配置);
原则二:测试前,要确保测试脚本的业务功能运行正确;
原则三:测试前,清空所有应用日志、调高错误日志的输出级别(Error级),必要时在每次测试前重启应用服务和数据库应用服务;
原则四:调整系统参数时,一次只调整一个,不要同时调整多个,并记录调整前后的系统变化;
原则五:优先测试基线案例
性能问题分析原则是什么?
原则一:把事实与推测分开,总是用实际的证据来证明你的推测;
原则二:在没有足够证据之前,不对程序进行优化;
原则三:优先验证简单的假设;
原则四:日志文件中没有错误不代表真的没有错误;
原则五:从系统到应用、从外到内进行层层剥离,缩小范围;
原则六:范围缩小后,再分割成多个小单元,对每个小单元进行轮番压力测试,来证明或者否定是那个单元引起性能问题
调优的原则是什么?
原则一:在应用系统的设计、开发过程中,应始终把性能放在考虑的范围内;
原则二:清晰明确的性能目标;
原则三:必须保证调优后的程序运行正确;
原则四:性能更大程度是取决于良好的设计,调优技巧只是一个辅助手段;
原则五:调优过程是叠代渐进的过程,每次调优的结果要反馈到后续的代码开发中去;
原则六:性能调优不能以牺牲代码的可读性和维护性为代价;
调优的基本步骤是什么?
一、确定清晰的性能目标,并按优先级排列;
二、利用科学的测试工具对应用程序进行测试,并记录测试结果;
三、把分布式系统拆分成组件:Web层、业务层、集成层、以及网络传输时间,分别进行调优;
四、有系统的科学调优:遵循一定的程序:测试性能→找出瓶颈→假设造成瓶颈的因素→测试假设是否成立→修改应用→再次测试性能,
五、确定影响性能的因素:CPU、Memory还是IO,找出主要的瓶颈,首先解决最容易的,再重复测试,一次修改一个瓶颈,不要对不需要的地方进行调优,
六、提高CPU性能:更快的代码、SQL,更好的算法,减少短期生存的对象,
七、提高内存性能:减少或减小长期生存的对象,
八、提高IO性能:重新设计应用,减少IO的交互;
九、优化完成之后,进行QA测试;
十、在代码中记录优化的地方,并对旧代码进行注释
台客户端有300客户与300客户端有300客户对服务器施压,有什么区别?
300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。
线程之间可能发生干扰,而产生一些异常。
300个用户在一个客户端上,需要更大的带宽。
IP地址的问题,可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制。
基于 SOA 的性能测试方法有哪些?
基于 SOA 应用程序的性能测试包括了基准测试、容量测试和浸泡测试三个主要测试阶段;
基于 SOA 的性能测试第一阶段是基准测试,基准测试是用来确定被测应用程序是否存在性能衰退,并且收集可重复性能测试结果以作为性能基准。基准测试的最好方法是每次测试只改变一个参数。基准测试包括了相应时间驱动的测试和吞吐量驱动的测试,
容量测试的目标是要看被测应用在一定测试环境下能够达到的最大处理能力。容量测试将模拟更加接近真实用户使用的环境,并且用更为真实的用户负载来测试 SOA 应用程序的 容量测试。具体地说,一般容量测试是为了检测在达到一定响应时间或吞吐量的前提下被测应用能够支持的并发用户数。
浸泡测试是在一个稳定的并发用户上进行的 long run 测试,用来测试 SOA 应用程序的健壮性。通过 浸泡测试 往往可以发现内存泄露,频繁 GC 等严重性能问题。进行 浸泡测试 需要注意以下两点:浸泡测试 需要在一定适中的用户负载量下进行,最好低于应用支持最大的负载量,在执行 long run 测试时,采用几种不同用户组,并且每个用户组织性不同的业务流程浸泡测试 实际上比较简单的性能测试,测试最好能够运行几天,以真正得到一个健壮的应用。确保应用测试是贴近真实世界 , 尽量与实际使用情况接近。
以线程方式运行的虚拟用户有哪些优点
如果是以进程的方式跑虚拟用户,为每个用户加载相同的驱动程序到内存中,因此占用了大量的内存。这就限制了在单个生成器上能跑的虚拟用户数。
但如果按线程运行,给定的所有虚拟用户数(比如100)只是加载一个驱动程序实例到内存里。每个线程共用父驱动程序的内存,因此在每个生成器上可以跑更多的虚拟用户。
典型的应用数据库问题有哪些,解决办法分别是什么
典型应用数据库问题的三个类型:过量的数据库调用、数据库连接池问题、SQL语句及其索引或锁定属性问题。
过量的数据库调用,从数据库中大批取得所要求的数据,避免应用程序反复回调数据库;
数据库连接池问题,仔细分析程序代码,是否没有close()连接?或者遗漏了finally 块?或者尽管有close()但并没有成功或者调整连接池大小;SQL语句及其索引或锁定属性问题,优化SQL语句及其索引或锁定属性。
在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试?
建立测试计划,确定测试标准和测试范围
设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等
根据测试用例,开发自动测试脚本和场景:
录制测试脚本
新建一个脚本(Web/HTML协议)
点击录制按钮,在弹出的对话框的URL中输入”about:blank”。
在打开的浏览器中进行正常操作流程后,结束录制。
调试脚本并保存。可能要注意到字符集的关联。
设置测试场景
针对性能设置测试场景,主要判断在正常情况下,系统的平均事务响应时间是否达标
针对压力负载设置测试场景,主要判断在长时间处于满负荷或者超出系统承载能力的条件下,系统是否会崩溃。
执行测试,获取测试结果,分析测试结果