• 0
  • 0
分享

性能测试的目的不仅是为了评估系统当前的性能状况,同时还希望通过故障定位找到系统存在的性能瓶颈,从而进一步优化性能,直接提升系统的处理能力,或者对系统的扩展能力提供优化策略。性能测试工程师的能力可分为三个层次,从初级的性能检测,到中级的故障定位,再到高级的性能调优,是一个循序渐进,逐步提高的过程,下面就这三个层次的能力进行简述。能力层次如下图:

1.png

(一)初级——性能检测能力

初级性能测试工程师需要掌握性能的基础理论,能够编制测试方案,使用自动化测试工具,进行初步的数据结果分析。

在性能基础理论方面,需要知道并发用户数、响应时间、吞吐量等常用的性能测试指标,知道负载测试、压力测试、疲劳强度测试、基准测试等主要的性能测试类型,知道测试流程的几个重要节点,如测试需求分析、测试方案制定、测试环境配置、测试数据准备、测试执行及测试结果分析。测试流程如下图:

2.png

在性能测试方案方面,根据性能测试需求,编制性能测试方案,方案中应包括测试目的、测试依据、测试计划、测试内容、测试方法、测试环境要求等。其中关键的是测试用例及测试数据的准备,测试数据包括铺底数据、参数化数据及测试数据,数据量的多少及合理性会影响到测试结果的真实性。

在测试工具使用方面,至少会使用一到两种自动化的性能测试工具,如主流的商业化测试工具LoadRunner、开源的测试工具JMeter等。能够识别应用协议录制脚本、简单调试脚本、配置测试策略、装载测试数据、收集测试数据。

在测试结果分析方面,重点关心时间特性、资源利用率及容量,包括交易的响应时间、支持的并发用户数、交易的吞吐量、网络的吞吐量、CPU的使用情况、磁盘读写情况等常用指标,通过数据分析可以反映系统当前的性能状况。

(二)中级——故障定位能力

中级性能测试工程师需要通过透视性能脚本执行过程来找到影响系统性能提升的故障点,为后续的性能调优提供数据支持。所以需要具备故障诊断分析能力,熟练使用各类的故障分析工具等。

在故障诊断分析方面,当在做性能测试的时候发现系统响应时间过长,没有达到预期的目标,那么就需要分析是什么因素导致了响应慢,是数据库服务器响应慢,还是应用服务器响应慢,如果是数据库服务器响应慢,是因为SQL语句执行时间长引起,还是数据库参数配置不当造成的,这些都是要找出的故障点。故障诊断可以从技术架构、硬件、网络、软件、应用、安全这几个方面展开,如下图:

3.png

在故障分析工具方面,掌握一些专有的故障分析工具可以提高故障定位效率,可以通过性能监控工具、日志分析工具、抓包工具、安全监控软件等来辅助定位故障,为接下来的系统调优做准备。如Youkit是一款专业的java性能分析工具,可以提供强有力的数据分析功能。Fiddler是一个抓包工具,可对数据包进行截获、重发、编辑、转存等操作,也可以用来检测网络情况。日志分析工具可以监控服务器、数据库、中间件等系统日志,发现问题及时定位,如Facebook日志系统Scribe、Apache日志系统Chukwa日志系统等。

(三)高级——性能调优能力

高级性能测试工程师因需要参与解决性能问题,对测试工程师的要求非常高,需要有比较全面强大的技术基础及实践经验,要熟悉系统架构,熟悉基础支撑软件等,还要具备性能优化分析能力,通常性能问题的修复成本相对较高,如何使用最低的成本换取最高的性能,是性能调优的重点。

在性能调优知识面,要实现性能调优,需要掌握系统架构、中间件、数据库、操作系统、网络协议等综合知识,如下图:

4.png

在性能优化分析方面,在进行性能测试的时候,通过过程数据分析,可在这几个方面入手性能调优。应用服务器调优包括JVM调优、Server调优、JDBC调优、WEB、JMS、EJB调优;数据库调优包括核心参数调优、数据库连接池调优、SQL与索引调优、表及视图的调优;应用程序调优包括通用代码调优、JDBC代码调优、WEB代码调优、JMS代码调优、EJB代码调优;操作系统调优包括硬件的配置(CPU、内存、硬盘等)、核心参数、TCP/IP参数、补丁等。系统架构调优是系统层次上的优化,如采用Redis设置系统缓存数据库机制,减少数据库的访问代价。

