近20年来,互联网及相关技术和各种基于互联网的系统逐步成为社会生活各个方面所不可或缺、不能替代的重要组成部分,而这些系统好不好用,是不断的画圈圈、还是秒处理,成为大家评判的重要依据,这就是性能。
社会的工作生活节奏越来越快,人们要求各种系统的响应速度越来越快,这已成为互联网应用的红线,满足不了大家的性能要求即淘汰!
同类应用越来越卷,性能测试越来越重要,而优秀的性能测试工程师已成为IT企业的骨干,且收入不菲!
下面上干货,不去累述基本的工作流程,重点突出性能测试工作中的难点和要点,希望能帮助各位更上层楼!
本篇文章将由以下3个部分来展开:
做好性能测试的需求分析
做好性能测试的数据准备
做好性能调优(文末免费分享性能测试资源)
做好性能测试的需求分析
1.1 需求调研
工作的重点是获取系统生产环境的性能需求,及相关的其它信息,包括业务信息、系统信息、文档资料等,并进行汇总整理,实现对系统的整体了解。
测试任务提出方应明确各项性能需求指标。
1.2 需求分析
性能测试工程师根据需求调研获取的信息进行分析,根据测试环境与生产环境的差异,将性能需求指标值转换为本次测试环境条件下的性能需求指标。
参考样表:
1.3 构建业务模型
性能测试工程师根据业务需求及实际的业务数据,构建业务模型,此模型将作为综合负载测试的任务分配依据。
参考样表:
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受,可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛,分享他们的经验,还会分享很多直播讲座和技术沙龙,可以免费学习!划重点!开源的!!!群号:110685036
做好性能测试的数据准备
2.1 数据准备
测试数据对数据量和业务逻辑关系要求非常高,做性能测试时用不到各种非法数据,即便是合法数据也要求是能够跑完全部业务的全套数据,这些数据可自己设计,也可使用用户方提供的业务数据(脱敏后的数据)。
可参考前面的业务模型,将每一个子需求进行细化,这样对测试数据的准备有指导性。
2.2 测试脚本开发
测试脚本是业务操作的具象化体现,每一个子业务录制一个脚本。所有的子业务根据业务逻辑构成完整的业务脚本。脚本间存在调用关系。
可根据以下场景录制脚本并准备测试数据:单业务,混合业务,可靠性、稳定性。
期间包含大量的录制、修改和调试工作,使用的性能测试工具不同则脚本的处理过程也有所差异,在此不再累述,大家可自行查找相关信息。
做好性能调优
当前各个性能测试工具的结果分析资料太多了,笔者在这里就不再水字数了。
性能测试的结果是找到性能瓶颈点,通过技术手段提高局部性能,消灭瓶颈点。所以,高水平的性能测试工程师需要能够进行一项非常重要的工作---性能调优!
下面来和大家谈一谈调优的思路:
3.1 代码和算法优化
系统中大多数性能问题都是代码的问题(包含具体的实现算法,算法间的效率差异很大),如果能准确定位代码问题,可以考虑优化代码(尤其是算法)。
-
系统框架优化,选择高性能的框架,如SSH
-
局部刷新,减少请求次数
-
只向服务器请求必要内容
-
优化算法,提高查询效率
-
对于大数据的显示采用延迟加载方式,比如分页
-
减少大对象的使用
-
使用多进程来处理任务
-
使用服务器与客户端之间采用json技术传输数据
3.2 数据库优化
关系型数据库建议使用Oracle,非关系型数据则使用redis数据库来处理。
数据库的访问需要进行I/O处理,所以提高I/O性能,可提高数据库性能。建议使用固态硬盘或磁盘阵列来解决。
每个数据库都有自己的存储结构,优化存储和查询的相关算法,可提高数据库性能,包括:
-
索引优化
-
缓存优化
-
数据库连接优化
-
数据库查询语句优化
-
连接池优化
3.3 操作系统优化
在Windows或Linux操作系统,卸载或关闭不需要的服务或组件,调整线程、虚拟内存及缓存的相关配置,提高系统的性能。
3.4 中间件优化
当前的行业中有很多的中间件,如apache、tomcat、nginx、jboss、weblogic等,每一个中间件都有它的特长和环境要求,我们需要根据不同的业务场景,选择最佳的中间件,通过调整配置来达到最佳性能。
3.5 网络优化
采用光纤连接,配置静态路由表,缩短路由器跃点数量。
对于实时服务,需要配置缓存服务器。
将服务器存放在运营商的主机房,这样可使用主干网带宽。
使用商业化云平台部署服务。
3.6 硬件优化
高运算型系统,可通过提高CPU利用率,采用多线程的方式运行来提升性能。但是线程数量不能超过CPU核心数。
大访问量型系统,可提高存储的效率来提升性能,如使用固态硬盘,磁盘阵列等。
最后,在具体的工作中,我们还需要不断总结和积累各个环节的优化方法,将之形成文字固化下来,逐渐就形成了自己的知识和技术储备,个人能力不断提升。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
可以在下方我的公众号免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。