• 性能测试流程


    (1)问清性能测试需求

    首先,要问本次性能测试的需求是什么,或者性能测试的目的是什么? 我把性能测试按目的分以下几种。

    1)新系统能力验证

    比如,你们刚好开发了一个新系统,在上线前需要验证系统性能。这种情况比较简单;你可以有更多的自由选择测试环境、压力点和测试工具;测试策略上也比较灵活。并且如果性能测试结果没有明显的短板,也不需要进行调优。

    2)客户有明确要求

    这是一个好的结果,这说明客户对性能测试有一定的了解,知道他们需要的系统要达到一个什么样的标准。如:系统要求同时满足100用户登陆,平均每个用户登陆时间不能超过5秒。这个需求很明确,当然也不排除一些不懂装懂的用户,提一些不现实的要求。

    不管怎么说,用户提要求了,这个比较容易,你可以对现系统做一次性能测试,至于,是通过优化系统还是增加硬件设备才能达到要求。就不是测试考虑的问题了。

    3)找出系统性能瓶颈

    这个需求的目的就很明确了,目的就是找出系统的性能瓶颈,进行调优或硬件扩容,所以性能测试的重点在系统的架构分析和业务分析上面。

    4)稳定性验证(强度测试)

    稳定性是系统的一个重要指标,因为系统一旦上线,就有可能会长期处在用户的访问状态,可能以前没发现的一些问题就会暴漏出来。比较典型的就是内存溢出,这种需求在测试策略上就要考虑性能测试的运行时长。

    (2)了解系统架构

    表示层

    表示层(浏览器)通过前端技术(HTML5/JavaScript/CSS3)将系统功能和数据展示给用户,并与用户实现交互。通过TCP/HTTP协议与业务层系统通信,向应用层系统发送请求报文,并接收应用层系统返回的响应报文。

    业务逻辑层

    业务逻辑层作为中间层实现核心业务逻辑服务。

    应用服务器主要运行中间件系统,中间件系统系统作为一个容器来运行各种应用软件系统。前台发来的请求报文通过中间件传递给应用程序,应用程序在处理的过程中调用数据层的数据服务器,数据服务器将查询的数据返回给应用程序,应用软件处理完成后通过中间件系统返回给客户端。

    在大型的系统中,可以对应用系统进行拆分,比如拆分成交易服务,查询服务;或者通过负载均衡技术,来分散客户端发来的请求,使其能承受更大的用户访问量。

    数据层

    数据层运行在数据库主机上,负责整个系统中数据信息的存储。运行数据库服务程序,查询通过JDBC与应用程序进行通信,主要用于存储数据与提供数据查询等服务。

    常用的系统架构:

    · Linux + Apache + PHP + MySQL

    · Linux + Nginx + Redis +  PHP + MySQL

    · Linux + Apache + Tomcat + Java+ Oracle

    · Windows Server 2003/2008 + IIS + C#/ASP.NET + 数据库

    · Window Server 2003/2008 + tomcat + MySql/Oracle/ + Java

    · Linux + Python + uwsgi + Nginx + MySQL

    (3)分析测试点

    性能测试点的选取

    * 发生频率非常高的(例如:某邮箱核心业务系统中的登录、收发邮件等业务,它们在每天的业务总量中占到90%以上)

    * 关键程度非常高的(产品经理认为绝对不能出现问题的,如登录等)

    * 资源占用非常严重的(导致磁盘I/O非常大的,例如某个业务进行结果提交时需要向数十个表存取数据,或者一个查询提交请求时会检索出大量的数据记录)

    对性能需求点的描述 

    • 准确

    如**系统必须在不超过 10 秒的响应时间内,处理 20 起登录任务。再如发邮件时间最大不超过5秒以及平均时间在2秒以内。

    • 一致

    用户和性能测试工程师对有关术语的理解要一致,如:并发用户数、在线用户数、注册用户数: 

    • 特定

    性能测试的需求一定是有条件的。

    检查系统后台关键业务数据10G、操作数据量为20K,1500 个用户、500 个并发用户运行的负载下,连续运行12小时过程中,业务操作是否满足性能需求。

    一般性能需求描述

    1、Web首页打开速度5s以下,Web登陆速度 15s以下。

    2、邮件服务支持50万个在线用户

    3、计费话单成功率达到99.999%以上。

    4、在100个并发用户的高峰期,邮箱的基本功能,处理能力至少达到10QPS(TPS).          QPS(TPS)--每秒钟请求/事物 数量

    5、系统能在高于实际系统运行压力1倍的情况下,稳定的运行12小时。

    6、这个系统能否支撑200万的VU(每天登录系统的人次)          VU--Virtual user(虚拟用户) 

    (4)选择测试工具

    (5)测试计划

    (6)搭建测试环境

    (7)执行测试

    1、准备测试数据

    2、使用测试工具模拟测试点,回放OK

    3、根据测试策略,使用不同的虚拟用户和测试组合 运行测试。

    4、监控系统CPU、内存、中间件,数据库的性能,收集数据。

    5、重复3、4。

    (8)性能调优

    步骤一:确定问题

    应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。

    数据库配置:经常引起整个系统运行缓慢,一些诸如oracle 的大型数据库都是需要DBA进行正确的参数调整才能投产的。

    操作系统配置:不合理就可能引起系统瓶颈。

    硬件设置:硬盘速度、内存大小等都是容易引起瓶颈的原因,因此这些都是分析的重点。

    网络:网络负载过重导致网络冲突和网络延迟。

    步骤二:分析问题

    当确定了问题之后,我们要明确这个问题影响的是响应时间吞吐量,还是其他问题?是多数用户还是少数用户遇到了问题?如果是少数用户,这几个用户与其它用户的操作有什么不用?系统资源监控的结果是否正常?CPU的使用是否到达极限?I/O 情况如何?问题是否集中在某一类模块中? 是客户端还是服务器出现问题? 系统硬件配置是否够用?实际负载是否超过了系统的负载能力? 是否未对系统进行优化?

    通过这些分析及一些与系统相关的问题,可以对系统瓶颈有更深入的了解,进而分析出真正的原因。

    步骤三: 确定调整目标和解决方案

    得高系统吞吐量,缩短响应时间,更好地支持并发。

    步骤四:测试解决方案

    对通过解决方案调优后的系统进行基准测试。(基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试)

    步骤五:分析调优结果

    系统调优是否达到或者超出了预定目标?系统是整体性能得到了改善,还是以系统某部分性能来解决其他问题。调优是否可以结束了。

  • 相关阅读:
    idea系列---【测试一段代码执行时间,每次都得复制粘贴,idea如何设置自定义模板代码?】
    我爱java系列---【java8时间类Instant】
    我爱java系列---【Java比较浮点数的正确方式】
    idea系列---【idea常用快捷键大全】
    linux系列---【linux系统如何创建一个软/硬连接?】
    vue系列---【vue项目如何使用element-ui的弹框提示?】
    vue系列---【vue项目中element-ui如何实现在登陆之前进行预校验?校验通过才允许调后台接口】
    vue系列---【vue项目中element-ui如何实现点击重置按钮,重置表单数据?】
    vue系列---【element-ui如何给表单添加参数验证?】
    面对对象的随笔
  • 原文地址:https://www.cnblogs.com/molrang/p/11132466.html
Copyright © 2020-2023  润新知