LOADRUNNER性能测试中的验证码问题

现在越来越多的网站为了安全性或是防止Spam的侵害,采用了验证码的校验技术。简单地说,验证码就是在进

行登录或是内容提交的时候,页面上会随机出现一个人工可识别,但机器不可识别的验证字符串(一般是采用

背景、扭曲等方式产生的图片),要求登录或是提交内容时同时输入这个验证码。

验证码可以有效防止对口令的刺探和所谓的网络推广软件带来的大量的Spam内容,目前已经被许多Internet或

是Intranet应用接受为标准的实现方式。但对性能测试来说,这种验证码又带来了很大的问题。

最突出的问题是,性能测试工具本身是自动化工具,由于这种验证码采用的是“防止自动化工具尝试”的方法

,因此,在录制了脚本之后会发现,很难对脚本进行调整,以使其适应验证码验证的需要。已经不止一次有人

提到这个问题,并询问有没有较好的解决方案。

对这个问题,我个人的看法是,基本上可以考虑从三个途径来解决该问题:

1、第一种方法,也是最容易想到的,在被测系统中暂时屏蔽验证功能,也就是说,临时修改应用,无论用户输

入的是什么验证码,都认为是正确的。这种方法最容易实现,对测试结果也不会有太大的影响(当然,这种方

式去掉了“验证验证码”这个环节,不过这个环节本来就很难成为系统性能瓶颈)。但这种方法有一个致命的

问题:如果被测系统是一个实际已上线的系统,屏蔽验证功能会对已经在运行的业务造成非常大的安全性的风

险,因此,对于已上线的系统来说,用这种方式就不合适了;

2、第二种方法,在第一种方法的基础上稍微进行一些改进。第一种方法带来了很大的安全性问题,那么我们可

以考虑,不取消验证,但在其中留一个后门,我们设定一个所谓的“万能验证码”,只要用户输入这个“万能

验证码”,我们就验证通过,否则,还是按照原先的验证方式进行验证。这种方式仍然存在安全性的问题,但

由于我们可以通过管理手段将“万能验证码”控制在一个小的范围内,而且只在性能测试期间保留这个小小的

后门,相对第一种方法来说,在安全性方面已经有较大的改进了;

3、如果安全性对应用来说真的是至关重要的,不容许有一丝一毫的闪失,那我们还可以用更进一步的方法来处

理这个问题。一般的性能测试工具(MI的LR、Seague的Silk performer等)都能够调用外部的DLL或是组件接口

,因此,可以考虑获得“验证码验证”部分的实现,写一个验证码获取的DLL,在测试脚本中进行调用即可。

除了这三种方法以外,可能还会有其他的方法存在,也希望各位能提供一些其他的思路。在我的实践中,第二

种方法用得比较多,对未上线系统系统的内部性能测试,有时候也用第一种方法。但要提醒的是,如果针对的

是已上线系统,无论用哪种方法,测试完成后,都必须立刻将应用恢复,并对系统进行一次安全审计,以免在

测试期间被他人入侵。第三种方法用得比较少,而且具体上还依赖于验证组件是否能提供这样的接口。

在LR中,关联的原理是将服务器返回的信息中的某些内容保存在一个变量中,然后,在后续的操作(譬如POST

)中用这个变量替代录制时的内容。如果用关联可以解决验证码的问题,那就只有一个可能:请求页面时返回

的内容中已经包含了验证码了,但如果真实情况是这样,验证码也就没有任何作用了。根据我的理解,验证码

一般通过组件来产生,产生的验证码一般以“图片”形式嵌入在页面中,而且该图片一般经过扭曲、背景、随

机干扰等方式进行了处理,通过关联这种方式是肯定不能解决的。

最后,如果你还能找到描述用关联方法解决验证码问题的文章,麻烦给我发一份,我也学习一下,谢谢。

时间: 2024-10-24 00:37:03

LOADRUNNER性能测试中的验证码问题的相关文章

LoadRunner性能测试中Controller场景创建需注意的几点

