51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 10403|回复: 23
打印 上一主题 下一主题

[原创] 性能测试之感想

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-1-21 16:32:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
对于性能测试,很多人不以为然!
自然我们有时候也把会性能测试==会使用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.后来经过排查,发现是脚本的问题。
那各位认为可能是脚本那出问题了呢?
知道的话,告诉大家一下,不知道的话,就问我好了?
  


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

24#
发表于 2011-3-2 18:02:32 | 只看该作者
在LR中,并发用户时,会不会出现在开始和结束时,失败事物较多的情况(即所谓steady-state)?

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

使用道具 举报

该用户从未签到

23#
发表于 2011-1-26 15:21:38 | 只看该作者
请各位大侠指教,如何修改脚本
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2011-1-26 15:21:15 | 只看该作者
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;
}
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2011-1-26 15:20:29 | 只看该作者
我也碰到了,如何解决?请大侠指教
        web_submit_form("showBlank.action",
                "Action=/km/showBlank.action",
                "Snapshot=t22.inf",
                ITEMDATA,
                LAST);
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2009-3-25 15:19:05 | 只看该作者

没有添加事务的开始和结束

没有添加事务的开始和结束
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2009-3-10 14:40:05 | 只看该作者
恩,你说不错,TKS,不过你也算的上是泛泛之论。
关于性能测试,有很多细节可以写的。
我有2个冀求:
1.大家能把自己遇到的问题拿出讨论
2.谈谈自己的经验或遇到某特定问题的处理方法、技巧
若果如此,则可积沙成堆,汇溪成河!
大家皆可受益。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2009-3-6 10:42:28 | 只看该作者
冒昧定楼主一下
其实楼主的些些总结在很多地方都能看到
如果能加入具体的东西来佐证自己的这些总结  我想更有说服力吧

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

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

呵呵  我是菜鸟
如上问题只是愚见     还望明示
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2009-3-6 09:43:41 | 只看该作者
update
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2009-2-13 13:23:48 | 只看该作者
如果觉得分析难的话,可以从最简单的做起,比如逆向思维:即你已经知道问题,然后学着使用LR分析看看
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2009-2-12 13:53:04 | 只看该作者
我也刚开始学习使用lr,看见那么一大堆图表真是头大啊,不知道怎么分析
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2009-2-11 16:00:18 | 只看该作者
这种做法顶!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2009-2-11 14:44:17 | 只看该作者

性能测试问题点

大伙也可以把自己遇到的case拿出来讨论,讨论
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2009-2-11 14:43:16 | 只看该作者
答案如AJan1000所说:
为读取表单参数所引起的问题
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-2-10 11:34:25 | 只看该作者
原帖由 lushuishui 于 2009-1-21 17:12 发表
这是为什么啊?不过以前我还碰到过一个问题,每次执行同样的一个脚本,结果出现的错误个数不同,甚至有时没有错误出现,真的是搞不懂了

这个跟你的服务器缓存有关的,还有你的机子配置,web服务是否重启过,服务器的所有连接是否都断了,原因是很多的。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-2-10 11:21:50 | 只看该作者
到底是那里不对啊?正确答案呢?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-2-5 09:36:36 | 只看该作者
原帖由 jun_1028 于 2009-1-22 11:17 发表
你分析有道理,已经知道是参数的问题,但URL参数不对,错误应该是连不上server
那既然是requested form fail但没有提示failed to connect..
那说明出问题的是form!
既然是form有问题,那第一次怎么会对?而迭代出 ...


那应该就是用于登录的参数的设置不对,即UserID和Password之间设置有偏差,导致迭代时候,读取参数时出现问题?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-2-4 20:40:48 | 只看该作者

回复 1# 的帖子

恐怕是关联没有做好吧?服务器返回的SID值和开始录制脚本的时候不一样,自然无法请求到想要的内容。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2009-1-22 11:17:53 | 只看该作者
你分析有道理,已经知道是参数的问题,但URL参数不对,错误应该是连不上server
那既然是requested form fail但没有提示failed to connect..
那说明出问题的是form!
既然是form有问题,那第一次怎么会对?而迭代出错呢?
有一种情况就是form中参数,如果恰巧是第一个设对,而其他的是错的?
那出现requested form fail是应该!
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-1-22 10:15:41 | 只看该作者
还需要进一步分析?
我给你俩函数你就知道了
要符合你所有条件的情况并不多。你要是能找到第二种你就说出来吧

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;
}
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 11:30 , Processed in 0.108413 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表