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。

性能测试思想(What is performance testing?)的更多相关文章

  1. RabbitMQ Performance Testing Tool 性能测试工具

    RabbitMQ Performance Testing Tool 介绍:https://www.rabbitmq.com/java-tools.html RabbitMQ Performance T ...

  2. Performance Testing 入门小结

    从事软件测试两年多了,一直在做功能测试.2016年计划学习Performance.今天,先把之前听过的同事session以及自己查阅的资料小结一下. 一.什么是性能测试 首先来说一下软件的性能是什么. ...

  3. Difference Between Performance Testing, Load Testing and Stress Testing

    http://www.softwaretestinghelp.com/what-is-performance-testing-load-testing-stress-testing/ Differen ...

  4. 脚本语言&& Performance Testing

    watin: http://www.cnblogs.com/dahuzizyd/archive/2007/04/13/ruby_on_rails_windows_instatnrails_study_ ...

  5. Run Performance Testing Which Was Distributed To Multiple Test Agents

    How to solve the VS installed machine cannot run performance testing by .testsettings file, which wi ...

  6. Difference between Load / Stress / Performance Testing

    Load and stress testing are subsets of performance testing. Performance testing means how best somet ...

  7. Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑

    脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...

  8. 【原创】时隔十年,再度审视Performance Testing,性能测试,Load Runner,和企业级性能测试解决方案

    软件测试入行是2006年,最先学习的测试工具囊括了QTP,Test Director,Load Runner,Rational Robot,Rational Performance: 那时的操作系统是 ...

  9. Performance testing of web application

    Testing the performance of web application is easy . It's easy to design unrealistic scenario . Easy ...

  10. Performance testing test scenarios

    1 check if page load time is within acceptable range2 check page load on slow connections 3 check re ...

随机推荐

  1. spring boot整合mybatis-plus报错:There is no getter for property named ‘ew‘ in ‘xxx‘

    问题说明 spring boot整合mybatis-plus报错:There is no getter for property named 'ew' in 'xxx' 问题解决 XXXmapper. ...

  2. python web连接mysql数据库

    一定要commit,否则数据库不会发生改变!!! 1.使用python写入内容到数据库 import pymysql # 记得下载并引入pymysql # 1.连接mysql,db:声明数据库 con ...

  3. QT - Day 2

    QMainWindow 菜单栏  最多有一个 QMenuBar *bar = MenuBar(); setMenuBar(bar); QMenu *fileMenu = bar->addMenu ...

  4. Golang gRPC学习(05): retry重试

    什么是重试 如果服务出现了错误,主要是网络,服务器出现了短暂异常的时候,该怎么办? 我们都会人工或者自动的重新连接服务试试,看服务是否恢复可用了. 这种重新进行连接服务的一种方式就是重试.如果是在微服 ...

  5. Go语言并发编程(2):channel 通道介绍和使用

    一.简介 channel 不仅可以用于 goroutine 间进行安全通信,还可以用于同步内存访问. 而且 Go 社区强烈推荐使用 channel 通道实现 goroutine 之间的通信, 不要通过 ...

  6. OpenCV开发笔记(六十一):红胖子8分钟带你深入了解Shi-Tomasi角点检测(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  7. docker 发布.net core 项目(linux)

    一.准备阶段:前提:一台linux系统,安装好了Docker并启动 1.上传.netcore项目压缩文件 2.解压 注:若没有解压软件,先下载rar解压软件再安装:需注意系统是64位还是32   (下 ...

  8. 【C++ OOP 02 对象的初始化和清理】构造/析构函数、深/浅拷贝、初始化列表以及静态成员

    [对象的初始化和清理] 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全 C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据 ...

  9. 第一篇博客——MarkDown语法

    Markdown学习 标题 三级标提 四级标题 字体 Hello World ! 两个星号加粗 Hello World ! 一个星号斜体 Hello World ! Hello World ! 两个波 ...

  10. 【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答

    一:云服务后端是2台虚拟机,Work Role,Web Role,可以RDP进去,但是为什么在虚拟机列表里看不到呢? 因为云服务(经典)是PaaS服务,有别于传统的IaaS服务,其提供的WebRole ...