拿到一个项目后,如何开展性能测试工作?

本文主要介绍何时进行性能测试,如何进行性能测试,性能测试需要做哪些准备。

一、性能测试三问

1、性能测试什么时候进行?

性能测试是基于系统的功能已经完成或者趋于完成的事实,如果功能不够完整就没有多大意义。因为后期的功能改进会影响系统的性能,过早进入性能测试会导致测试结果不准确,浪费测试资源。因此,性能测试首先是基于功能测试的,性能测试只有在知道其功能需求后才能进行。

2、如何进行性能测试?

一个正在测试的系统,我们需要分三个部分进行分析:

入口:如何发送请求,施压方应该施加多大压力,如何施加压力;

被测系统:系统如何响应单个请求,系统业务流程如何,系统网元节点,数据流等。,整体绩效要求是否存在,哪些指标需要检查,如何监控;

导出:接收到什么数据,如何获取和比较;

感觉和功能测试没太大区别吗?是的,就是分析单个用户的功能流程和系统的数据流结构图(包括后台的数据流),然后考虑大量的用户操作。

3、性能测试的步骤?

系统的一般性能测试步骤如下:

1.确认测试目标;

2.分析测试系统的业务需求;

3.分析被测系统的系统结构;

4.分析被测系统的性能测试点;

5.设计测试方案、测试方案和测试用例;

6.选择测试工具;

7.测试和开发;

8.测试执行;

9.测试结果分析;

10.测试调优、测试验证和测试分析;

11.输出测试报告;

二、性能测试前的准备

测试准备越充分,后期测试执行越顺利。一般测试准备如下:

1.确认测试目标;

2.分析被测系统的业务;

3.分析被测系统的结构;

4.分析可能导致被测系统性能瓶颈的节点;

5.设计测试方案、检测方案和测试方案;

 

下面具体分析以上五个步骤:

1、确认测试目标

任何任务都要先确认任务的目标是什么。如果你不知道目标,任何努力的结果都可能不是最终想要的结果。性能测试也是如此。首先,需要确立明确的目标。无论是随机测试系统当前的性能,还是对系统进行优化,还是检查系统的性能是否满足需求等。,这些都是性能测试前的目标。之后,对方案和用例设计的分析,对测试执行的监控,再到最终的测试分析和报告,都要围绕这个目标展开。因此,首要任务是确认测试目标和要求,以及需要达到什么样的测试目标和目的。

有些测试任务没有明确的目标或要求,不代表没有目标和目的,需要我们去沟通和分析。及时与项目组就目的需求达成一致,分析需求和系统,最终明确项目或系统测试任务的目的需求。

2、分析测试系统的业务

有个朋友曾经有一次面试,一个面试官给了他这样一个问题:“有一个网站,只知道它每天的总访问量是300万。如何测试它的性能?”

想想你想如何设计这个方案。

猜测面试官想让面试官回答,正态分布,28原则等基本测试原则。当时,我的朋友没有回答任何与正态分布和第28原则有关的问题。当时,面试官对他的回答轻蔑地一笑。可能他觉得连基本的正态分布和28原理都不知道,还能搞得了性能测试?。其实性能测试并没有想象的那么简单,也不是简单的原理应用。如果这么容易,那么每个人都可以做到。

性能测试的基础是系统的业务功能趋于基本稳定,首要任务是系统的性能能够满足业务功能的需求,因此必须对系统的业务进行分析。无论是普通网站还是专业系统,都有业务功能需求。所有性能测试都应该基于这些功能。没有业务功能的性能测试是没有意义的。性能测试的首要任务是分析系统的业务功能和系统业务的性能限制,即业务需求。

那么,如何分析系统的业务需求呢?

如果有用户需求的规范,首要任务是阅读理解和分析用户需求的规范;

如果没有用户需求的规范,那么就需要对系统功能进行分析,提取系统的业务需求。如果可能的话,最好让熟悉项目组的人再讲一遍。

无论哪种方式,最好的方式都是根据自己的理解画出系统的业务流程或者功能结构图,拿到项目组确认。务必与整个项目团队确认并达成共识。

有些人可能会问,当我们的项目团队没有可识别的业务需求时,我们该怎么办?

首先,我们仍然需要从分析开始。不分析,就不知道系统的功能数据流,不知道请求数据的构成,不知道系统的网元结构,不知道系统可能出现瓶颈的节点。怎么能优化呢?

