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

性能测试概述(1)

一、moco1.1什么是moco?Mock:替身server:服务mock:测试替身的服务1.2不同角色对moco使用的场景程序员前端程序员前端已写好⻚⾯,但是后端的接⼝没写好,那

一、moco

1.1什么是moco?

Mock:替身

server:服务

mock:测试替身的服务


1.2不同角色对moco使用的场景


程序员


前端程序员

前端已写好⻚⾯,但是后端的接⼝没写好,那么前端程序员正确的姿势就是模拟后端。

现在前端程序员来模拟后端返回的产品列表的数据:

 

将此文件保存,保存到moco的Java文件同一等级目录下

 

 

 之后打开控制台,运行这个moco(具体操作为先打开控制台,进入保存文件的位置,复制位置,再控制台打开这个文件、输入命令java -jar moco-runner-1.3.0-standalone.jar http -p 12306 -c products.json)

 

 

 之后再postman中输入地址(http://localhost:12306/products)并执行

 

 

 

 

 

 


 后端程序员

后端已写好接口,但是前端的页面没写好,那么前端程序员正确的姿势就是模拟前端。

现在后端程序员来模拟前端返回的数据:例如停车场收费系统

A给B服务一个车牌,那么B返回其他信息

 

 

 

 

 

 将此文件保存,保存到moco的Java文件同一等级目录下

之后打开控制台,运行这个moco(具体操作为先打开控制台,进入保存文件的位置,复制位置,再控制台打开这个文件、输入命令java -jar moco-runner-1.3.0-standalone.jar http -p 12306 -c park.json)

 

 

 

  之后再postman中输入地址(http://localhost:12306/parking)并执行

 

 


 测试

测试过程中,⽆数据,怎么办?

⾃⼰造数据

⾃⼰mock数据

 

将此文件保存,保存到moco的Java文件同一等级目录下

 

 

 之后打开控制台,运行这个moco(具体操作为先打开控制台,进入保存文件的位置,复制位置,再控制台打开这个文件、输入命令java -jar moco-runner-1.3.0-standalone.jar http -p 12306 -c products.json)

 

 

 之后再postman中输入地址(http://localhost:12306/products)并执行

 

 


二、性能测试

1.1、什么是软件性能

互联⽹的技术基本已全⾯的进⾏普及,所以对于⽤户⽽⾔软件的⽤户体验是⾮常重要的。在软件的⻆度⽽⾔, 性能它⾸先是⼀种指标,具体可以说就是软件系统或构件对于其及时性要求的符合程度,另外⼀种就是软件产品的 ⼀种特性,其实就是响应时间。对⼀个产品⽽⾔,性能的及时性是⽤响应时间或者吞吐量来进⾏衡量,⼀个⽤户操作⾏为,或者说是事务,⽐如单个的事务,响应时间就是完成事务所需要的时间,对⽤户⽽⾔,响应时间就是 端到端的⽤户基本体验。


1.2、不同角色对性能的理解


1.2.1、用户

在用户的角度下,性能就是用户操作的响应时间。

一般情况下业界对响应时间的界定如下:


1——3秒         比较优秀

3——5秒         一般,可以接受

5秒以上          不能接受

所以在做性能测试的过程中一定要注意,当响应时间超过5秒的时候就要提单了,让程序员来具体的优化。


1.2.2、运维

运维除了关注响应时间之外,也比较关心底层的信息资源,这些资源具体可以汇总如下:

系统资源(CPU和内存)

数据库资源(IOPS资源)

JVM内存是否够⽤

系统的最⼤容量

 


1.2.3、开发

开发的视角更加的全面,毕竟代码都是程序员写的,具体可以汇总如下:

前后交互的响应时间

中间件的参数设置

内存释放泄露

连接数泄露

是否存在不合理的内存使⽤⽅式

是否存在不合理的线程同步⽅式

系统中是否存在不合理的资源竞争

系统架构&代码结构


 1.2.4、测试

用户的视角属于全栈性的,所以需要考虑用户视角的产品体验,也要也要监控以及关注运维视⻆和开发视⻆,所以性能 测试中测试的具体⼯作职责可以总结为:

设计合理的场景和测试⽤例来验证系统的资源数据

验证在⾼并发的情况下架构是否满⾜

给架构师以及开发⼈员提供中间件配置参数的合理值范围

使⽤技术⼿段监控系统,DB,中间件,全链路监控的⽅式来监控系统资源情况



1.2.5、WEB前端

所谓前端的性能⽬前也是性能测试中⽐较热⻔的技术之⼀,关注的点具体汇总为如下:

浏览器的资源加载(HTML解析,图⽚资源加载,CSS⽂件资源加载)

前端缓存技术的优化是否合理性

前端与后端的交互性耗时


三、性能测试的常用术语

1.1、响应时间

响应时间指的是一次完整的HTTP请求流程

即响应时间(Response Time)=网络时间+应用程序处理的时间

 

 

 

以测试平台(上图)为案例:

WebServer:nginx

应用Server:Django服务

DataServer:MySQL


1.2、并发用户数

性能测试的核心是验证当前系统是否能够支持现有用户的访问,也就是说系统可以承受在同一时间段多少用户前来访问系统

并发用户数;以秒为单位可以说:不论从业务视角出发,还是服务器承受压力而言,描述的是同一时间向客户端发出请求的用户,某些时候也被称为“并发测试”。这中间主要体现的是服务器承受的最大并发访问数。


并发用户数:N个用户同时向服务发送请求


在线用户数:仅仅在线,但是并不代表发送了请求,也被称为僵尸用户


1.3、吞吐量

主要用于数据传输方面,也就是被测试系统的执行效率。该术语用于描述传输速度(字节/秒或者比特/秒),在某些情况下(如DB层面),吞吐量指的是操作的速度,也就是每秒操作或者每秒业务数。或者也可以说单位时间内用户端请求的数量,直接体现系统的性能承载能力。


1.4、性能计数器(性能测试中获取的数据)


WebServer:HTTP连接数


应用Server:服务被部署的系统的CPU和内存资源


DataServe:IOPS(每秒读取的数量)


1.5、IOPS

该术语主要是针对数据库的,也就是每秒发生的输出/输入操作的次数,是数据传输的一个度量的方法。用于磁盘的读写,IOPS值的是每秒读和的次数。

IOPS衡量的是读写的速度


1.6、使用率

对于服务所请求的资源,使用率描述的是所给定的时间区间内资源的繁忙程度。如果在一个业务中,会使用大量的内存资源,总的内存资源是4G,在一定数据量的情况下之心该业务形态,内存使用率从100M一直占用到3G,然后随着业务状态内存资源给得到释放呈下降的趋势,那么可以说内存使用率最高为75%

Out Of Memoty(OOM):内存泄漏


1.7、思考时间

思考时间英文名称是Think Time,也称为休眠时间,在业务视角,思考时间指的是用户在进行操作时,每个请求之间的间隔的时间。


1.8、TPS/QPS


事务指的是某个操作或者是⼀组操作的组合,如登录的事务那么就是输⼊账户和密码,点击登录按钮跳转到登录成 功的⻚⾯并且信息都加载出来。


TPS:统计的是每秒处理的事务数,即系统每秒能够处理的事务的数量。


QPS:指的是 每秒查询率,如DB服务器在规定时间内处理流量多少的衡量标准。


三、性能测试理论

1.1、调度


CPU 密集型:应用程序执行繁重的计算,通常运行时间比较长,会占用大龄CPU

    IO密集型:应用程序执行IO,计算不多,会占用大量的内存资源,系统最小粒度是线程,也就是说系统调度中国粒度最细的就是对线程组的调度。


线程优先级:

线程组优先级分为1---10

默认的优先级为5

优先级高的优先处理

执行的速度


1.2队列

先进先出,没有优先级的情况下谁跑的快谁先进。



推荐阅读
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 本文探讨了利用Python编程语言开发自动化脚本来实现文件的全量和增量备份方法。通过详细分析不同备份策略的特点,文章介绍了如何使用Python标准库中的os和shutil模块来高效地管理和执行备份任务。此外,还提供了示例代码和最佳实践,帮助读者快速掌握自动化备份技术,确保数据的安全性和完整性。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
author-avatar
77阿建
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有