偶是测试新手,希望前辈们能多多指教。

发布新日志

  • 互联网产品接入支付功能如何测试?[转载]

    2017-03-15 15:34:35

    现在有不少测试朋友做的项目中,可能也会涉及到支付相关的功能。比如:做商城的,做游戏的以及其他在线交易的网站、APP等。如果支付出了问题,或者用户拿少的钱通过篡改请求数据购买大金额的商品,如果是实物的话,发货前还有可能被发现。如果是虚拟商品话费、游戏币等就有可能造成损失。
      所以,不管是实物也好,虚拟商品也好,涉及到支付功能时,大家在测试的过程中一定要重视,否则,会造成很大损失。之前可能大家也都看到过或者听过一个bug损失4.6亿美金的惨痛教训或者身边也有发生过其他因为支付功能的bug导致直接损失的案例。
      给大家举个真实的案例:比如使用支付宝购买虚拟商品,往支付宝跳转时,篡改了小的金额,结果购买虚拟商品成功了。(原本10元的商品,0.01元就搞定了)。多么可怕的一个bug啊,当然这个问题可能对于一个做过支付有过经验的测试朋友来说,可能会想:哎呀,这个问题都发现不了,还做什么测试?是的,问题是很简单,对于一个刚入职场的测试朋友或者没有支付相关经验的测试朋友来说,很有可能会忽略。
      那么,问题来了,对于支付模块的相关测试,我们应该如何进行呢?比如,针对游戏来说,使用第三方支付往游戏充值游戏币功能,看起来是不是很简单,大家主要思考下以下内容:
      1、支付都是与第三方支付(支付宝、微信、财付通、QQ钱包、短信支付等)进行对接,那么,是否了解了第三方接口有哪些?是否都能清楚我们的产品与第三方是如何交互的?是否能画出流程图?
      2、异常场景有哪些?
      3、有哪些风险,如何规避?
      第三方支付的流程,与商户的对接方式基本相似,大同小异。(题外推荐:如下流程图使用的chrome插件:Gliffy,个人感觉比较好用。)
      支付流程:
      退款流程:
      查询流程:
      先看下流程图,是否对流程图有些了解,不仅仅是做支付功能相关测试才去搞清楚其中的流程,做其他的测试一样也要搞清楚流程,只有搞清楚流程,才能更好的评估其中的风险,才能有利于测试用例的设计。当然流程图中只是提到了商户与第三方是如何交互的,同样商户内部处理的流程也要有所了解及数据怎么存储的,涉及到哪些DB也要清楚。
      流程清楚之后,我们再来看看其中会涉及到哪些接口?这个支付流程图里面就涉及到了第三方支付接口:
      · 下单接口:商户提交下单请求到第三方支付接口,第三方支付收单成功后返回下单成功结果给到商户系统。(下单接口的最终处理结果分为下单成功和下单失败,若未收到明确结果可调用单笔订单查询接口查询结果。)
      · 支付接口:调用该接口时指定支付参数,完成买家账户向商户账户的支付,采用页面跳转交互模式和后台通知交互模式。(结果分为两路返回:一路为前台在return_url页面跳转显示支付结果;一路为后台在notify_url收到支付结果通知后进行响应。)
      · 退款接口:调用第三方支付的支付请求接口返回付款成功后,在需要做退款处理时调用退款请求接口发起退款处理。(退款接口的最终处理结果分为退款成功和退款失败,若未收到明确结果可调用退款查询接口查询结果。)
      · 单笔订单查询接口:根据订单号查询单笔订单信息和状态。
      · 退款订单查询接口:调用第三方支付的退款接口返回后,在需要查询退款请求状态可调用退款订单查询接口查询退款订单的状态和订单信息。
      那么针对第三方的接口,我们大致也有所了解了,接下来针对测试过程中涉及到主要的测试点整理如下:
      测试过程中需要注意的主要测试点及异常场景:
      · 首先要保证接口都能正常调用;
      · 生成一笔订单,支付完成后,同步或异步重复回调,只有一次有效;
      · 生成一笔订单,复制订单号和金额,再次生成一笔订单,用fiddler设置断点,用第一笔已完成的订单号和订单金额去替换现有的订单号和金额,无法完成支付;
      · 生成一笔订单,跳转到第三方时修改金额,无法到账,或者如果是游戏充值游戏币的话,到账为篡改后的金额对应的游戏币;
      · 异步通知屏蔽,同步有效,进行支付,同步能够正常到账;
      · 同步设置无效,异步有效,进行支付,异步能够正常到账;
      · 同步异步都设置无效,在第三方支付完成后,在重发机制时间范围内,设置异步有效,到下次通知时间点时,能够正常通知到账(补单机制的验证,如果商户收到第三方支付成功的通知后,要告知第三方支付收到了成功的通知,如果第三方支付收到商户应答不是ok或超时,第三方支付就会认为通知失败,会在规定的时间内持续调用notify_url,一般有时间或次数的限制);
      · 针对支付订单在数据库中存储是否完整和正确进行校验(比如:第三方订单号--方便与第三方对账和问题排查、订单金额、订单状态等);
      · 如果是用户购买实物商品,用户发起退货,要保证退货流程正常,资金能正常返还,要考虑下并发情况的验证以确保安全性;
      · 如果是用户购买虚拟商品,比如话费、油卡之类的商品,只有在发货失败的时候才能发起退货,注意验证;
      遇到过的坑:
      · 用户购买100元游戏币时,前往第三方支付跳转进行金额的篡改由100元改成0.01元,结果就拿了0.01元充值了100元的游戏币。对订单金额没有做校验导致这样的后果,损失比较大。大家在测试的过程中一定要注意对服务端进行校验,支付时数据的篡改一定要有校验。
      · 当同步、异步通知都存在的情况的,异步通知(第三方支付成功后台通知),没有到账,导致部分用户充值不到账,引起客诉。当同步、异步并存的时候,一定要分别对同步和异步进行检验,确保都能正常到账。
      我们所做的绝大多少的互联网产品都会涉及到第三方支付,所以支付功能必然是重要的,作为测试互联网产品的一员,我们必须要做好支付的安全性。
      那么,如何规避支付风险?
      为了进一步的加强支付功能的安全,也可以适当的增加一些监控机制,比如:订单与第三方订单进行对比,可以使用跑批完成,当我们完成支付的订单从数据库中查出来与通过第三方订单查询接口查询出来的同一个订单金额有异常时,进行报警通知能够及时发现处理,甚至当有异常情况进行创建订单的终止,从而把损失降到最低
  • cookie 和session 的区别详解[转载]]

    2017-03-15 15:14:39


    这些都是基础知识,不过有必要做深入了解。先简单介绍一下。

    二者的定义:

    当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,

    都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie

    里的内容来判断使用者,送出特定的网页内容给你。 Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie

    来辨认使用者,以方便送出使用者量身定做的内容,像是 Web 接口的免费 email 网站,都要用到 Cookie。


    具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

    同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制

    来达到保存标识的目的,但实际上它还有其他选择。

    cookie机制。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示

    浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用

    是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围

    大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。
     
    cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这

    个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。

    会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie

    保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏

    览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式

    session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

              当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识

    (称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来

    使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相

    关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应

    中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给

    服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时

    仍然能够把session id传递回服务器。

    经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器

    会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如: 
    <form. name="testform" action="/xxx"> 
    <input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
    <input type="text"> 
    </form> 
    实际上这种技术可以简单的用对action应用URL重写来代替。

    cookie 和session 的区别:

    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

    2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
       考虑到安全应当使用session。

    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
       考虑到减轻服务器性能方面,应当使用COOKIE。

    4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

    5、所以个人建议:
       将登陆信息等重要信息存放为SESSION
       其他信息如果需要保留,可以放在COOKIE中

  • SVN使用时遇到的各种问题的解决方法

    2014-08-20 10:13:48

    SVN常见问题

    目录

    1 1. 提示SVN证书过期?
    2 2. 用户名密码校验失败?
    3 3. SVN提交文件时提示文件冲突怎么办?
    4 4. SVN提交文件时提示失败?
     

    1. 提示SVN证书过期?

    问题描述:
    访问SVN库时,会多次弹出证书过期的提示,如下图所示:
    SVN_23.png

    解决方案:
    腾讯云平台于2012年11月1日发布了新的SVN域名以解决该问题,请开发者切换到新的SVN库地址。

     

    2. 用户名密码校验失败?

    一般是由于保存了某个SVN库的登录凭证,导致访问另外1个SVN库时密码错误导致的,请开发者清除登录凭证。
    访问SVN库时,会弹出要求用户输入SVN库用户名和密码的弹框,如下图所示:
    SVN_21.png
    注意不要勾选下面的“Save authentication”,原因是如果1个开发者有多个应用,则有多个SVN库,保留1个SVN库的登录凭证可能会导致登录别的SVN库失败。
    如果失败,请选择右键菜单的“TortoiseSVN”->“Settings”->“Save Data”对话框中,点击“Authentication data”旁的“Clear”按钮,清除登录凭证。清除登录凭证如下图所示:

    SVN_22.png

     

    3. SVN提交文件时提示文件冲突怎么办?

    1. 如果执行svn commit命令时遇到了"xxx is out of date"提示,如下图所示:
    SVN_24.png
    那么一般是因为您修改了本地某文件或目录结构,而别人也修改了同一个的文件或目录并且先于您提交到了SVN库。

    2. 解决的办法是先使用svn update命令获取SVN库上最新修改的文件,这个命令并不会直接覆盖掉您本地所做的修改,SVN客户端会先尝试将SVN库上该文件的修改合并到你的本地文件中。
    如果SVN客户端成功的进行了合并,您可以再次执行SVNcommit命令进行本地文件的提交即可。

    3. 如果SVN客户端无法进行自动合并(可能因为文件是一些二进制文件,或者两人修改的地方是同一个,或者修改的地方太多等原因),则svn客户端会提示“one or more files are in confict state”,即告诉您有文件发生了冲突,如下图所示:
    SVN_25.png

    4. 如果是文本文件冲突,则在文件夹下会多出几个冲突文件,如下图所示:
    SVN_26.png

    其中:
    -f2是尝试合并的文件,里面有svn客户端加入的一些标记;
    -f2.r69是您本地修改文件的基础版本,69是版本号;
    -f2.mine是您本地修改后的文件,即f2.mine是在f2.r69文件基础上更改的;
    -f2.r70是服务器上最新版本的文件,即别人修改后提交的文件。

    此时的解决方法有多种:
    (1)比较f2.r70和f2.mine,将您自己做的修改和别人做的修改手工合并,然后把合并后的内容覆盖到f2中。
    最后右键点击f2,然后选择Resovled,之后f2.mine,f2.r69,f2.r70文件都会自动被删除。然后您再次执行svn commit就可以了。如下图所示:
    SVN_27.png

    (2)如果要保留别人的修改而放弃自己的修改,则可以删掉f2,f2.mine, f2.r69,f2.r70几个文件,再执行以下update,这样会重新从服务器上把最新文件下载到本地。

    (3)如果是保留自己的修改而放弃别人的修改,则可以删掉f2,f2.r69,f2.r70,然后把f2.mine改名为f2,然后再次执行svn commit,就可以把自己的修改上传到svn服务器。

    5. 如果发生冲突的是二进制文件,此时SVN客户端是无法执行自动合并的,这样目录下只会多出以.rXX结尾的两个文件,而不会出现.mine结尾的文件,此时的处理方法可以参考上面的(2)(3)。

  • hosts文件不起作用了

    2013-09-17 09:48:36

        我的浏览器设置了代理服务器,取消了代理,hosts文件就生效了。。。
  • 360 急速模式与兼容模式的趋避

    2013-09-02 10:47:47

    以前的浏览器大部分都采用IE核心,这类浏览器体积都很小,因为他们都只是给IE披了个外衣而已,只是在IE的基础上增加了些功能,其网页显示的效果和IE是一样的,如果你的电脑上没有IE,那这些浏览器也就没有用了。但是IE内核速度比较慢,所以现在的浏览器都使用一个叫Webkit的内核,这个内核浏览速度比IE快很多,因为加入了新的内核,所以现在的浏览器体积都比较大,但是因为国内的大部分用户都是用IE,所以很多网站都是针对IE开发的,用其他的浏览器核心会显示不正常,所以出现了双核浏览器,平时使用Webkit内核,即极速模式,遇到显示不正常的网页就换成IE内核,即兼容模式。
  • Win7没有声音,显示扬声器未插入的解决方法

    2013-07-24 11:44:16

    Win7没有声音,显示扬声器未插入的解决方法  

        很多人安装完WIN7后发现原来在XP下声音很正常,按装WIN7后没有声音了,显示数字音频,或是扬声器未插入,解决办法如下,首先确认你的声卡驱动支持WIN7,安装支持WIN7的驱动后,打开控制面板

    Win7没有声音,显示扬声器未插入的解决方法 - 心想是程 - 心想是程

    打开后点击图中标的位置,如果你发现你的没有这个选项,请安装完整的声卡驱动

    Win7没有声音,显示扬声器未插入的解决方法 - 心想是程 - 心想是程
    打开后点击右侧的这个黄色的文件夹的图标

    Win7没有声音,显示扬声器未插入的解决方法 - 心想是程 - 心想是程

    看到了吧,打开吧,只差最后一步了,

    Win7没有声音,显示扬声器未插入的解决方法 - 心想是程 - 心想是程

    把“禁用前面板插孔监测”钩上点击确定就OK了。

    你的有声音了吗?!

  • 当设置迭代次数大于1时,回放从第二次迭代开始发生错误

    2013-04-27 10:40:21

    一些Web虚拟用户脚本录制后立刻回放没有任何问题,但是当设置迭代次数大于1时,如果进行回放则只能成功迭代一次。为什么从第二次迭代开始发生错误?

      这种现象多是由于在“Run-time Setting”的“Browse Emulation”的设置中,勾选了“Simulate a new user on each iteration”及其下面的选项“Clear cache on each iteration”这两个选项的含义是每次迭代时模拟一个新的用户及每次迭代时清除缓存。

      由于脚本迭代时,init和end只能执行一次,如果每次迭代都模拟一个新的用户并清除缓存,
    则用户登录信息将一并清除,因此迭代时可能会发生错误。
  • VuGen会修改录制浏览器中的代理服务器设置吗?

    2013-04-27 10:37:37

    VuGen会修改录制浏览器中的代理服务器设置吗?

      会修改。在开始录制基于浏览器的Web Vuser脚本时,VuGen首先会启动指定的浏览器。然后,VuGen会指示浏览器访问VuGen代理服务器。为此,VuGen会修改录制浏览器上的代理服务器设置。默认情况下,VuGen会立即将代理服务器设置更改为Localhost:7777。录制之后,VuGen会将原始代理服务器设置还原到该录制浏览器中。因此,在VuGen进行录制的过程中,不可以更改代理服务器设置,否则将无法正常进行。
  • 回放报错Error:serverreturned an incorrectly formatted SOAP response”

    2013-04-27 10:10:53

    LoadRunner 8.0版本的VuGen在录制Web Services协议的脚本时一切正常,而回放时报出错误提示“Error:serverreturned an incorrectly formatted SOAP response”。这时说明原因引起的?

      造成这种情况的主要原因是LoadRunner 8.0的VuGen在录制Web Service协议的脚本时存在一个缺陷:如果服务器的操作系统是中文的,VuGen会自动将WSDL文件的头改为,因此会有上面的错误提示。

      解决方法:把“LR80WebservicesFPI_setup.exe”和“lrunner_web_sevices_path_1.exe”两个补丁打上即可解决。
  • 运行时的Pacing设置主要影响什么?

    2013-04-27 10:06:13

    运行时的Pacing设置主要影响什么?

      Pacing主要用来设置重复迭代脚本的间隔时间。共有三种方法:上次迭代结束后立刻开始、上次迭代结束后等待固定时间、按固定或随机的时间间隔开始执行新的迭代。

      根据实际需要设置迭代即可。通常,没有时间间隔会产生更大的压力。
  • 为什么脚本中添加了检查方法Web-find,但是脚本回放时却没有执行?

    2013-04-27 10:05:46

    为什么脚本中添加了检查方法Web-find,但是脚本回放时却没有执行?

      由于检查点功能会耗费一定的资源,因此LoadRunner默认关闭了对文本及图像的检查。要想开启检查功能,必须修改运行时的配置Run-time Setting。

      进入“Run-time Setting”对话框,依次进入“Internet Protocol→Preferences”,勾选Checks下的“Enable Image and text check”选项即可。

      检查执行结果时推荐使用web_reg_find方法。
  • HTML-based script与URL-based script的脚本有什么区别

    2013-04-27 10:05:12

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

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

      通常,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的JavaApplet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。
  • 录制Web脚本时,生成的脚本中存在乱码该如何解决?

    2013-04-27 10:04:33

    录制Web脚本时,生成的脚本中存在乱码该如何解决?

      录制脚本前,打开录制选项配置对话框Record-Options,进入到Advanced标签,先勾选“Support charset”,然后选择中支持UTF-8。再次录制,就不会出现中文乱码问题了。
  • 问题:Connection reset by peer

    2013-04-27 09:56:30

    问题描述Connection reset by peer

      这个问题不多遇见,一般是由于下载的速度慢,导致超时,所以,需要调整一下超时时间。

      解决办法:Run-time setting窗口中的‘Internet Protocol’-‘Preferences’设置set advanced options(设置高级选项),重新设置一下“HTTP-request connect timeout(sec),可以稍微设大一些”;

  • 问题:connection refused

    2013-04-27 09:56:01

    问题描述connection refused

      这个的错误的原因比较复杂,也可能很简单也可能需要查看好几个地方,解决起来不同的操作系统方式也不同;

      1、 首先检查是不是连接weblogic服务过大部分被拒绝,需要监控weblogic的连接等待情况,此时需要增加acceptBacklog,每次增加 25%来提高看是否解决,同时还需要增加连接池和调整执行线程数,(连接池数*Statement Cache Size)的值应该小于等于oracle数据库连接数最大值;

      2、 如果方法一操作后没有变化,此时需要去查看服务器操作系统中是否对连接数做了限制,AIX下可以直接vi文件limits修改其中的连接限制数,还有 tcp连接等待时间间隔大小,wiodows类似,只不过wendows修改注册表,具体修改方法查手册,注册表中有TcpDelayTime项;

  • 问题:open many files

    2013-04-27 09:55:14

    四、问题描述open many files

      问题一般都在压力较大的时候出现,由于服务器或者应用中间件本身对于打开的文件数有最大值限制造成,解决办法:

      1、 修改操作系统的文件数限制,aix下面修改limits下的nofiles限制条件,增大或者设置为没有限制,尽量对涉及到的服务器都作修改;

      2、 方法一解决不了情况下再去查看应用服务器weblogic的commonEnv.sh文件,修改其中的nofiles文件max-nofiles数增大,应该就可以通过了,具体就是查找到nofiles方法,修改其中else条件的执行体,把文件打开数调大;修改前记住备份此文件,防止修改出错;

  • 问题:has shut down the connection prematurely

    2013-04-27 09:54:44

    五、问题描述has shut down the connection prematurely

      一般是在访问应用服务器时出现,大用户量和小用户量均会出现;

      来自网上的解释:

      1> 应用访问死掉

      小用户时:程序上的问题。程序上存在数据库的问题

      2> 应用服务没有死

      应用服务参数设置问题

      例如:

      在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%

      Java连接池的大小设置,或JVM的设置等

      3> 数据库的连接

      在应用服务的性能参数可能太小了

      数据库启动的最大连接数(跟硬件的内存有关)

      以上信息有一定的参考价值,实际情况可以参考此类调试。

      如果是以上所说的小用户时:程序上的问题。程序上存在数据库的问题,那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中并发500用户和600用户时曾出现过jvm锯齿型的变化,上升下降都很快,这应该是不太正常的;

  • 问题:Failed to connect to server

    2013-04-27 09:54:03

    问题描述Failed to connect to server

      这个问题一般是客户端链接到服务失败,原因有两个客户端连接限制(也就是压力负载机器),一个网络延迟严重,解决办法:

      1、 修改负载机器的tcpdelaytime注册表键值,改小;

      2、 检查网络延迟情况,看问题出在什么环节;

      建议为了减少这种情况,办法一最好测试前就完成了,保证干净的网络环境,每个负载机器的压力测试用户数不易过大,尽量平均每台负载器的用户数,这样以上问题出现的概率就很小了。

    ErrorFailed to connect to server192.168.2.192[10060]Connection

    Errortimed out ErrorServer192.168.2.192has shut down the connection prematurely

    原因:

    1>    应用访问死掉

    小用户时:程序上的问题。程序上存在数据库的问题

    2>    应用服务没有死

    应用服务参数设置问题

    例如:

    在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25

    Java连接池的大小设置,或JVM的设置等

    3>    数据库的连接

    在应用服务的性能参数可能太小了

    数据库启动的最大连接数(跟硬件的内存有关)

    ErrorPage download timeout120secondshas expired

    分析原因:

    应用服务参数设置太大导致服务器的瓶颈

    页面中图片太多

    在程序处理表的时候检查字段太多

  • Warning - the "Simulate a new user on each iteration"

    2013-04-27 09:51:56

    八:Warning -27077: The "vuser_init" section contains web function(s) when the "Simulate a new user on each iteration" Run-Time Setting is ON.  This may produce unpredictable results with multiple iterations   [MsgId: MWAR-27077]
    通过LR来录制登录过程并生成脚本,设置了自动关联,并回放录制脚本,观察回放日志发现没有报error信息,说明脚本没有问题,将脚本放入Controller中设置100个用户设置运行,发现运行一段时间开始报错,这里先不说报什么错,继续观察脚本,回到Vuser中调试,再次回访观察日志文件,发现标题上的错误信息:

    仔细分析发现这里的警告信息提示"Simulate a new user on each iteration",表示在每次迭代都模拟一个新的用户,对于web登录系统来说,通常都是用session来保存cookie信息,而"Simulate a new user on each iteration"是LR中的一项缺省设置,按照LR手册来讲,这个选项一般带来的副作用并不十分明确。我们再来做另外一个实例,就是一个数据添加页面,通过录制脚本来添加数据,回放过程中也提示该信息,没有提示error信息,将脚本放入Controller中运行,设置100个用户,设置每个用户迭代运行2次,按照计算来讲就是添加200条记录,开始运行,结果发现实际数据库中只新增了100条记录,再回头寻找原因发现脚本回放中的"Simulate a new user on each iteration",会不会跟这个有关系,根据理解,每次迭代模拟一个新用户来运行,而且该设置在LR中缺省,并默认也是情况缓存的,也就是说同时情况了session信息,导致每次都需要重新来建立新的session才能可以添加数据,在分析日志发现在循环迭代中有一个访问页面timeout.jsp,从这里可以发现是session超时引起的,可以猜想在两次迭代中肯定是清除了cookie。在LR中找到"Simulate a new user on each iteration"的设置区域,如下图:

    通过上图发现LR默认就是设置勾选"Simulate a new user on each iteration"该选项,去掉勾选之后再回放脚本,观察回放日志发现,Warning信息已经消失了。

    同样将脚本放置Contoller中继续之前设置,开始循环运行,结果会如期而至的。

    通过两个简单的实例来说明LR中脚本调试的一些关注点,对于日志中警告信息并不是没有原因的,既然是警告信息就总有可能遇到,不然系统也不会给出提示,当然在web测试中可能还是特别的多见,其实在做关联的时候也经常有warning提示。如果大家做过客户端软件的压力测试时,应该就比较熟悉warning了,通常一些客户端软件由于一些特定的协议,LR支持不太好,总会在录制的脚本运行之后发现有丢包现象,但是不会以错误的形式来提示,而是在回放日志以warning来提示。

     
  • 问题:LR回放highest severity level was"ERROR"

    2013-04-27 09:51:09

    七:LR回放中highest severity level was"ERROR"的解决方法

     

    在录制时一切正常,而回放时提示类似如下错误;或者回放时问题,在场景中运行时报错,查看结果日志,如下:

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

     处理方法如下:

    一:打开recording options,在internet protocol下的recording中选择recording level为HTML-based script,点击HTML Advanced,选择script. type为A script. containing explicit.即可。

    二:
    取消选中run time settings-browser emulation-download non-html resources.解决 
    注:方法一解决了我的问题
1271/71234567>
Open Toolbar