51Testing软件测试论坛

标题: 性能测试之感想 [打印本页]

作者: jun_1028    时间: 2009-1-21 16:32
标题: 性能测试之感想
对于性能测试,很多人不以为然!
自然我们有时候也把会性能测试==会使用LoadRunner。
诚然会使用LoadRunner是不错的,但性能测试不同我们常说的功能测试、界面测试
对于这类测试我们总可以直接找出软件的BUG,只要你有足够的耐心,细心!反复的错误。
软件的错误总是会“大白于天下”!
而性能测试则不样,在常规的性能测试时候,你需要大量的并发数的时候,你不太可能一下子操作10台PC
LR自然也是上佳的选择!
当你成功的使用LR录制脚本,然后调优,再然后成功的回放!这时候我想你的心情一定是很愉悦的!
然后,LR的分析结果也出来了,你发现其中大部分好像超标,且有几个fail的事务和一堆不太明白的数据!
然后:
问题:真的是软件自身的问题?还是网络瓶颈、参数设置、硬件性能、脚本?

我之前做过性能测试分析,但事实上用LR并不是很多,在这分享一下自己的经验,权当抛砖引玉。
希望过来捧场的朋友也跟我们分享自己的遇到一些性能测试的问题或是自己针对性能测试的一些经验、解决问题的途径&技巧
1)性能测试的关键,在进行任何一个性能测试前,一定要明确性能测试的目标,写好测试策略!
   如并发数,如何加压?【10minute,30.......】,这部分是场景设计的基石!
2)关于集合点,设置集合点可以最大限度的量测系统的性能指标!
    但有时候,真实的场景并非如此,所以如果性能指标的要求比较苛刻的,可以考虑加入集合点!
    一般常规的性能测试,可以考虑不要加集合点了!
3)执行事务时间,一般最后不要超过5秒,3秒之内最合适,超过了5秒,你可以打开网页细分图,确定时间只要
   是花费在哪?network time?server time?还是那个组件太大了?
   另外脚本录制的时候,事务要定义清楚,不要把不相关的操作也录制在事务里面!
4)在进行场景测试时候,一般测一个用户的情况,不要加压,然后再增加并发数。。。。
   这样的话,出了事情,也知道孰是孰非?
5)不要轻易的下结论,针对运用排除法进行分析
下面我说一下我曾经遇到过的case:
1.使用LR测试一个网上调查系统【ASP+IIS】
2.我用LR录制这个调查的过程,并用户名和密码参数化,地方名参数化
3.录制完结束,回放OK
4.场景测试:10个并发测试,Duration:run until complete
   测试ok
5.但加压20Minute时候,出问题!Duration:20
  fail的事务数比较,且是这样用户每迭代的时候,提示error:requested form not found
6.后来经过排查,发现是脚本的问题。
那各位认为可能是脚本那出问题了呢?
知道的话,告诉大家一下,不知道的话,就问我好了?
  



作者: lushuishui    时间: 2009-1-21 17:12
这是为什么啊?不过以前我还碰到过一个问题,每次执行同样的一个脚本,结果出现的错误个数不同,甚至有时没有错误出现,真的是搞不懂了
作者: yetties2005    时间: 2009-1-21 17:41
.....
作者: Corelli    时间: 2009-1-21 18:18
这有点意思。
条件:报requested form not found错,推论:应该是用了A script deescribing user actions这种录制模式
条件:用户每迭代的时候...,推论:使用迭代,而且问题跟迭代有关系
条件:使用迭代,推论:问题有可能跟“迭代时,init函数不会迭代执行”有关
那么,情况很可能出现在:将页面的web_link放到init函数,但把该页面的web_submit_form放到action(或同样类型)的函数,那在第二次及第二次以后执行这个web_submit_form时,它的URL就是错的了。。
作者: jun_1028    时间: 2009-1-22 09:48
楼上的分析得很不错,但如果URL是错的,那出现的error message就
应该是failed to connect to server...
你已经分析到
web_submit_form(),我想你再进一步分析,就可以找到答案!
另外,我很希望也大家能够把平时遇到的case也拿出来分析。。。
作者: Corelli    时间: 2009-1-22 10:15
还需要进一步分析?
我给你俩函数你就知道了
要符合你所有条件的情况并不多。你要是能找到第二种你就说出来吧