也可考虑系统部署方式、网络和硬件层面的调优,包括对系统部署负载均衡策略、网络带宽/流量、安全访问控制策略等情况优化系统。根据实际性能结果计算资源瓶颈,对系统硬件资源(内存、存储资源等)进行扩容处理优化。通常建议性能优化可从程序优化、业务处理方式优化、系统层次优化、系统架构优化、网络架构优化、硬件优化这个顺序展开。

       

版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 数据库中的delete 与drop的区别, 从下面的例子开始: delete :  delete from 表名  where 条件 drop  :  alter table  表名  drop 字段               drop table  表有的同学从从上面的例子,可以看出来,  delete  删除的是 数据,drop删除的是  表;这个没错,  但是, delete&n...
            1 0 10833
            分享
          • UUID(Universally Unique Identifier,通用唯一标识符)是一种用于标识信息的128位标识符。Java开发人员倾向于使用 java.util.UUID#randomUUID API来生成UUID编号(类似4c88314f-14ca-4652-8567-4471a0ef917c)。UUID通常用于标识数据记录、会话、文件、对象等,以确保它们在不同上下文中的唯一性。注意,UUID是一种全局唯一性标识符,不保证在不同时间生成的UUID之间是有序的或可比较的,因此不应该依赖于UUID的大小或顺序。在某些情况下,使用这个API可能对应用程序的可用性产生负面影响。下面,我们将通...
            0 0 951
            分享
          •   《华尔街日报》1月10日消息,MetaPlatforms将不再让广告客户根据性别在Facebook和Instagram上针对青少年投放定向广告,这是旨在收紧该公司针对年轻用户广告政策的更广泛改革的一部分。  该公司在周二的一篇博文中说,Facebook和Instagram上的用户活动也将不再被用来针对青少年投放定向广告。该社交媒体公司表示,例如,对某些Instagram帖子或Facebook页面的参与度将不再决定青少年将看到的广告类型。  Meta表示,年龄和位置将是Facebook或Instagram向年轻人展示广告时使用的唯二信息。作者:佚名原文链接:新浪科技_新浪网(sina.com...
            0 0 704
            分享
          • 声明:本文内容不涉及任何 Apifox 的功能介绍,一来网上这方面的文章已经汗牛充栋,二来 Apifox 本身的用户体验做的非常好,对于开发者而言学习成本基本为零。阮一峰:不管你是前端开发还是后端开发,只要项目是服务架构,它可能会大大提升你的开发效率。虫师:我们很难把它描述为一款接口管理工具或接口自动化测试工具,它增强了团队协作能力,这对一个研发团队而言很重要。池建强:Apifox,这是一代更比一代强。什么是Apifox?看了一众大咖们对 Apifox 赞不绝口,你可能会好奇 Apifox 究竟是何方神圣?根据官方定义,Apifox 是 API 文档、API 调试、API ...
            1 0 1022
            分享
          •   对每个职场人士来说,当工作步入正轨,开始稳定下来,那么关于未来的职业发展就是首要考虑的问题。测试人员也不例外,每天忙于业务测试,接触到的核心技术会比较少,如果不能提升自己的职业技能,拥有自己的核心竞争力,那么对于未来的发展会有很大的限制。  说的稍微严重一点,如果觉得测试只是枯燥的“用鼠标点点点”的工作,那么职业发展可能很快就会遇到瓶颈,甚至还有被行业淘汰的可能!  每个行业,每个岗位,都有自己的发展方向,测试工程师必有他的价值。有时候觉得看不到未来,也可能只是是自己站的不够高。想要未来大有可为,就需要不断的学习,提升自己的专业技能,让自己达到一定高度,毕竟站的更高,才能看的更远。对此,小...
            0 0 585
            分享
      • 51testing软件测试圈微信