TestOps性能课程之学习第三天
跟着芒果一起,好好学习,天天向上。上周六是我们TestOps性能课程的第三天,我们来为这一天的课程做个小总结~
周六的性能课是由云层老师带来的Loadrunner进阶:
云层老师从Loadrunner如何进行用户行为模拟、性能指标监控、性能调优三个方面进行讲解,让同学们不仅仅掌握了Loadrunner的使用方法,还带大家对于性能测试有了更深的认识。
用户行为模拟
在做性能测试的过程中,我们要做的第一步就是用户行为模拟,它是一种低成本且具有可行性,模拟大量用户操作的技术。借助用户行为模拟,我们能将被测试系统在测试阶段运行起来,以检测系统工作是否正常。在模拟的过程中我们必须注意以下三个方面:不同用户使用不同的数据,多用户并发操作,用户请求间的延时时间。
而我们使用Loadrunner进行用户模拟主要是通过VuGen进行脚本的录制/编写,然后利用Controller进行场景的创建跟执行。在课堂上云层老师带着大家学习了整个脚本录制过程:创建脚本、选择协议、设置录制选项、开始录制、插入命令、停止录制。当然在在这个过程中,对于一些录制的细节进行了详细讲述,并借此再一次深化了同学们对于性能测试的理解。因为篇幅原因,我这里就抽出一些有意思的知识点跟大家介绍一下~
处理前端加密:
在录制登录操作时,我们的密码有时候是被前端加密的,而我们的Loadrunner只能录制用户的行为,是不能对客户端的逻辑进行处理的,那么我们怎么完成加密的操作呢?要完成我们的加密操作,我们必须先找开发了解加密算法,在知道了加密算法之后,我们需要在服务器端写一个加密脚本,这样当我们在测试脚本中发送加密请求数据时,就可以获得包含加密后数据的应答了。服务器端的php加密算法如下图:
web_url函数:
web_url是用来加载指定的Web页面 它的函数形式为
int web_url(constchar *Stepname, const char * url, <Lists of Attributes>,[EXTRARES,<Lists of Resource Attributes>],LAST)
其中Stepname指的是VuGen中树形视图中显示的名词在自动化事务处理中也可以用作事务名词。
url指的是加载页面的地址,格式为:url=addr。
而Lists of Attributes(属性列表)则有以下内容:
FtpAscii表示我们可以使用web_url模拟从FTP服务器下载文件, web_url函数使服务器执行与文件实际下载时相同的任务,若FtpAscii为 1则以ASCII模式进行FTP下载,否则以二进制模式完成;
TargetFrame指包含当前链接或资源的帧的名称;
RecContentType记录期间RESPONSE标头的内容类型,例如,text / html,application / x-javascript,它被读取以确定目标URL是否是可记录资源;
Refere指要提交该页面请求的URL,如果指向当前页面的页面位置被具体指明,则该属性被忽略;
Resource确认URL是否是资源,为1表示URL是资源,为0表示该URL不是资源;
ResourceByteLimit主要针对已下载页面资源的body部分的累积大小,并对其进行限制,该限制只影响正在下载的资源。如果累积下载的资源大小小于限制时,则正在下载资源;当达到限制大小时,不再下载资源。如果正在下载的资源达到限制,且资源的大小时已知的(内容长度已经在响应报文头部获得),即使它仅需要一个缓冲,这个下载也已经完成;如果完成下载需要不止一个缓冲,或者如果资源的大小不知道,则下载被终止,且连接被关闭。该特性可以让用户不用等待前一个页面完整下载后就可以导航到另一个页面。不过要注意的是这个参数不能再HTTP模式中使用,仅仅应用在soket中;
Snapshot主要用于关联的快照文件的文件名(inf扩展名);
Mode指定录制级别:HTML或HTTP,当录制级别为HTTP模式时,只加载第一个请求;而HTML模式则是先请求第一个对象,然后用HTML模式来动态加载后续所有请求,但是并不代表加载了所有对象请求。现在做性能测试一般走HTTP模式,因为考虑动态数据就行了,静态部分不用考虑了。
EXTRARES为分隔符,其后的资源由是非html里面的请求,是由Javascript、CSS等产生的请求,之后紧跟的是下载的资源的属性列表Lists of ResourceAttributes:
URL指通过URL地址下载的web资源;
Referer指发送下载请求的页面,比如一个swf要下载一个图片,那么swf就是referer;
ENDITEM是列表中每个资源的结束标志符。
一个小例子:
当然关于用户行为模拟的有意思又必须掌握的知识点肯定不止上面两个例子,还有参数化、关联等处理;Loadrunner必须掌握的函数除了web_url还有web_submit_data、web_custom_request、lr_output_message、lr_save_string、lr_eval_string等等,希望大家通过学习能够掌握到用户行为模拟的方法。
性能指标监控
通过上面技术模拟用户的行为,在系统运行中需要监控各项性能指标,并分析指标的正确性。主要对请求响应时间、服务器处理能力、服务器资源利用率进行监控。
我们可以通过Loadrunner的Controller配置服务器的监控,初步了解服务器的性能状况,但是由于数据并不是很准确的,所以我们做好还是利用上一节课学习的被测系统及监控体系搭建的内容进行监控哟~
性能调优
性能调优是指通过指标的监控发现系统存在的性能缺陷,利用分析工具,定位修正性能问题。
Loadrunner主要是利用Analysis进行测试结果的分析。
在谈到调优问题时,云层老师谈到了对于动态数据,我们的软件系统可以利用缓存来获取已存在的数据,以减少对后端运算的压力;而我们在做性能测试的过程中则要避免缓存,从负载的角度来说就是要制造软错误跟硬错误。那什么是软错误硬错误呢?软错误,是指当我们在内存中查找我们所需要的数据,但是在热数据中没有找到我们想要的数据,只能去缓存数据中去找,这就造成了软错误。而硬错误则是为了避免内存不够用,在加载热数据的时候一旦出现冷数据空间不够了,那么就把部分相对较冷的数据放到虚拟内存。一旦出现了硬错误,IO就会很高,系统的性能就会急速下降,所以我们在解决性能问题时有个非常好的方式就是加内存。
当然这一天的课程芒果只是抽出其中的十分之一不到的内容给大家介绍,云层老师讲解程度也更加深入,要想好好掌握性能测试还是跟着云层老师在课堂上好好学习吧~
文章最后介绍一下我们只是肚子有点大的男神——云层老师:
陈霁 网络ID云层 全栈测试、TestOps测试运维推动者,云层天咨创始人。曾先后供职于ETANG和GAMELOFT(上海)有限公司,原51testing资深讲师、产品总监,性能测试,自动化测试资深专家,著有《性能测试进阶指南》系列丛书。为行业内数百家公司数千学员提供测试技术咨询、培训、服务。百度名家,超过15W读者。
点击原文链接,即可直达课程直播页面!
精益技术 赋能过程