vuser_init()
{

        web_url("login.php",
                "URL=http://www.kaixin001.com/login/login.php",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t5.inf",
                "Mode=HTML",
           LAST);

        return 0;
}

Action()
{

        web_submit_form("login.php_2",
        "Snapshot=t6.inf",
        ITEMDATA,
        "Name=email", "Value=aaa", ENDITEM,
        "Name=password", "Value=ccc", ENDITEM,
        LAST);

        return 0;
}
作者: jun_1028    时间: 2009-1-22 11:17
你分析有道理,已经知道是参数的问题,但URL参数不对,错误应该是连不上server
那既然是requested form fail但没有提示failed to connect..
那说明出问题的是form!
既然是form有问题,那第一次怎么会对?而迭代出错呢?
有一种情况就是form中参数,如果恰巧是第一个设对,而其他的是错的?
那出现requested form fail是应该!
作者: 二氧化硅    时间: 2009-2-4 20:40
标题: 回复 1# 的帖子
恐怕是关联没有做好吧?服务器返回的SID值和开始录制脚本的时候不一样,自然无法请求到想要的内容。
作者: AJan1000    时间: 2009-2-5 09:36
原帖由 jun_1028 于 2009-1-22 11:17 发表
你分析有道理,已经知道是参数的问题,但URL参数不对,错误应该是连不上server
那既然是requested form fail但没有提示failed to connect..
那说明出问题的是form!
既然是form有问题,那第一次怎么会对?而迭代出 ...


那应该就是用于登录的参数的设置不对,即UserID和Password之间设置有偏差,导致迭代时候,读取参数时出现问题?
作者: 冰清    时间: 2009-2-10 11:21
到底是那里不对啊?正确答案呢?
作者: zynuage    时间: 2009-2-10 11:34
原帖由 lushuishui 于 2009-1-21 17:12 发表
这是为什么啊?不过以前我还碰到过一个问题,每次执行同样的一个脚本,结果出现的错误个数不同,甚至有时没有错误出现,真的是搞不懂了

这个跟你的服务器缓存有关的,还有你的机子配置,web服务是否重启过,服务器的所有连接是否都断了,原因是很多的。
作者: jun_1028    时间: 2009-2-11 14:43
答案如AJan1000所说:
为读取表单参数所引起的问题
作者: jun_1028    时间: 2009-2-11 14:44
标题: 性能测试问题点
大伙也可以把自己遇到的case拿出来讨论,讨论
作者: caohp0709    时间: 2009-2-11 16:00
这种做法顶!
作者: yuaner86    时间: 2009-2-12 13:53
我也刚开始学习使用lr,看见那么一大堆图表真是头大啊,不知道怎么分析
作者: jun_1028    时间: 2009-2-13 13:23
如果觉得分析难的话,可以从最简单的做起,比如逆向思维:即你已经知道问题,然后学着使用LR分析看看
作者: jun_1028    时间: 2009-3-6 09:43
update
作者: marsKoKo    时间: 2009-3-6 10:42
冒昧定楼主一下
其实楼主的些些总结在很多地方都能看到
如果能加入具体的东西来佐证自己的这些总结  我想更有说服力吧

======
1)性能测试的关键,在进行任何一个性能测试前,一定要明确性能测试的目标,写好测试策略!
   如并发数,如何加压?【10minute,30.......】,这部分是场景设计的基石!
===既然是基石,那这个我们应该从那些方面考虑,从而得到这些策略呢?

4)在进行场景测试时候,一般测一个用户的情况,不要加压,然后再增加并发数。。。。
   这样的话,出了事情,也知道孰是孰非?
========这个说的不是很明吧,比如就拿你下面登陆的case来说明下?

呵呵  我是菜鸟
如上问题只是愚见     还望明示
作者: jun_1028    时间: 2009-3-10 14:40
恩,你说不错,TKS,不过你也算的上是泛泛之论。
关于性能测试,有很多细节可以写的。
我有2个冀求:
1.大家能把自己遇到的问题拿出讨论
2.谈谈自己的经验或遇到某特定问题的处理方法、技巧
若果如此,则可积沙成堆,汇溪成河!
大家皆可受益。
作者: jacktanzi    时间: 2009-3-25 15:19
标题: 没有添加事务的开始和结束
没有添加事务的开始和结束
作者: meibaocai    时间: 2011-1-26 15:20
我也碰到了,如何解决?请大侠指教
        web_submit_form("showBlank.action",
                "Action=/km/showBlank.action",
                "Snapshot=t22.inf",
                ITEMDATA,
                LAST);
