软件性能测试的本质
更新时间:2023-05-29 13:20:02 阅读量: 实用文档 文档下载
淘宝网每年的双11 活动都是对其服务器性能的挑战。因为在这一天所有商品半价,购物的用户量剧增。做为淘宝网的高层更多的关心在线用户数,用户交易量,总交易金额等,做为一名技术人员,我们可能更关心当天系统的吞吐量、每秒钟点击率以及系统资源的消耗情况等,对!这就是系统的性能。那么性能的本质是什么呢?我试抓住一些点来解释。
基于用户体验的性能测试
但对于一个用户来说,他可以不关心上面这些(系统的性能参数),大约有一部分的消费者会因为网站过于技术化或者性能问题而选择了离开。换言之,如果你的网站速度太慢客户就会离去。这是所有的互联网用户都熟知的道理。这时你的第一想法不是“哎呀,不知道站点的吞吐量怎样”,而是“简直太慢了!我可没有时间在这里等,到别处去吧”。现在想想,人们离开你的站点是否因为性能问题?所以,在做性能测试的时候除关注吞吐量、点击率这些参数外,我们更需要站在用户的角度来测试实际的性能感受。如果你经过测试声称网站可以承受更多的用户同时访问,但实际的用户体验性非常差,那么做你的性能测试又有什么意义呢?
现在市场上有大量的书讨论如何设计良好的性能,还有更多的书把重点放在如何使得站点更加直观、生动和易于炒作上。关于速度的好处也讨论过,但如何真正并优化系统来提高用户体验呢?那就是直接的用户体验测试了。有两点方法可以做一这点。一是可以把站点直接投入到能够进行数据采集和系统调优的生产环境中,并祈祷你的网站不会太慢或崩溃。另一个种明智的选择是模拟真实的用户活动,进行重复的测试和调优,最后再投入到生产环境。
“明确”的性能需求
当测试人员进行性能测试工作时,真正让他们感到困难的不是测试工具如何使用,也不是如何对测试数据进行分析与系统调优(对于一个经验丰富有性能工程师来说,这真的不难)。让他们感到困惑的是如何得到准确的量化的需求,比如:
A. 网站可以支撑多少在线用户数
B. 网站可以支持多少用户同时交易
C. 电子邮件系统每秒种可以处理多少封邮件
D. 可以支持多少人同时浏览网页
类似于这样的数据会出现客户对系统的性能需求中,好吧,有了这些需求,我就开始性能工作了,这些需求真的很明确么?
我们来看下面的例子,一个购买汽车的用户想知道:
这辆汽车开100公里的耗油是多少升。(对,就是他坐在里面试驾的那辆车)
如果你是一个严谨的汽车销售,不会马上会说这辆车每公里的耗油是多少。而是在大脑中快速的列出的汽车驾驶环境:
1、车上坐几个人?
2、车上带多重的物品?
3、路况如何,是高速还是拥挤的市区?
4、天气如何,温度如何,要开空调码?
5、驾驶时间是白天还是晚上(如果是晚上要开车灯)?
6、驾驶习惯是怎样的?
....................................
你唯一能做的就是继续向客户确认更明确的需求,很多时候其实客户也无法给出精确的需求。这个时候你就要多参考常规的情况下,参考同类产品,或尽量引导用户去明确具体的需求,尽量与客户达到统一的共识。
“假设”的测试环境
现在是不是觉得性能测试有太多的前置条件,它们或大或小的影响着测试的结果。
关于这些前置条件,或者我们称之为假设(assumption),我把一些做法归纳为三个阶段。
一:做了假设却不知道自己做了假设
比如前面提到的那个耗油的问题,有人的做法是我就开100公里看看,得出来是多少就是多少,比如9L。然后就告诉别人这个车的100公里耗油是9L。
问题是这样的结果对你是OK,因为你有切身的的体验,知道遇到的状况,可是测试的报告是要给别人,甚至你都无法直接面对或者沟通的人参考。这就会很容易误导别人,即便这不是你的本意,而且你自已也确定你是真实的记录了结果。这里的问题在于你并不清楚自己所做的假设,因为我们一直在做这样的假设。
二:做过多的假设
“当路面平坦,无任何红绿灯,风速5km/h只有一名70kg的乘客,时速稳定在70km/h,良好驾驶习惯,....的情况下,耗油是7.1L/100km。”
这样可能很严谨,但是对你的报告的读者而言,这样的数据有多大意义,因为他们没有你这么幸运,有这么良好的环境。
三:做必要和合理的假设
生活有时候是需要一些妥协和折衷,如果这些折衷是必要的和合理的。因为跳出来看,我们的测试需要提供有价值的信息,所以为了这样有价值的信息,做出必要和合理的假设是可以接受的。
好吧,也许这不是你想要的答案,但它是我目前给自己的解释和安慰。
性能测试环境需要在严格独立监控下管理,尽量保持与真实生产环境的一致性能。保持一致性应该注意哪些方面,等搜索虫师的《性能测试知多少---测试环境搭建》“精确”的测试数据
对于一个严谨的测试员,我们的测试结果的描述也相当精确,如:用户每个用户的访问时间为2.8729秒,10分钟系统处理请求8634个。我以前一直认为,只要我把测试环境描述的很详细,我的测试结果就是精确的。
实际上功能测试很容易得到测试结果,而性能测试很难得到精确的量化结果,我买了一辆汽车,开车去上班,去时车的各个功能非常正常,回来的时候车的功能也非常正常。我们通过功能测试很容易得出,这个车的功能没有问题。
那么性能测试呢?再来看耗油情况,我去时上耗油3.29升,回来时耗油3.42升,同样的一条路,同样的人开同样的车,那么是不一样的耗油结果?如果我再试一遍,可能情况还会有变化。所以,我们很难得到精确的数据,但是这丝毫不影响我们测试结果的参考价值。
“宏观/围观”的性能测试
这也是一个有趣的对立。在做性能测试,特别是整个产品的性能测试的时候,我们看到的是产品的核心功能和主要的大的功能模块,比如数据库、web服务器、核心的daemon 等等。在脑海里,我们有一个架构图,哪怕你没有把它画出来。所以有时候,我们会想,性能测试对于产品的视角是宏观的,看大的组件,而不是具体的细节的东西。果真是如此吗?看看下面的例子:
1. 把daemon的log级别改为de bug (log_level从2改到5)之后,性能下降了差不多一半。
2. 关掉一个cache选项
3. 打开keepalive选项
4. 打开DNS反向查询
.....
上面都是些细枝末节的设置,一个配置项而已,藏在DB的某张表或者某个ini里面。但是改变之后,得到的性能结果可能大不相同。这些都是否改变了我们以往的看法。
Scott Barber(性能测试方面的专家)在他的一篇文章里讨论了这个话题。
“Macro- and Micro-tests, macro strategies and micro-plans, macro-level application usage and micro-level usage implementation details, macro-level result summaries for executives and micro-level test results for developers... it sounds like a day in the life of a performance tester to me.”
摘自他为Software Test & Performance杂志写的一个系列文章,叫做Peak Performance,其中的2006年9月的一期,文章名是Macro to Micro And Back Again Macro to Micro And Back Again,嗯,很好的诠释。
亚里士多德说世上的道理不是被讲一遍两遍而是成千上万遍,是的,因为Weinberg也讲了一遍,就在上面提到的那本书里面。请原谅我再次引用他的话,粉丝嘛。“Although it's necessary to have an overview of the problem, the big picture often turns on one critical detail.”
critical detail, 对,就是这个term。其实不光是这里说的测试,工作和生活中的很多事情都是一样,不是要不要关心细节,而是它是否critical。
那么,怎么区分一个细节是不是critical或者怎样找到critical的detail呢?
嗯...,这是个好问题,不过不好意思这个不是这里要讨论的范畴。
所以,你还认为性能测试只是学习如何使用性能工具么?它需要一个长期的个技术的积累,我们的路还很长。也许,我讲的不够本质,但性能测试这个领域,看到太多的新手在整天问工具的使用,学会了工具的使用就大言“我会(精通)性能测试!”。太多的公司叫新手的做性能测试,环境神马的也不提供,你找个工具对软件加压一下吧!哎~!这未免是太贬低“软件性能测试”了。
正在阅读:
软件性能测试的本质05-29
斗轮机电气二次控制回路常见故障及处理方法04-21
2014公安部人事、法制部门负责人解读《公安机关组织管理条例》11-27
原来这么简单作文800字06-24
如何加盟特色餐饮连锁店01-06
高分子物理习题02-27
人教课标版八年级历史(下册)单元知识要点11-24
初中数学题库整式2星题8(含解析)01-29
天燃气制氢操作规程 - 图文05-05
旅游飞地对古村落旅游发展的启发11-14
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 本质
- 性能
- 测试
- 软件
- 最新设计心理学第四章
- 西门子SF6高压断路器(液压机构)培训资料(二次回路)
- 小说网站数据库设计
- 《柳如是别传》和陈寅恪晚年心境
- 汽车销售技巧大全1
- 鱼雷自动控制系统实验指导书
- 南方常见园林植物花卉
- 本人竞聘地市副总经理演讲稿
- 肝硬化失代偿期患者肝性脑病的预见性护理
- 请爱吃榴莲的朋友注意
- 奇门遁甲看经梧太极第一代传人闫芳
- 日常饮食注意事项
- 贵阳学化妆造型新学期变抢眼 让人眼前一亮的六款发型
- 数控机床线性轴定位与重复定位精度的检测
- ES品牌 秋冬产品开发方案
- 糖尿病患者腹部外科手术的围术期护理干预分析
- 中国预算软件行业市场调研与未来趋势研究报告(2014-2019)
- 高考英语作文篇章设计和经典范文
- 高速公路危险源识别和风险评价
- 结肠癌患者血清血管内皮生长因子的表达及其临床意义