《如何调试脚本,解决脚本回放成功但失败的情况.docx》由会员分享,可在线阅读,更多相关《如何调试脚本,解决脚本回放成功但失败的情况.docx(8页珍藏版)》请在三一办公上搜索。
1、如何调试脚本,解决脚本回放成功但失败的情况1 背景 1.1 讲一个故事 以前我们公司招了一个自称非常熟练loadrunner的员工,有一次分配给他测试sso单点登录系统的性能测试。登录一个网站A,需要输入用户名密码,然后在访问另一个网站B,因为在网站A已经登录过,所以B应该不需要再登录,直接就可以访问B页面。让该员工测试下可以支持多少用户,及稳定性。 该员工使用loadrunner测试了2天,然后给我们报告说支持320左右个用户并发。然后,我们跟他一起验证下,确实在320并发时就出现用户失败。但检查系统A与B,发现A确实登陆了,但B没有数据,后面他定位了半天也没解决问题,最后我帮他定位下,结果
2、发现是发给B系统请求B页面的HTTP的会话信息里没有包括用户已经登陆的信息,会话在Cookie与URL的参数都存在。 还有另外一个问题,当时由于没研究loadrunner是如何模拟用户的,后来参与开发了kylinPET性能测试工具,才对性能工具的原理有深入的了解。其实之前loadrunner工具测试的并发用户数最大支持320,是错误的,大家可以看我写的“如何测试服务器的最大并发数”,网址: 1.2 该故事说明了什么 该故事说明了,一个熟练loadrunner的人进行系统性能测试,还是出现花费了2天多的时间是白费的,因为实际B系统还需要登录,因此无法访问B页面。 为什么呢,因为他对业务了解不透,
3、还有认为loadrunner回放通过就表示脚本没问题,虽然他做了一些关联参数,但脚本其实还是错误的。因此,会使用性能测试工具只是一项技能,真正掌握性能测试,还需要结合业务与协议、网络知识,另外还需要掌握测试工具调试脚本方法。 1.3 在网络上经常出现求助帖:测试工具脚本回放成功,但实际是失败 在网络论坛上经常出现求助帖:测试工具loadrunner或jmeter的脚本回放成功,但检查后台,数据不存在或用户其实没登陆。 很多测试人员对系统不了解,有不懂HTTP协议,也不了解网页怎么产生的,然后就使用测试工具进行测试;有些人员会检查后台发现脚本有问题,但不会定位;有些经验丰富的人,知道怎么调试脚本
4、,验证脚本,并定位问题修改;然而,有些新手或经验不足的测试人员会出现做无用功,而且还不知道自己做了无效的性能测试,因为他认为测试工具回放成功就表示OK。 其实,很多开发人员或设计人员也不能完全了解被测系统,另外也不了解HTTP协议,因为HTTP是底层的,都被封装了,如spring开发基本就不需要了解HTTP。所以,测试人员要掌握一些基本知识,如HTTP协议、基本的网络知识,还有掌握系统架构、场景、还有业务流程,也是很有技术含量的。对于WEB学会使用浏览器调试功能或httpwatch了解系统业务交互流程,学习HTTP。如果有这样的基础,使用性能测试工具调试脚本就事半功倍啦。 2 介绍怎么调试脚本
5、 很多测试人员或开发人员对HTTP或HTML不熟悉,很大可能还不了解业务细节,所以自己修改脚本有一定的难度,需要借助工具提供的调试功能来调试脚本。主要解决业务动态的地方:参数化、关联参数、Cookie。 2.1 测试工具怎么判断脚本失败 当如下情况发生时: 1) 发送请求消息参数化失败 2) 出现响应码错误,如收到500、505等错误码 3) 出现超时,请求HTTP,但它的响应时间超过期望时间 4) 建立TCP连接失败 2.2 脚本回放成功并不代表业务成功 一个脚本执行成功通过上面条件判断是不够的,因为可能存在这样的情况,登录成功,服务器回302定位到正常页面;登录失败,服务器回302或200
6、定位到错误页面或登录页面。登录失败时,其实所有HTTP请求都是成功的,只是业务失败,所有根据上面条件,测试工具会认为脚本执行成功。如下图,登陆失败跳到error.jsp,但响应码是302。如: 如果没有判断响应码或检查页面内容,则测试工具会认为脚本正常,继续请求已录制的后面的HTTP请求,但其实脚本已经失败,因为业务失败啦,没出现正常页面。 这种情况是常发生的,即得到的内容或页面不是正常的。 很多工具只提供检查页面内容,没有提供检查响应码,但没经验的测试人员,可能不会设置或忽略设置,因为脚本执行成功,他认为脚本没问题,这将导致性能测试无效。 loadrunner不支持检查响应码但支持设置检查点
7、,kylinPET支持检查响应码与检查点,响应码自动根据录制设置。 2.3 脚本回放成功,需进一步验证 脚本回放成功后,还需要进一步验证,验证方法: 2.3.1 检查服务器 在服务器上查看数据是否正确,如检查用户提交了数据是否存在;但只有用户提交数据并保存到数据库或日志才可以检查,很多系统可能没用户提交,用户只是获取数据,但可能存在由于参数错误,获取的数据失败,如获取json内容错误 所以,检查服务器并不是最好的方法,因为有些系统可能无法检查。 2.3.2 检查HTTP响应日志 检查回放脚本是的HTTP交互日志,分析是否正确,这个要求技能比较高,需要知道内容结构及看得懂内容,一般测试人员达不到
8、。 所以,检查日志方法要求技能高些,要能读懂内容,及明白响应内容的意思。 2.3.3 对比录制与回放日志 这个比直接检查回放的响应日志要方便多,通过对比出不同的地方,判断录制与回放那里不一样,来定位问题。 简单的内容通过比较可以确定需要关联,但有些复杂的需要了解HTTP协议与明白响应内容。 2.3.4 直接检查图形页面,直观判断是否业务不正常 将回放数据直接展示为图形界面,测试人员通过图形一目了然即可判断页面是否正常,从而确定脚本是否正确。 这是最后的验证方法,但页面只能让用户知道脚本是否正确,如果出问题,还需要查看日志,最好能结合“对比录制与回放日志”。 2.4 性能测试工具的调试脚本介绍
9、由于本人精通kylinPET,用过loadrunner,所以这里只介绍这两个工具如何调试脚本。 2.4.1 Loadrunner11检查HTTP响应日志与检查页面方法 1) 录制后点击左边的回放验证 然后在右边出现录制与回放的页面,双击可以弹出放大比较页面,可以轻松判断页面是否不一样。 2) 点击工具栏的“Tree View”树形视图 然后点击窗口的HTML View与HTTP View来查看页面与响应内容 注意: 1、 如果你的页面有activeX控件或者javascript脚本,loadrunner没法展示,即不支持解析activeX控件或者javascript来展示界面,如果你的网页是由
10、activeX控件或者javascript生成界面的,无法支持。 2.4.2 kylinPET2.0检查HTTP响应日志与检查页面方法 1) 回放时打印每个HTTP请求与响应日志 2) 点击“比较”按钮比较录制日志与回放日志 不同之处红色标识方便定位问题。点击左边定位到对应的HTTP请求,然后红色表示有不同,通过比较可以看到登陆的Post请求的内容响应码一个是200,一个是302,且提交的参数不一样,即可定位出问题。 3) 浏览器验证页面 kylinPET没有loadrunner的解析HTML与CSS展示为页面的功能,但实现了使用浏览器验证页面的功能,浏览器自己支持解析HTML与CSS,还支持
11、解析activeX控件或者javascript来展示页面,页面展示比loadrunner更精确。 点击“页面验证”的URL来展示对应的页面 按钮,在弹出的窗口,点击kylinPET认为有html2.4.3 kylinPET2.0与loadrunner 从两个软件调试脚本功能的比较,可以看出kylinPET更加方便与精确,kylinPET有一个“kylinPET WEB业务Scripter介绍”视频,里面有大部分内容详细介绍了如何调试脚本。 2.5 关联 脚本执行成功,但业务却失败的原因,基本是提交的参数或内容有问题、或者会话有问题;例如,录制时的会话为1,该会话由服务器随即产生,每次都变化;但
12、回放时,由于服务器产生新的会话值2,如果使用录制的会话值1,将导致业务失败。会话一般存在Cookie,也有些系统存在参数。 因此,测试人员需要学会使用性能测试工具进行关联。 2.5.1 Loadrunner11关联方法 1) 手动关联 录制两次,然后将两次产生的脚本复制到一些文本比较工具,对不同之处手动参数化。 2) 自动关联 将脚本进行回放,然后通过回放日志与录制日志进行比较,然后点击自动关联,选择内容进行关联。 3) 链接网址 详细操作参照下面网址: 2.5.2 kylinPET2.0关联方法 1) 手动关联 录制两次,然后将两次产生的脚本复制到一些文本比较工具,对不同之处手动参数化。 2
13、) 对两次录制日志比较关联 连续录制两次,然后都保存为脚本,然后打开其中一个脚本,在工具栏点击“比较”按钮,选择另一个脚本,自动实现两个脚本比较,然后点击“关联参数”按钮,在弹出的窗口里选择需要关联的内容,自动修改脚本对应的地方,并直接替换脚本存在该内容的地方。比手动关联效率高,且更精确,而且可以选择针对性比较的HTTP请求。 3) 自动关联 类似loadrunner,将脚本进行回放,然后通过回放日志与录制日志进行比较,自动关联,操作方式与录制两次脚本一样。不同于loadrunner是界面有红色标识不同的地方,用户一目了然,更加方便。 3) 详细操作参照 kylinPET安装目录下的help目录里的文档“kylinPET HTTP业务使用指导.chm”的“2.5 自动关联参数”一节 kylinPET视频教程“kylinPET WEB业务Scripter介绍”里有演示关联,网址: 3 总结 验证脚本是否正常是性能测试最关键的一步,如果脚本不对,将导致你的性能测试都无效,即做了无用功。因此,学会调试脚本非常有必要,调试脚本就是不断的“回放-关联-验证页面”,直到页面正确。
链接地址:https://www.31ppt.com/p-3412991.html