作者: meibaocai    时间: 2011-1-26 15:21
slect_lang()
{

        /*点击知识库首页链接*/

        lr_think_time(50);

        web_url("close_tab.gif",
                "URL=http://172.16.11.203:8080/resources/grap/cn/images/close_tab.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://172.16.11.203:8080/main/main.action",
                "Snapshot=t13.inf",
                LAST);

        web_url("xuanxiang_top.gif",
                "URL=http://172.16.11.203:8080/resources/grap/cn/images/xuanxiang_top.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://172.16.11.203:8080/main/main.action",
                "Snapshot=t14.inf",
                LAST);

        web_url("myHome_over.gif",
                "URL=http://172.16.11.203:8080/resources/grap/cn/images/myHome_over.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://172.16.11.203:8080/main/loginSubmit.action",
                "Snapshot=t15.inf",
                LAST);

        web_submit_data("newFaxMsgTip.action_2",
                "Action=http://172.16.11.203:8080/mm/newFaxMsgTip.action",
                "Method=POST",
                "Referer=http://172.16.11.203:8080/main/mainFrameBottom.action",
                "Snapshot=t16.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=type", "Value=p", ENDITEM,
                LAST);

        web_url("mainPage.action",
                "URL=http://172.16.11.203:8080/km/mainPage.action",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://172.16.11.203:8080/main/main.action",
                "Snapshot=t17.inf",
                "Mode=HTML",
                EXTRARES,
                "Url=../resources/grap/cn/images/myWorkSpace_focus.gif", "Referer=http://172.16.11.203:8080/main/loginSubmit.action", ENDITEM,
                "Url=../resources/grap/cn/images/daohang_arrow_grap.png", ENDITEM,
                LAST);

        web_add_cookie("tpRecentOpen=enable#staff={NewParam}#km_main:知识库首页:/km/mainPage.action; DOMAIN=172.16.11.203");

        web_submit_data("getSameLevelMenuName.action",
                "Action=http://172.16.11.203:8080/main/getSameLevelMenuName.action",
                "Method=POST",
                "Referer=http://172.16.11.203:8080/km/mainPage.action",
                "Snapshot=t18.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=menuid", "Value=km_main", ENDITEM,
                LAST);

        web_submit_data("getSameLevelMenu.action",
                "Action=http://172.16.11.203:8080/main/getSameLevelMenu.action",
                "Method=POST",
                "Referer=http://172.16.11.203:8080/km/mainPage.action",
                "Snapshot=t19.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=supercode", "Value=km_main", ENDITEM,
                LAST);

        web_submit_data("getSameLevelMenu.action_2",
                "Action=http://172.16.11.203:8080/main/getSameLevelMenu.action",
                "Method=POST",
                "Referer=http://172.16.11.203:8080/km/mainPage.action",
                "Snapshot=t20.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=supercode", "Value=0", ENDITEM,
                LAST);

        web_url("simpleQuery.action",
                "URL=http://172.16.11.203:8080/km/simpleQuery.action?type=1",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://172.16.11.203:8080/km/mainPage.action",
                "Snapshot=t21.inf",
                "Mode=HTML",
                LAST);

        web_submit_form("showBlank.action",
                "Action=/km/showBlank.action",
                "Snapshot=t22.inf",
                ITEMDATA,
                LAST);

        /*正确显示查询结果*/

        return 0;
}
作者: meibaocai    时间: 2011-1-26 15:21
请各位大侠指教,如何修改脚本
作者: wzg781215    时间: 2011-3-2 18:02
在LR中,并发用户时,会不会出现在开始和结束时,失败事物较多的情况(即所谓steady-state)?

在实际环境中,并不是完全的并发,即总是存在一定的先后差异,因此,当结论系统支持5,000用户时,系统实际支持的用户数为10,000.  在LR中是否有什么方法来评估这个所谓的warm-up时间?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2