性能测试简介


最近需要进行压测,发现自己对性能知识这块的了解很混乱,整理一下。如果哪块理解上有误的话,希望各位大佬可以帮忙指正。

软件性能的关注点

不同角色的成员对于软件性能关注的测试点也不一样。

  • 对于用户来说
    用户关注的是用户操作的响应时间
    用户并不知道一个软件在后端是怎么处理的,他只是希望在使用软件时操作起来很流畅,不会出现卡顿的情况,即当点击一个按钮、链接或发出一条指令开始,他希望能在1s或2s内就可以出现预期的结果。而这就是响应时间。

  • 对于管理员来说
    1、响应时间
    2、 服务器资源使用情况是否合理
    3、 应用服务器和数据库资源使用是否合理
    4、 系统能否实现扩展
    5、 系统最多支持多少用户访问、系统最大业务处理量是多少
    6、 系统性能可能存在的瓶颈在哪里
    7、 更换那些设备可以提高性能
    8、 系统能否支持7×24小时的业务访问

  • 对于开发(设计)人员来说
    1、 架构设计是否合理
    2、 数据库设计是否合理
    3、 代码是否存在性能方面的问题
    4、 系统中是否有不合理的内存使用方式
    5、 系统中是否存在不合理的线程同步方式
    6、 系统中是否存在不合理的资源竞争

  • 对于性能测试工程师来说
    需要关注以上所有的性能点。

性能测试的介绍

性能测试:是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标(如:响应时间,CPU使用率,内存使用率等等)进行测试。
性能测试的目标不是发现bug,而是消除性能瓶颈。也就是说,我们进行性能测试的目的是为了获取一些信息,从而去实现更好的优化。

性能测试的类别

性能测试类型包括负载测试强度测试容量测试等。接下来简单的介绍一下。
在这里插入图片描述

负载测试

  • 概念
    负载测试(Load Testing):负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,在负载测试中关注的属性包括峰值性能、服务器吞吐量、不同负载级别下的响应时间(低于阈值)、H/W环境的充分性、在不影响性能的情况下能够处理多少用户等等。负载测试是指通过不断地、稳定地增加系统负载直到达到阈值极限来测试系统。
  • 目标
    1.暴露应用程序中与缓冲区溢出、内存泄漏和内存管理不善相关的缺陷。负载测试的最终结果可能包括负载平衡问题、带宽问题、现有系统的容量等。
    2.确定应用程序的所有组件(如数据库、硬件、网络等)的上限,以便应用程序能够管理未来预期的负载等等。

压测测试

  • 概念
    压力测试(Stress Testing):强度测试也就是压力测试,俗称“压测”。在压力测试下,为了使系统崩溃,会执行各种活动,以使现有资源超载,会出现的现象,包括从系统中删除组件,也作为压力测试的一部分。
    基本上,压力测试评估应用程序在峰值负载和正常情况下的行为。压力测试的目的是确定系统的故障,并监控系统如何正常地恢复。
    压力测试的最终结果可能包括同步问题、内存泄漏、竞态条件等。如果压力测试是检查系统在用户数量突然增加的情况下的行为,那么它被称为峰值测试。
    如果压力测试是通过用户数量的缓慢增加来检查系统在一段时间内的可持续性,那么它被称为浸泡测试
  • 目标:
    1.压力测试的目标是分析崩溃后的报告,以定义应用程序失败后的行为。
    2.最大的挑战是确保系统在发生故障后不会损害敏感数据的安全性。在成功的压力测试中,即使在最严重的故障之后,系统及其所有组件也会恢复正常。

容量测试

容量测试(Volume Testing):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。核实测试用户同时使用软件程序的最大数量。

基准测试

基准测试 : 比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。

争用测试

争用测试:核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求的处理是否可以接受。

性能配置

性能配置 : 核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。

我们接触最多的可能就是负载测试与压力测试,可以简单的理解为压力测试是高负载的负载测试,即在压力测试下,我们需要使用超过最大负载的数据去进行测试,查看软件出现的崩溃后的行为

性能测试工具

LoadRunning

收费软件,但是功能强大。
是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。

Jmeter

开源软件,有UI界面,好操作。基本满足了所有的测试场景。

Locust

开源软件,完全依靠于python,基本可以满足测试场景。但是分析报告这一块较弱。

参考文档

[1]http://www.ha97.com/5095.html
[2]https://www.softwaretestinghelp.com/what-is-performance-testing-load-testing-stress-testing/
[3]https://blog.csdn.net/carolzhang8406/article/details/55251643

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值