热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

全栈性能测试修炼宝典Jmeter实战(二)

性能测试初体验1、测试分类从图中可以看出,性能测试在整个软件测试环节中占了50%的内容,比如负载测试、压力测试、性能测试、大数据量测试、恢复测试、内容泄露测试、竞品测试(比较

性能测试初体验

1、测试分类

  从图中可以看出,性能测试在整个软件测试环节中占了50%的内容,比如负载测试、压力测试、性能测试、大数据量测试、恢复测试、内容泄露测试、竞品测试(比较测试)和可靠性测试。

2、性能测试流程

  

  (1)业务学习:通过查看文档,手动操作系统来来了解系统性能;

  (2)需求分析:分析系统非功能需求,圈定性能测试的范围,了解系统的性能指标;

  (3)工作评估:工作量分解,评估工作量,计划资源投入;

  (4)设计模型:圈定性能测试范围后,把业务模型映射成测试模型;

  (5)计划编写:计划测试工作,在文档中明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等;

  (6)脚本开发:录制或者编写性能测试脚本;

  (7)测试环境准备:性能测试环境准备包括服务器与负载机两部分,服务器是被测系统的运行平台,负载机是我们用来生产负载的机器,用来安装负载工具,运行测试脚本;

  (8)测试数据准备:根据测试模型来准备被测系统的主数据与业务数据;

  (9)测试执行

  (10)缺陷管理:对性能测试过程中发现的缺陷进行管理;

  (11)性能分析:对性能测试过程中暴露出来的问题进行分析,找出原因;

  (12)性能调优:性能测试人员与开发人员一起来解决性能问题;

  (13)测试报告:测试工作的重要交付文件,对测试结果进行报告,主要包括性能指标说明(tps、rt、cpu等);

  性能测试主要交付件:

1 测试计划
2 测试脚本
3 测试程序
4 测试报告或者阶段性测试报告

  (14)评审:对性能报告中的内容进行评审,确认问题,评估上线风险。

3、性能测试成功与失败要素

  重点关注点:

1 评估系统,需求分析
2 场景设计、用例设计
3 测试执行、是否通过
4 性能诊断优化

  (1)评估系统,需求分析

  对性能测试进行需求分析,通常情况下测试人员会直接依赖需求人员或者项目经理的口述或者有缺陷的文档。实际上,大多数情况下我们测试人员需要自己来引导相关的运维人员和需求人员给出具体的需求数据,并对这些数据进行二次分析,得出我们真实的性能需求。

  对于初次上线的系统,我们需要使用同行的系统数据,进行用户行为分析和商业数据结构的估算为前提,利用性能估算法推算。得到的负荷和响应时间数据可以被应用于验证所计划的模型的能力,并帮助做出对策。

  对于已经上线的系统,我们可以通过运维人员获取TPS和时间的比例分布图、用户数和时间的分布图、数据库ER关系图、容量数据等,直接精确得出目前系统的用户行为和业务数据关系,进而得出我们需要的性能需求。

  (2)场景设计、用例设计

  (3)测试执行、是否通过--需要关注的指标

  

  (4)性能诊断优化

4、不同角色看性能

  技术部门一般有下面几种角色:开发、测试、架构师、运维人员、(系统管理员、DBA)

  (1)黑盒测试的角度

  黑盒测试只关心应用程序的单步响应时间,性能好坏就看应用时间多少,也就是数据流经过服务器、服务器集群经过网络传输后往返的时间总和。

  (2)开发角度

1 架构合理性
2 数据库设计合理性
3 代码
4 系统内存的使用方式
5 系统线程使用方式
6 系统资源是否有恶性,不合理竞争

  (3)系统管理员角度

1 硬件资源利用率
2 JVM
3 DB
4 系统是否支持7*24的服务
5 扩展性,兼容性,最大容量,可能的瓶颈

  (4)性能测试的角度

 1 服务器硬件的性能
 2 根据需求和历史数据制定性能目标
 3 建立性能通过模型
 4 对开发代码框架和硬件框架进行性能分析
 5 针对开发发布版本的基准测试
 6 执行软件性能验收及稳定性测试
 7 生产环境的配置及优化
 8 制定性能测试的测试用例
 9 制定性能测试的场景设计
10 协调各部门配合
11 特定的性能分析

5、性能测试相关术语

  (1)负载:模拟一万五操作对服务器造成压力的过程,比如模拟100个用户进行发帖。

   (2)性能测试(Performance Testing):模拟用户负载来测试系统在负载情况下,系统的响应时间,吞吐量等指标是否满足性能需求。

  (3)负载测试(load Testing):在一定软硬件环境下,通过不断加大负载(不同虚拟用户数)来确定在满足性能指标情况下能够承受的最大用户数。这些性能指标包括:TPS(每秒事务数)、RT(事务平均响应时间)、CPU using(CPU利用率)、MEM using(内存使用率)等软硬件指标。

  (4)配置测试(Configuration Testing):为了合理地调配资源,提高系统运行效率,通过测试手段来获取、验证、调整配置信息的过程。

  (5)压力测试\强度测试(Stress Testing):在一定软硬件环境下,通过高负载的手段来使服务器资源处于极限状态,测试系统在极限状态下长时间运行是否稳定,确定是否稳定的指示包括TPS、RT、CPU using、MEM using等。

  (6)稳定性测试(Endurance Testing):在一定软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定。一般我们会在满足性能要求的负载情况下加大1.5倍-2倍的负载量进行测试。

  (7)TPS:每秒完成的事务数,通常指每秒成功的事务数,性能测试中重要的综合性性能指标。一个事务是一个业务度量单位,有时一个事务会包括多个子操作,为了统计方便,会把着多个子操作记为一个事务。

  (8)RT/ART(Response Time\average response time):响应时间/平均响应时间,指一个事务花费多长时间完成,一般取平均响应时间。

  (9)PV(page view):每秒用户访问页面的次数,此参数用来分析平均每秒有多少用户访问页面。

  (10)Vuser虚拟用户(Virtual user):模拟真实业务逻辑步骤的虚拟用户,虚拟用户模拟的操作步骤都被记录在虚拟用户脚本里。Vuser脚本用语描述Vuser在场景中执行的操作。

  (11)Concurrency并发,并发分为狭义和广义两类。狭义的并发,即所有用户在同一时刻作品同一件事情或者操作;广义的并发,即多个用户进行完全一样的操作。

  (12)场景(Scenario):性能测试过程中为了模拟真实用户的业务处理过程,在loadrunner中构建的基于事务、脚本、虚拟用户、运行设置、运行计划、监控、分析等一系列动作的集合,称之为性能测试场景。场景中包含了待执行脚本、脚本组、并发用户数、负载生成器、测试目标、测试执行时的配置条件等。

  (13)思考时间(Think Time):模拟真实用户在实际操作时的停顿间隔时间。也就是说,用户在进行操作时,每个请求之间的间隔时间。

  (14)标准差(Std. Deviation):标准差越小,说明波动越小,系统越稳定。

6、性能测试通过标准

 


推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
author-avatar
我是谁的宝贝儿呢颓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有