vlambda博客
学习文章列表

性能测试小白入门之基础知识篇一


为什么要进行性能测试


在一些极限的场景下,软件和硬件会造成极大的破坏和损失:

  • 传统航空行业:2019年9月5日,波音777X飞机在压力测试的过程中,舱门炸毁。如果,波音的777X飞机没有经过压力测试就试飞了,那么当遇到同样的条件时,舱门必然炸毁,整个飞机就会直接暴露到高空低压低氧的环境,全飞机的人生存将会受到直接威胁。

  • 某西部大型油田使用钻井平台数据采集系统,在上线之前已经通过功能测试,但软件系统上线之后,在使用采集的电子数据勘探油层时,总是不能准确地找到油口,导致数百万元的损失。经过研究试验,发现软件从平台采集的数据和手工采集的数据有很大出入,性能测试后,找到根本原因:由于采集过程中产生 的数据量非常大,导致软件系统在采集过程中线程死掉,丢失部分数据,最终产生的是一个错误的采集结果,为工程人员提供了错误的判断依据。

  • 游戏行业:某游戏上线新功能,目标是全部游戏群体,结果上线后,先后出现了服务器崩溃,游戏功能图标加载缓慢等问题,导致玩家怨声载道,为此,游戏运营商不得不发放了许多奖励。


因此,需要进行性能测试,来验证软件在高压力下,高并发下,高负载下的实际工作情况。性能测试,可以验证系统是否具有系统宣称的处理能力(评估系统的能力)、可以验证系统的稳定性和可靠性、同时可以发现软件系统中存在的性能瓶颈以达到优化系统的目的。


软件性能 VS 软件功能


功能指的是在一般条件下软件系统能够为用户做什么,能够满足用户什么样的需求。软件性能是指在空间和时间资源有限的条件下,软件系统的工作情况


对比一下邮件系统功能需求说明和性能需求说明:

  • 功能:邮件系统能够支持收发以30种语言为标题和正文的邮件,并支持粘贴10MB的邮件附件。

  • 性能:邮件系统能够在2GB RAM/1GHz CPU的服务器上,支持10000注册用户,日均处理10000邮件,响应时间不超过5秒/封。


软件性能和功能区别的实质是,软件功能焦点在于软件“做什么”,关注软件物质“主体”发生的“事件”;而软件性能则关注于软件物质“做得如何”,这是综合“空间”和“时间”考虑的方案(资源和速度),表现为软件对“空间”和“时间”的敏感度。另外,也要认清一个事实,软件的性能实现是建立在功能实现的基础之上的



什么是性能测试


性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。通俗理解,性能测试是在特定条件下运行系统,以验证系统的处理能力。


负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。


性能测试分类


中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。

  • 客户端性能测试:考察客户端应用的性能,测试的入口是客户端。它主要包括并发性能测试、疲劳强度测试、大数据量测试和速度测试等,其中并发测试是重点。主要涉及的测试指标包括:APP的启动时间、内存、包大小、帧率,流量等。

  • 网络端性能测试:应用在网络上性能的测试重点是利用成熟先进的自动化技术进行网络应用性能监控、网络应用性能分析和网络预测。

  • 服务端性能测试:对于应用在服务器上性能的测试,可以采用工具监控,也可以使用系统本身的监控命令监控资源使用情况。实施测试的目的是实现服务器设备、服务器操作系统、数据库系统、应用在服务器上性能的全面监控。


性能测试应用场景


能力验证、规划能力、性能调优、缺陷发现、性能基准比较。以下简单介绍和对比了这几个场景的各自用途和特点:

性能测试如何开展


1)    开展前提:系统功能测试已基本完成,可以在已经确定的环境下进行,且事先了解被测试系统经典场景,并具有确定的性能目标

2)    开展步骤:

性能测试小白入门之基础知识篇一



3)    开展原则:

  • 情况许可时,应使用几种测试工具或手段分别独立进行测试,并将结果相互印证,避免单一工具或测试手段自身缺陷影响结果的准确性;

  • 对于不同的系统,性能关注点是有所区别的,应该具体问题具体分析;

  • 查找瓶颈的过程应由易到难逐步排查:

    • 服务器硬件瓶颈及网络瓶颈(局域网环境下可以不考虑网络因素)

    • 应用服务器及中间件操作系统瓶颈(数据库、WEB服务器等参数配置)

    • 应用业务瓶颈(SQL语句、数据库设计、业务逻辑、算法、数据等)

  • 性能调优过程中不宜对系统的各种参数进行随意的改动,应该以用户配置手册中相关参数设置为基础,逐步根据实际现场环境进行优化,一次只对某个领域进行性能调优(例如对CPU的使用情况进行分析),并且每次只改动一个设置,避免相关因素互相干扰;

  • 调优过程中应仔细进行记录,保留每一步的操作内容及结果,以便比较分析;

  • 性能调优是一个经验性的工作,需要多思考、分析、交流和积累;

  • 了解“有限的资源,无限的需求”;

  • 尽可能在开始前明确调优工作的终止标准。

4)    帮助小白明确性能测试需求的提问示例

  • 项目性能测试将关注哪些关键业务流程?

  • 期望项目多少用户在线上或并发?

  • 一个典型项目互联网用户平均多长时间完成他的业务操作?

  • 产品上线每天运行多长时间/被哪类典型用户访问?

  • 业务性能期望目标? 系统支撑每天/每小时处理多少订单?

  • 基于什么测试环境,线上线下, 墙内还是墙外,,WAN还是LAN?

  • 项目用到哪些技术(web 1.0/2.0)?特别是缓存机制/callback

  • 项目用到哪些第三方接口?

  • 简介一下项目核心业务流程,比如,什么样的用户或是角色,可以用项目,提供什么信息做什么操作完成用户业务?

  • 项目是否已经上线? 是否考虑之前线上性能基准? 或者需要线上测试?

  • 提供产品环境/测试环境软硬件配置列表


小白本期对于性能测试基础知识的学习就到这里啦,下一期小白将会学习性能测试基础知识中的常见性能指标与常用性能测试方法~


参考:

  1. https://www.testwo.com/blog/5274

  2. https://baike.baidu.com/item/性能测试

  3. https://www.cnblogs.com/imyalost/p/7554450.html

  4. https://www.cnblogs.com/insane-Mr-Li/p/10647105.html


扫描二维码

获取更多精彩