半桶水谈性能测试
什么是性能测试?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
负载测试和压力测试都属于性能测试,两者可以结合进行。
通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。
通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。
注意这里提到了三个方面,但平常我们往往注意力集中在服务端的性能而忽略了客户端和网络的性能。
下面是我这个半桶水来谈谈一些体会:
一、目的/需求
为什么需要做性能测试或此次做性能测试的目的是什么?
1、新项目/产品,首次发布,需要做基准测试
2、使用中的产品,重构了某个模块/某个模块使用了新的技术,需要一个评估
3、使用中的产品,用户量爆发了,用户量从百万级增加到千万级
4、增加了一个或多个页面,需要对页面的Latency进行一次测试
在测试开始前,需要有准备工作,对此次性能测试的目的做详细了解,确定需要收集哪些数据,关注哪些性能指标。
二、环境部署
性能测试需要一个干净的环境,这个环境包括硬件、网络、操作系统、被测试的系统,数据库。
那在开始前,需要把这个环境部署准备好,最好是能模拟线上的系统,同时这也是一个排除干扰的过程,画出一张架构图。
1、硬件,使用怎样的服务器,理想情况是和生产环境一样的服务器,需要配置负载均衡么
2、网络, 是否需要模拟各种网络,是否需要双网卡,内部网络是否会影响到其他员工正常使用
3、操作系统,windows/linux,是采用默认设置还是已经有参考的设置,哪些操作系统的服务需要关闭,linux中的ulimit如何设置
4、被测试系统,邀请架构师的参与,系统使用怎么样的架构,是否使用了Web Server——IIS/Apache/Tomat,他们的最优配置是怎么样的
5、数据库,站内搜索数据库是否和订单数据库分开,数据库是否有缓存,数据库是否使用主从式
三、场景和负载模式
此次性能测试需要模拟怎样的场景:
1、购物网站秒杀活动,使用恒负载模式,设定集合点,用户并发
2、系统正常的使用,从每天的监控系统中分析,例如看到购物高峰是中午,使用单步负载模式(Ram-up/down),每间隔时间内用户增加多少,到购物高峰时间是恒负载,过了高峰后用户开始减少
3、系统改版,使用基于目标的负载模式,根据历史数据设定目标,或例如设定CPU/Memory最大到85%
确定好了场景和负载模式,才能正确的生成用例/脚本。
四、性能指标
此次性能测试需要收集哪些性能指标和数据:
1、CPU使用率
2、Memory使用率
3、QPS
4、响应时间
5、网络IO
6、文件IO
7、数据库IO
8、最大支持用户数
以上指标并不是都要收集,要根据具体的场景来决定。
五、性能测试工具
提到性能测试,很多测试人的第一概念就是工具,比如商业流行的Loadrunner,开源流行的Jmeter,但是很少人注重上面提到的四点, 所谓“磨刀不误砍材工”,没有上面的设计分析,仅仅使用工具跑出结果是无法分析出性能的瓶颈,不可靠的数据结果会大大增加排查工作,这些数据往往会受到很 多质疑。
工具的使用:
参数化
Loadrunner选择哪个协议
Loadrunner的关联
Loadrunner的Controller/Agent
Jmeter的Remote testing
工具的使用技能仅仅是性能测试里的一小部分,切不可只关注工具使用。
是否每次的性能测试都需要用上大型的工具呢,某个页面的响应时间是否可以使用其他轻量的工具,例如一些浏览器插件Httpwatch,Yahoo YSlow,Google speed tracer;
是否可以自己写些有针对性的小工具,根据实际情况定义出真实的Page load time,而不仅仅是服务器的响应时间。
六、数据收集与分析
性能测试的最终目的是通过数据收集分析出系统是否存在瓶颈,所以数据收集和分析是一个很重要的过程。
分析的过程需要团队成员的参与,例如架构师、DBA、开发人员,是一个长期的过程,通过调整测试脚本,生成不同的数据对比。
七、我所发现的2次问题
1、双网卡问题,一个新改版的项目,上线后在峰值的时候总有机器崩溃或性能大幅下降,最后发现是服务器只使用了单网卡,这个明显就是上面提到的排除干扰没做好(配置没有检查),这次性能测试是失败的。
2、子进程崩溃,64位系统基准测试,通过与团队成员的不断沟通,排除各种设置干扰、确定硬件和软件配置、加入profile工具,与32位系统的对比。
八、后续优化
性能测试仅仅是个开始,性能测试最终目的是发现和解决系统的瓶颈,这就涉及到优化,而优化的过程往往在系统设计阶段就需要考虑。
1、异步获取数据
2、建立缓存
3、分布式
4、文件分解
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云欧洲数据中心运营 中国云计算进军欧洲
摘要:11月25日, 阿里云在德国宣布正式登陆欧洲市场,其位于欧洲的数据中心正式开放运营,同时与沃达丰达成战略合作,携手为欧洲提供云计算服务,并为中国企业进入欧洲市场提供互联网基础设施便利。 “阿里云建立全球化的云计算基础设施覆盖,希望能为中国企业发展海外市场提供便利。”阿里云总裁胡晓明在德国法兰克福举行的剪彩仪式上表示,阿里云在两年前开始国际化脚步,中国企业也伴随阿里云一起走向世界,“出海企业可以节省海外部署成本,加快脚步拓展国际市场。” 在本月21日,阿里云在迪拜举行发布,宣布其中东数据中心开服。相隔5日,阿里云在国际版图再次扩张至欧洲。月内,阿里云位于日本和澳大利亚的数据中心也将启动运营。 此前,阿里云已经在美国西部、美国东部、新加坡和香港设立有数据中心,并在新加坡设立海外业务总部。 对于欧洲区域,阿里云在德国法兰克福建立了数据中心,该数据中心达到T3+等级。产品方面,阿里云的计算、存储、安全、中间件等产品将陆续登陆其欧洲节点。 权威研究机构Gartner数据显示,预计到2017年全球IT支出将达到3.5万亿美元。分析师提及,可以看到欧洲区域内,德国、法国、荷兰、卢森堡等国家正在...
- 下一篇
测试驱动开发的感悟
1、微软的自动化测试是否适合于淘宝?微软的自动化测试有三种形式。 1)根据设计文档,进行代码级别的测试。开发人员根据测试脚本进行开发。 现状,很难进行这种测试。 2)针对于界面的自动化测试。 淘宝属于web服务提供商,而且界面变更频繁,且缺乏这方面的专业人才。 3)测试主要业务逻辑。 目前我们的自动化测试,主要集中于业务逻辑方面。业务逻辑的正确性对于淘宝来说是必须保证的。 它是保证系统稳定的基础。淘宝的接口有很多,如果逐个进行自动化回归,以现在的人力是几乎不可能完成的。 若只是大体上进行测试而没有达到一定的测试粒度,那么意义并不大。所以我们做自动化测试的基础就是做好业务逻辑的测试,做细做强。 2、淘宝的自动化测试要细化到何种程度,细化过程中容易遇到的问题?陆老师在课堂上举过一个例子。一个方法,其返回值长达两屏。老师问:测么? 有人说测,有人说不测。 而最终的答案是:全要测,交给自动化测试。 而我们的测试怎样能细化到这种程度呢? 首先,测试所有的返回值。 其次,测试执行方法后所有数据库表中的相关数据。 但是,实现这两点有可能会遇到很多问题。 其一,在编码结束前,没有一个确定的文档明确的准...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程