当然,面对一个全新的知识领域,我们可能需要积累更多的经验,分析更多;我们可能需要结合实践,实际运行系统或者多次执行测试,不断优化和改进我们的分析过程、分析结果、测试方案、测试开发甚至测试执行等。

分析被测系统的业务有时不是一蹴而就的。我们需要反复分析、确认、再分析、再确认系统,直到理解为止。甚至有可能您需要在测试执行的最后阶段再次进行分析和确认,然后重新规划测试。

3、分析测试系统的结构

系统的结构和系统的业务一样重要。如果不知道系统的网元结构,可能就没有办法监控,如果不知道哪个节点是瓶颈,就无法优化。

分析系统结构的最好方法是项目组提供系统的部署和组成图。如果项目团队无法提供或者没有项目团队,就需要使用TCPDUMP等包抓取工具对数据流进行分析。

TCPDUMP的使用:

 

从第一节点分析流向,确定第二层的节点;然后,从第二层的每个节点分析第三层的节点,并逐层分析,以改进系统数据流方向的所有结构层次和节点;然后算出每个节点部署的应用程序或进程队列;测试和监控每个节点的应用程序或进程队列;最后,我们可以找出哪些应用程序或进程队列需要优化。

除了了解系统的节点结构,还需要了解各个节点之间的通信协议和数据格式,然后测试工具的选择、测试数据的准备和测试脚本的开发都需要以此为基础。这一切的基础是分析和理解系统的所有节点,也就是分析清楚系统的结构。

4、分析系统可能存在的性能瓶颈

分析系统的业务需求和结构,预测系统可能出现的性能瓶颈,这是分析中的一个目标。在得到预测的性能瓶颈后,我们需要在以后的监控中更加关注这些节点。

当然,有一些常见的节点可能是系统的瓶颈,我们需要注意:

1.登录:系统登录一般需要进行多种验证,可能导致数据交互频繁;

2.下单、抢单、抢红包时会有一定量的并发需求;

3.大数据的查询、统计、报表分析会给系统带来压力;

4.视频、动画等。会对网络施加压力;

5.消息集中的系统功能节点会对系统施加压力;

6.一些特殊的业务需求会给系统带来压力;

常见瓶颈:

1.数据库的瓶颈通常是磁盘IOPS过高,造成进程阻塞;

2.过多的系统进程一般会消耗系统的内存空间;

3.消息队列和缓存服务,打开持久性后,需要调查磁盘IOPS,而如果没有打开持久性,则需要调查内存使用情况;

4.频繁的管道打开和破坏,会导致CPU占用率高;

5.有些程序在结构上不能使用多个CPU;

在分析业务和系统结构的过程中,我们需要考虑在我们的设计中是否会有大量的数据访问、压力和性能瓶颈。

5、测试计划和测试用例设计

测试计划的设计和最终测试总结文件的形成,实际上是所有分析工作的总结。

编写测试计划的过程是定义测试目的、分析业务需求、系统结构以及评估测试方法、测试安排、测试风险等过程的总结。所有这些都来自于测试执行前的分析,有时您可能需要在测试期间进行一些分析和调整。

测试计划包括分析和整理的所有方面。一个好的测试计划包括:测试目的、测试目标、测试内容(可能包括业务性能、可靠性、稳定性等。),业务需求目标,系统业务构成,系统节点构成,测试方法流程,指标要求,需要监控的节点等。

测试用例通常包含在测试计划中。测试用例实际上是普通的业务操作流程。使用测试工具或其他测试手段,用大量数据模拟业务操作,对系统的各个节点进行监控,获取监控数据。预期监测数据与实际监测数据对比,满足要求即为预期要求,实际对比结果即为测试结果。

6、测试前的准备

设置环境:设置测试环境的工作量不大。如有必要,您可以要求开发人员协助配置。

场景建模:考虑哪些场景可能存在性能瓶颈,设置相应的测试脚本和测试逻辑,尽可能模拟生产环境(一定要熟悉系统业务,因为需求是用户+场景产生的)。

测试数据准备:准备测试数据常见的方法有两种:复制生产数据和将数据嵌入开发脚本(但无论哪种情况,都必须注意数据隔离,防止数据污染)。

测试脚本开发:首先,我们需要从开发人员那里获取开发接口文档和数据库表设计文档。然后,通过工具或编写测试脚本来调试接口,以确保接口能够被成功调用。

