zoukankan      html  css  js  c++  java
  • 性能测试思想(What is performance testing?)

    1.什么是性能测试

    什么是软件性能?

    定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能是展示出来的及时性

    比如:一个登录功能他能实现登录操作,但是登录过程需要10s才能进入主页面,这就说明软件的性能不好。

    什么是性能测试?

    定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

    功能测试的时候关注的是1个人的操作,性能测试关注的是多个人。

    性能测试什么时候做?

    接口测试是最先做,性能测试是最后做。

    性能测试是基于所有功能都测试完毕并且修复完成,基本不改变,正常测试流程已经全部走完,在上线前的两三天做性能测试,性能测试通过则可以上线。

    2.不同群体眼中的性能

    用户的视角:

    • 响应时间(还要让我等多久?需要加载老半天才出现页面?)
    • 确定性(为什么总是失败?闪退?无响应?)

    开发视角:

    • 架构设计是否合理?——架构设计
    • 数据库设计是否合理?——数据库设计
    • 代码是否存在性能问题?——代码
    • 是否有不合理的内存使用?——代码
    • 是否有不合理的线程同步操作?——代码
    • 是否有不合理的资源竞争?——代码
    • 代码算法是否还能进一步提升?——代码

    系统管理员(运维)视角:

    • 服务器资源使用合理吗?——资源利用率
    • 数据库使用合理吗?——资源利用率
    • 系统是否实现扩展?——可扩展性(比如:服务器动态扩展)
    • 最多支撑多少用户访问?——系统容量
    • 最大业务处理量?——系统容量
    • 系统有哪些潜在的瓶颈?——可扩展性
    • 更换哪些设备,添加哪些机器可以提高系统性能?——可扩展性
    • 7×24小时连续不间断业务访问?——稳定性

    测试眼中的性能:

    官方回答:

    • 测试人员通常是作为软件质量控制的一个角色,不仅仅是找BUG,更需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面。
    • 测试人员需要考虑全面的性能,包括用户、开发、运维等各个视角的性能。
    • 测试人员在做性能测试时除开要关注表面的现象,比如:响应时间,也需要关注本质,比如:用户看不到的服务器资源利用率,架构设计是否合理,代码是否合理等方面。

    实际测试:

    • 将开发视角看成一块,运维视角也看成一块,站在用户的角度,模拟用户操作。
    • 如果达标就通过,上线。
    • 如果不达标,就要判断是开发的问题还是运维的问题。
      • 监控系统的物理资源,比如:CPU占用100%(一般是85%以内,70%、60%、50%都ok),就是运维问题,或者是内存占满,带宽打满。
      • 运维已经调过物理资源,CPU、内存、带宽等也都达标,测试发现还有性能问题,那就是开发问题。就要指派给开发去处理。

    ❓性能测试的指标?是谁定的?

    产品经理和项目经理制定。

    3.性能测试的场景维度和类型

    基准测试:

    在给系统施加较低压力时,查看系统的运行状况并记录相关数据作为基础参考。

    比如:一个系统的性能要求是满足100个人使用,我们就会取10-20个人去做测试就会得到一组数据,这个数就作为基准测试的基础参考值

    负载测试:

    是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如:某种资源已经达到饱和状态。

    正常是由小往大增加,需要注意的点是需要往安全的临界值去加,而不是往超负荷的去加,也就是说性能是走上坡路的,寻找最佳性能的那个点。如果加到发现性能下降,就需要往回退,取更小的差值,比如60直接加到70的时候出现性能指标下降,就需要取65、66、67等慢慢尝试,找到系统最优点。

    压力测试:

    压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。

    70往上加,观察软件是如何处理这种情况:
    ①系统崩溃
    ②所有人都无法访问
    ③一部分人可以访问,一部分人无法访问,需要错峰访问(比如:考试系统查分)

    稳定性测试:

    在给系统加载一定业务压力(40%-60%)的情况下,使系统运行一段时间,以此检测系统是否稳定。

    并发测试:

    测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。

    4.性能测试指标确立及分析

    1. 响应时间(RT——Response-time)

      • 定义:从用户发送一个请求用户接受到服务器返回的响应数据的这段时间就是响应时间。

      • 关键路径:http请求经过网络发送到web服务器进行处理,如果需要操作DB,再由网络转发到数据库进行处理,然后返回值给web服务器,web服务器最终把结果数据通过网络返回给客户端。

      • 响应时间计算方法:

        响应时间=呈现时间+网络传输时间+服务器端响应时间+应用延时时间

      • 响应时间和负载对应关系:

        理发店模型:10个理发师,理1个客户需要1分钟,当同时来的客户数量小于等于10个,总时间只需1分钟,当同时来11个客户,总时间就需要2分钟,以此类推21个客户就需要3分钟......

        拐点:

        • 响应时间突然增加。
        • 意味系统的一种或多种资源利用达到极限。
        • 通常可以利用拐点来进行性能测试分析与定位。
    2. 吞吐量

      • 定义:单位时间内系统处理的客户端请求的数量。(判断系统处理能力的一个指标)

      • 计算单位:一般使用 请求数/秒 作为吞吐量的单位,可以使用 页面数/秒 表示。另外,从业务角度来说也可以使用 访问人数/天页面访问量/天 作为单位。

      • 计算方法:throughput = (number of requests)/(total time)

      • 吞吐量和负载对应关系:

        拐点:

        • 吞吐量逐渐达到饱和。
        • 意味着系统一种或多种资源利用达到了极限。
        • 通常可以利用拐点来进行性能测试分析与定位。
    3. 并发数

      • 并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。
      • 在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。(日活——每日活跃用户数)
      • 系统用户数:系统注册的总用户数据。
      • 三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数
    4. 资源利用率

      • 定义:指的是对不同系统资源的使用程度,通常以占用最大值的百分比来衡量(CPU、内存)。

      • 通常需要关注的服务器资源如下:

        • CPU:就像人的大脑,主要负责相关事物的判断以及实际处理的机制。(一般不超过80%-90%)
        • 内存:大脑中的记忆块区,将眼睛、皮肤等收集到的信息记录起来的地方,以供CPU进行判断,但是是临时的,访问速度快,如果关机或断电,内存中的数据就会消失。
        • 磁盘IO:大脑中的记忆区块,将重要的数据保存起来,永久保存,关机或断电也不会丢失,速度慢,以便将来再次使用这些数据。(通过查看读写)
        • 网络:带宽。(发送/接收的速率)
      • 资源利用率和负载对应关系:

        拐点

        • 服务器某资源使用逐渐达到饱和。
        • 通常可以利用拐点来进行性能测试分析与定位。
      • windows的资源监视器:

        任务管理器 --> 性能 --> 资源监视器

    5. 其他常用概念

      • PV(Page View,页面访问量):访问一个URL,产生一个PV,每日每个网站的总PV量是形容一个网站规模的重要指标。
      • UV(Unique Visitor,用户访问):作为独立的用户,访问站点的所有页面均算一个UV。
  • 相关阅读:
    SqlServer同义词
    Topshelf+Quartz3.0基于控制台应用程序快速开发可调度windows服务
    IdentityServer4实现.Net Core API接口权限认证(快速入门)
    记SqlSugar ORM框架之找不到主键问题
    Ocelot网关+IdentityServer4实现API权限认证
    Asp.Net Core入门之静态文件
    Asp.Net Core入门之自定义中间件
    Asp.Net Core入门之配置文件
    写在前面
    Web中间件常见漏洞总结
  • 原文地址:https://www.cnblogs.com/caituotuo/p/14227556.html
Copyright © 2011-2022 走看看