51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1693|回复: 3
打印 上一主题 下一主题

两个测试人员的分歧--用lr的人进

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-2-21 13:03:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前一段时间测了一个C/S/S结构的信息管理系统,是一个公司的商业保险用的, 用的是PB写的客户端程序,

Weblogic做Appserver,Oracle的数据库服务器

它有一个 “基本信息管理”模块,可以查询到本系统登记的所有单位信息, 单位下的个人信息。这个模块可以做基本信息的增删查改。

这个模块是数据的入口。


它的主要业务是“计算缴费金额”:单位以及单位下个人参加了 商业保险,然后按照合同,每个月或每个季度缴纳保险金。

系统根据单位、个人基本信息,合同信息,计算单位、个人该缴纳多少钱。

这个业务给系统的造成主要负荷在于计算量庞大:每个月要计算所有单位以及所有个人要缴纳多少钱,然后写入到数据库里。

但这个业务不需要测并发。




另一个业务是“查询缴费金额”, 以参加保险的单位用户身份登陆的,

查看到本单位缴纳的总金额以及每个参加保险的人缴纳的金额(本月未缴以及历史已缴)

这个业务是要测并发的。在测试这个需要并发的模块时, 我和另一个测试人员在测试方法上发生了分歧:

---------------方法A---------------

如果单位下的人数多,计算量就大,客户端等待计算结果的时间就长。

系统计算一个100人的单位和计算一个10000人的单位下的缴费明细 ,时间是差很多的

测试的时候,以10并发为例子, 先选出10的倍数个单位(要有足够的数据量), 这些单位下都是100人, 然后10并发,不停的“查询缴费金额”

等lr上 “Trans Response Time 交易响应时间”的那个图中的线都不再有大的颠簸后,再读取其值,做为一组测试结果。

然后再选出10的倍数个单位(要有足够的数据量), 这些单位下都是500人......然后再选出1000个人的单位......

然后更换并发数,再从头做一遍,即并发数改为20,选出20的倍数个单位(要有足够的数据量), 这些单位下都是100人...

最后得到了下面的几组数据,

总数据量        并发数        单位人数        响应时间
--------------------
200万人        10        100        2秒
200万人        10        500        4秒
200万人        10        1000        7秒
--------------------
200万人        20        100        5秒
200万人        20        500        9秒
200万人        20        1000        15秒
--------------------

通过以上数据

可以得出固定规模数据量、不同并发数下,系统响应时间的值的区间

10并发: 2~7 秒
20并发: 5~15秒

以客户的需求来对比这个区间值,如果区间值大大满足了客户需求就算ok了,如果基本满足或不满足,就需要做调优了。


---------------方法B---------------


考虑到实际情况下,单位下的人数根本不可能那么的规范(全部是100人的、或500人的) 用方法A测出的值只能做为参考而不能做为结论

在对真实的数据进行统计后发现,很多的单位下都是100人左右,而较少的单位才会超过有200人,

取单位时,应该按百分比去取,以10并发为例, 用三个脚本,脚本1 取 8个单位,单位下人数在100人左右(80~120),脚本2 取1个

200~300人的单位,脚本3取1个 300~500人的单位,用 lr_start_transaction 对每个脚本对关键交易重新命名为X、Y、Z

接着在一个场景中, 脚本1 分配8个并发,脚本2、3 各一个,共10个并发,执行测试。10个虚拟用户每人只执行一次“查询缴费金额”

然后查看Analysis给出的测试结果,查看X、Y、Z交易的响应时间,做为一组测试结果。 这样重复做几次,取平均值,做为最后结果如下:

总数据量        并发数                处理速度
------------------------
                        100人左右平均需要2秒
200万人        10                200~300人左右平均需要3秒
                        300~500人左右平均需要4秒
------------------------




请问,这两种方法哪种比较科学?如果都错了,应该怎么做,谢谢~

[ 本帖最后由 suchboy 于 2006-2-21 13:05 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2006-2-21 17:06:29 | 只看该作者
我的师傅给了我这样一个解释


方法A 如果执行了很久,就是测疲劳度了,看看机器会不会瘫了

方法B 比方法A更贴近实际,目的只是为了获得最优性能值,但测得的值不见得会跟方法A的差很远

总之,用lr测试,每次得到的结果都不可能完全相同,真正要去关注的应该是该软件而不是其他,


既然两种方法的目的不同,就不能再去想该选择哪个了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-2-21 18:24:47 | 只看该作者

关老师选B

http://www.testage.net/bbs/dispb ... ;ID=5157&page=1

-----------------------------
从场景选取的角度来说,我个人倾向方法 B。


性能测试要能够尽可能真实地模拟用户的情况,从这个角度来说,方法 B 显然更贴近实际的用户情形。

不过,对方法 B 我有一定的疑问:为什么方法 A 给出了 10 和 20 两种并发的情形,而方法 B 只给出了 10 一种并发的情形

--------------------------------------
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-2-22 16:22:49 | 只看该作者
1。lz在方案B中可不可以用这样的方法:
在controller中选用面向目标的方式,用多个脚本,设置各自所占的Vuser的比例
设置目标:比如,要求系统响应的时间控制在4秒以内
然后由系统去添加Vuser用户的个数,直到达到你的测试目的

2。我觉得在方案B中lz还可以增加大数量单位的脚本,只是在设置其所占的比例的时候设置得偏小一点,这样就更加接近实际情况了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-21 03:21 , Processed in 0.063372 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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