前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高级性能测试系列《4.性能测试的前提、性能测试工具、性能测试流程》

高级性能测试系列《4.性能测试的前提、性能测试工具、性能测试流程》

作者头像
清菡
发布2022-06-21 15:31:37
5.2K0
发布2022-06-21 15:31:37
举报
文章被收录于专栏:清菡软件测试清菡软件测试

目录

  • 一、性能测试的前提
    • 1、性能测试的必要性研究---关键项评估
    • 2、可测性---可量化为性能指标值
    • 3、公司服务器不足,在项目还没有上线之前,可以用生产环境先做性能测试吗?
    • 4、公司有的项目上线了但是没有用户使用,比如3月项目完成了,4月才提供给用户使用。这样的情况下,能用生产环境做性能测试吗?
  • 二、性能测试工具
  • 三、性能测试流程

一、性能测试的前提

1、性能测试的必要性研究---关键项评估

做性能测试,首先要进行关键项的评估。

公司的这个产品需要做性能测试。得知道哪些功能需要先做性能测试,哪些功能后做性能测试。

假如产品有100个功能,连个优先级都没有排,我就拿100个功能一起来做性能测试,这样丢了西瓜捡了芝麻,啥也没做成。

1)主管部门、监管部门审查;

2)涉及生命财产安全;

比如银行系统,最近改版了,新版本替换掉老版本,如果没做性能测试,万一在高并发的时候,数据(钱)有问题,就会很麻烦。

3)大型新系统;

新版本替换掉旧版本的时候,肯定是要做新版本的性能测试的,不然响应时间更长,性能更差,用户体验感就越差。

4)核心系统;

例如有100个业务,肯定是做核心的业务,或者是用户使用量最大的优先。

业务的优先级和重要性需要评估,没有那么多时间什么业务都做性能测试。

5)架构调整;

如果公司开发的项目都是用1.8的jdk,现在出现了jdk1.11,发现jdk1.11有很多新的功能。

我就把jdk升级到了1.11版本。升级完毕后,功能测试没有问题,但是性能可能会有问题。

jdk这个东西是最底层的东西,要运行java代码必须要有jre的运行环境,运行环境里就安装了jdk、jre。

这个是底层的依赖,如果这个底层的依赖的性能不能满足要求。那产品上线后,功能没问题,但是用户一旦上来了就出现性能问题了。

所以这种底层的调整,也是需要全面得做性能测试的。

6)业务剧增;

这种促销活动,在上线之前肯定要做性能测试的。

虽然这不是核心业务,这种促销活动做完了,下次可能不会再用这个页面了,但是因为它的特殊性,也得做性能测试。

7)重大缺陷修复。

有的公司的项目里有些陈年老坑,终于花了时间成本的投入,改了很多东西,某一天他把这个坑修复了。

这个坑被修复后,影响范围很大,功能测试人员要加班测试,性能测试人员也得加班测试性能。

因为老坑被修复的时候,改了底层的东西,底层的东西的性能没有跟上,功能是没问题,但是可能还有一大段的代码需要调整。

重大缺陷的修复,一般会改底层改得很广,修复后就需要做性能测试。

2、可测性---可量化为性能指标值

如果你们公司的项目是产品主导型,产品人员提出这个性能的需求,他不懂得性能测试。

如果你们公司是这种项目主导型,项目经理不懂性能测试。

那么他们提出的需求,做性能测试就很难。但是也得去做性能测试,那么就需要你掌握性能测试的知识和技能,来和你们的负责人反复得沟通确定性能指标

3、公司服务器不足,在项目还没有上线之前,可以用生产环境先做性能测试吗?

项目还没有上线,代码都没有上到生产环境中去,是无法做性能测试的。

虽然有些企业把生产环境切换到测试环境里来用,关键是代码都没有上到生产环境中去,既然代码都没有更新过去,也就做不了性能测试。

如果没测试完就把代码上到生产环境中去,让你做性能测试,这就相当于已经上线了啊。

如果你们公司有灰度发布的环境,这个是可以的。

如果生产环境中有30台机器,可以从里面剥离几台机器先更新代码上去,用一部分的真实用户来体验这个新功能。

看下新功能满足不满足他们的要求。如果满足,再把剩余的机器也更新新的代码。

这个其实把生产环境分为2个环境,一个是老的代码,一个是新的代码。

这个倒是可以把这个环境拿过来用,但是要注意数据库的问题。生产环境做灰度发布环境的时候,一般也会把数据库做2个。

特别是数据库如果有表结构的变更,你没有做两个数据库的话,灰度发布环境是发不了的。

但是也得把灰度发布环境的数据库切换掉,不能用灰度发布环境的数据库,因为用了以后也会有脏数据到灰度发布的环境里面去。