在LR工具做性能测试中,最关键的一步是Controller场景的设计,因为场景的设计与测试用例的设计相关联,而测试用例的执行,直接影响最终的测试结果是怎么的,因此,我们每设计一种场景,就有可能是一个测试用例的执行(一个场景设计里面可以有多个脚本,场景计划方式可以按组方式,也可以按场景方式),如果场景的设计不正确或不合理,那也无谓在Analysis中结果分析了,对吧? 下面分享一下,在Controller设计场景时需要注意和理解的问题: 1.  在场景中持续时间设置将覆盖Vuser迭代设置.这意味

LoadRunner性能测试样例分析

LR性能测试结果样例分析 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源.数据库服务器资源等几个方面分析,如图1- 1所示.性能测试结果分析的一个重要的原则是以性能测试的需求指标为导向.我们回顾一下本次性能测试的目的,正如 所列的指标,本次测试的要求是验证在30分钟内完成2000次用户登录系统,然后进行考勤业务,最后退出,在业务操作过程中页面的响应时间不超过3秒,并且服

LoadRunner性能测试工具---(二)测试结果分析

进行完基本的操作步骤之后就可以对该系统的性能进行分析,正如性能测试中对系统工作效率(类似于响应时间.每秒单击次数).安全性(defence次数等).抗压能力(在线用户数量.单位时间登录用户数量等)等的分析,如下所示. 对于LoadRunner的分析,我们这次仅仅是针对登录这个过程进行的操作,在设定虚拟用户的过程中,最多可以设置256个虚拟用户进行模拟,在测试过程中我们就以100个用户进行测试,虽然是一个登陆操作,也可以从某个角度体现出系统性能的好坏. As shown in the figure

LoadRunner性能测试结果计数器指标说明

LoadRunner性能测试结果计数器指标说明 转载2015-09-23 09:57:13 标签:loadrunner计数器 针对性能测试结果分析过程中,面对大量的测试数据,反而感觉无从下手分析.今天我们就Windows操作系统计数器中的个别被监控对象进行简单的说明. Memory: ·Available Mbytes 简述:可用物理内存数.如果Available Mbytes的值很小(4 MB或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存. 参考值:4 MB或更小,至少要有10

LoadRunner 性能测试脚本

1   概述 脚本录制编写是性能测试的一个重要环节.在性能测试过程中,虚拟用户模拟真实用户使用被测系统,这个"模拟"的过程正是通过性能测试脚本来实现的.因此,编写一个准确无误的脚本对性能测试有至关重要的意义.完成性能测试脚本包括两个步骤:脚本录制和脚本编写,本文重点关注脚本编写. 2   脚本录制 2.1.录制方式 HTTP协议脚本录制可选两种方式:基于HTML和基于URL.选择哪种录制方式的原则如下:基于浏览器的HTTP应用系统选择HTML,基于其他方式的HTTP应用系统选择URL.

LoadRunner性能测试基础知识问答

Q1:什么是负载测试?什么是性能测试? A1:负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量. 性能测试:指在一定的约束条件下(指定的软件.硬件.网络环境等),确定系统所能承受的最大负载压力. Q2.性能测试包含了哪些测试(至少举出3种) A2:性能测试包含负载测试.压力测试.大数据量测试.疲劳强度测试等. Q

性能测试中关键指标的监控与分析

一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上目的并回答用户的关注点,就必须首先执行性

loadrunner脚本中参数化和返回值输出log到外部文件

loadrunner脚本中参数化和返回值输出log到外部文件 很多时候,我们在做性能测试之前,需要造数据,但是使用的这些参数化数据和生成的返回数据在后面的测试都会用的,所以我们需要在造数据过程中,将参数化的数据和生成的返回数据保存起来,以便后续测试中使用!下面就以webservice协议的脚本为例,介绍下如何来实现所需的功能! int id,scid;char *group; //定义文件保存位置char *filename = "E:\\data\\test.log";long fi

浅谈软件性能测试中关键指标的监控与分析

浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上