三、正式启动性能测试

1、执行测试脚本

在确保接口能够被成功调用后,首先进行单一接口基准测试,即对一个接口进行压力测试,持续加压直至响应时间达到或超过目标,观察其当前并发量和TPS。相同数量的并发执行多次,以获得平均值或稳定值(即TPS和TRT曲线的相对稳定值)并记录下来。

 

 

记录的目的是通过直观的数据变化,得到单个接口的最大TPS和不同并发条件下响应时间的变化。

通过分析TPS和TRT的数值变化,可以得到80%的性能瓶颈。虽然有点片面,但还是一种方法。比如从上图记录的数值变化来看,很明显凭证界面的表现极差。这时我们可以通过检查日志、检查代码、SQL语句等方法通知开发并查询原因。当然,如果你有足够的个人能力,你可以自己做。

2、监控和调试

所谓的监控调试是一个不断调整和重复的过程,需要根据性能测试的目的来判断。

Jmeter本身用monitor的组件提供了一定的监控数值报表组件,但毕竟是开源工具,其组件功能不够强大,可以通过下载支持jmeter的增强插件进行监控。

下载后可以解压缩,将plugins-manager.jar放入jmeter安装目录lib/ext,然后重启Jmeter即可,可以通过点击下图圈出来的按钮检验是否成功安装:

 

该插件为服务器资源利用、测试数据报告生成,甚至TPS和TRT的监控提供组件支持,具体使用方法由我们自己探索。

3、分析和调整

除了获得性能指标,性能测试更多的是发现性能瓶颈和性能问题,然后分析和调优性能问题和瓶颈。在当今互联网高速发展的时代,性能调优模型可以总结如下图所示。

 

性能调优是持续收集系统中的性能指标和系统模型中各层的资源消耗,找出性能瓶颈和性能问题,然后对瓶颈和问题进行分析诊断,确定性能调优方案,最后通过性能压力测试验证调优方案是否有效。如果不是,继续重复这个过程进行性能分析,直到调优方案有效,瓶颈和问题得到解决。这个过程通常很长,因为在很多情况下,性能调优方案往往并不有效,或者不能一次解决所有的瓶颈和问题,或者解决当前的瓶颈和问题,但是如果继续进行性能压力测试,可能会出现新的瓶颈和问题。

4、输出测试报告

按照上述步骤,我们得到测试结果,分析系统的瓶颈,然后通过各种方法提出解决方案或优化建议,最后对这次性能测试做一个完整的总结,从而完成一次性能测试。在整个过程中,需要很长的时间,通常在测试数据准备、测试执行以及监控和调优阶段。

性能测试还有很长的路要走,要想做好性能测试,还是要仔细摸索。

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

 全套资料获取方式:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
拿到一个Spring Boot项目后,我们需要先了解这个项目的整体结构和基本功能,然后再对各个模块逐一进行深入研究和分析。下面,我将就具体步骤进行阐述。 1. 熟悉项目结构和运行方式 我们首先需要查看并熟悉整个项目的文件结构,了解主要的配置文件和代码结构。此外,我们也需要了解项目的运行方式,如何启动项目,如何调试,如何部署等等。 2. 理解项目所用的技术框架 在熟悉项目结构和运行方式后,我们需要了解项目所使用的技术框架及其相关知识。比如,Spring Boot、Spring MVC、MyBatis、Hibernate、Thymeleaf、Redis、Dubbo等。对于每个技术框架,我们需要掌握其基本概念、配置方式以及使用方法等。 3. 学习业务模块 在了解项目的基本框架和技术后,我们需要进一步了解项目的业务模块。业务模块是整个项目的核心,也是我们进行深入研究的重点。我们需要了解业务需求、数据流程、业务流程、各类功能点等,并根据需求进行相关的业务逻辑设计和开发。 4. 细节分析和提升 在对业务模块进行深入学习后,我们需要进一步分析项目的一些细节问题,并提出相应的解决方案。比如,项目的性能问题、安全问题、异常处理问题等等。我们需要从多个角度出发,对项目进行思考和调试,逐步优化和提升其效率和稳定性。 总的来说,拿到一个Spring Boot项目需要我们综合考虑各方面因素,并按照一定的规律去逐步分析和优化该项目。只有通过不断学习和实践,我们才能真正掌握Spring Boot框架,提高自身开发能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值