因为灰度发布环境,有一天是会转换成正式环境的。

脏数据到灰度发布环境的数据库里去了,有一天也会成为生产环境的脏数据的。

4、公司有的项目上线了但是没有用户使用,比如3月项目完成了,4月才提供给用户使用。这样的情况下,能用生产环境做性能测试吗?

产品已经发布上线,但是没有什么用户量。或者是会迭代一直发布新的功能到生产环境里去,让潜在客户先来体验,体验了之后,满足了客户的要求,才会有真正的付费用户来使用。

这种情况,如果做性能测试也会存在脏数据的情况。清理生产环境的脏数据是清理不干净的。

先备份,然后去做性能测试,做完了之后再用备份来还原,这种方式清理掉脏数据的成功率不高。

而且有成本和操作上的风险,一般情况下公司不会让你去这样干。

二、性能测试工具

开源:jmeter

java开发、跨平台、版本更新快(建议v5.1.1以后+jdk1.8)。

商业:loadrunner

性能测试标杆软件、c语言、国内破解(< lr11)lr12免费试用50限制用户数、更新慢。

自研:python+locust

python语言自行开发。

三、性能测试流程

1.性能测试准备

  • 1)需求分析-----熟悉业务。
  • 2)明确性能测试目标(指标值)。
  • 3)了解软件功能、架构。
  • 4)指定测试计划,做好工作量评估。
  • 5)制定测试模型(编辑测试用例)。

和功能测试有区别,相同的是都要进行需求分析。

功能测试关注的是单个人发起请求,目的是找bug。但是专业的性能测试人员关注的是多个人发起请求,这个时候出现了功能bug,我也不管。

并不去直接了解业务,但是要了解整体的数据流、整体的架构、整体的功能。

具体接口的功能逻辑的实现,不清楚也没关系。但是要整体了解功能间如何交互数据的,哪个功能需要依附什么数据。

服务器架构,服务间如何进行数据交流的,是什么样的配置,这个得清楚。因为接下来搭建环境需要清楚这些。

工作量的评估:会比功能测试、自动化测试的时间都要长。同等的工作,消耗的时间大概是他们的2-3倍的时间。

并不是所有的功能都需要做性能测试,只是部分功能做性能测试。

测试用例转换下来就是性能测试场景、负载测试场景等。

2.搭建性能测试环境

  • 1)工具选型与准备。

不同的协议,会采用不同的工具。

  • 2)被测系统环境搭建(服务器、服务版本更新、数据库数据准备、监控环境)。

测试前,数据库的数据量级要准备好。

  • 3)网络配置。

3.性能测试脚本开发

  • 选取协议。
  • 制作脚本。
  • 调试脚本。
  • 验证脚本。

可以在测试环境制作脚本,调试脚本。

在开发的时候,功能测试人员也在测试,性能测试人员写的脚本可以直接对接测试环境。

将来只要把环境的ip对接到性能测试环境中去,就可以在性能测试环境中做性能测试了。

脚本的开发也不受影响,因为功能测试环境的代码比性能测试环境的代码先更新的。

调试脚本和验证脚本,会逐步转移到性能环境里面来。

4.性能测试脚本执行

  • 试运行。
  • 场景执行。

要把测试用例使用到脚本里面,进行场景的转换,执行场景。

要搭建一个监控环境,收集测试结果的性能数据。用于后面的性能测试结果的分析与调优。

5.结果分析与调优

  • 1)分析依据:结果图表。
  • 2)分析思路:服务器硬件瓶颈>网络瓶颈>服务器os瓶颈(参数配置、数据库、web服务器)>应用瓶颈(sql语句、数据库设计、业务逻辑、算法)
  • 3)调优。
  • 4)修改脚本或场景。

6.测试报告与结果跟踪

  • 性能测试报告。
  • 性能测试问题跟踪。

发现的性能问题并不能这次就能解决。比如发现个内存问题,有可能是代码的结构性的调整来解决这个问题。

那就当期解决不了了。

那就等后期解决了,再反复的验证与调试,看这个问题有没有被真正解决。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
    • 一、性能测试的前提
      • 1、性能测试的必要性研究---关键项评估
      • 2、可测性---可量化为性能指标值
      • 3、公司服务器不足,在项目还没有上线之前,可以用生产环境先做性能测试吗?
      • 4、公司有的项目上线了但是没有用户使用,比如3月项目完成了,4月才提供给用户使用。这样的情况下,能用生产环境做性能测试吗?
    • 二、性能测试工具
      • 三、性能测试流程
        • 1.性能测试准备
        • 2.搭建性能测试环境
        • 3.性能测试脚本开发
        • 4.性能测试脚本执行
        • 5.结果分析与调优
        • 6.测试报告与结果跟踪
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档