性能测试如何做?性能测试实战从0-1进阶(内涵面试题+答案)

news2024/12/23 15:22:02

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

性能测试实战 - 部署

1、什么时候做性能测试
①项目刚上线的时候:用户为0(避免用户量突然增加,系统承受不住)。
②发布活动的时候:节日商品秒杀,打折优惠,某时间段促销,大批量用户集中访问下单(平时没这么多用户)。
③版本迭代的时候:新功能产生(类似刚上线)。
④高负载的稳定性:推出免费课程,一天内就会持续增长,要看负载,一个视频网站最多容纳多少人(只进不出)。

2、如何模拟生产环境
①等比模拟硬件:生产环境是100台,那么测试就等比缩小为10台。
②同步软件版本位数:因为不同版本,会有细微差别(所有软件)。
③使用负载均衡模拟共享中心的应用:负载均衡主要做分发,分发机制类似共享中心。
④最大限度避免网络问题:将服务器置于同一机房,避免由于网络波动而出现的性能问题(忽略网络)。

注意:
做性能测试,不要直接去互联网测去,有网络,有时候就不知道问题是哪出的。
性能的测试环境,必须是自己搭建的,这样面对多个影响因素,才能做到心中有数。

3、性能测试的数据准备。
①数据的分类:性能测试与功能测试的数据库,要相互独立
基础数据:让表中数据达到一定数量级,目的是测出数据库索引是否需要优化,表空间、索引空间是否足够。

业务数据:被测系统能够按业务逻辑运行起来的数据,目的是测出SQL语句和程序代码是否需要优化 。

注意:
性能测试,一定是需要大数据量。
基础数据主要体现存储空间,业务数据主要是看操作速度 。

②数据的准备:
利用性能测试工具构建。
写循环代码SQL插入数据表。
从生产库中拷贝。

性能测试实战 - 实战应用

1、对系统性能瓶颈进行定位
需要掌握查看日志的方法,查询数据库连接数或进程数,查询web服务器连接数或请求数。

2、对系统参数进行调优
针对操作系统、数据库、中间件服务器等:是软件,就一定会有参数配置,这些配置,也是系统发生性能问题的重要原因。

3、发现算法的缺陷
主要从时间的维度,去定位算法缺陷(一般情况下开发自己就能定位到)。

4、验收测试
验收测试的时候,你报告里写的是最多多少人同时在线。

以报告的形式,把测试出来的性能指标,给到那些需要这些指标的人。(老板、开发、运维、客户)

5、容量规划
容量的规划,就是一种预估。根据业务场景去预估服务器压力等。

产品从各种维度考虑,都需要进行性能测试。
多数情况下,产品做出来之后,人们往往更关心的不是功能,而是它的性能。

比如,特斯拉电动车,续航是多少公里。某跑车,百公里提速是多少秒。同等级的轿车,都能开到140,以同样的速度和公里数,哪个更费油?哪个更稳定性?哪个操控性更好?这些都是性能领域。

产品谁都能做,但高性能的产品,才具备市场竞争力,所以要做性能测试,保证性能指标。

性能测试面试题 - 答案

面试题1:你们性能观察哪些指标,大概指标范围是怎么样的?

答:
对于指标这块,业务方面的指标主要有:并发数,90%用户的平均响应时间
错误率,吞吐量/吞吐率这些,例外还需要关注服务器资源的使用情况,像:CPU的使用率、内存的占有率,磁盘IO,网络。

我们那个项目当时只针对,登录,搜索查询,下订单,购物车相关接口,支付等业务做了些简单的并发,压测这块。

指标大概是这样的:
单基准业务并发测试登录,注册,查询1s以内,下订单,购物车相关接口,支付2s以内,混合业务性能:5s以内

响应时间:登录,注册业务<2s之内查询,下订单,购物车,支付业务<3s
充值,提现,查看充值日志,查看提现日志业务查询标的,<3s
投标,申请借款<5s

错误率:0
吞吐量/吞吐率:200左右请求/sec
CPU:80%以内
内存:80%以内
I/O: %util<=80%,%nowait<=20%
%util: 磁盘一秒中有百分之多少的时间用于I/O操作,
% nowait:磁盘等待处理时间占比
带宽:<=系统带宽的30%,无丢包,无延迟,无阻塞

面试题2:什么是内存泄漏,什么是内存溢出?

答:
内存泄漏:
是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。

通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。

内存溢出:OOM
指程序申请内存时,没有足够的内存供申请者使用1M实际要占用2M内存,
就说分配的内存不够,导致内存溢出;
给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据;
长期出现内存泄漏,导致系统内存越用越少,最终导致内存不够用,导致系统崩溃,出现OOM;

面试题3:如果用户并发要慢慢加载,你怎么设置的?

答:
设置并发数的时候,我们会设置启动时间,比如说设置50个并发用户数就是50个线程组,启动时间会设置成10秒,让用户慢慢启动起来

1面试题4:并发用户数跟响应时间与吞吐的关系?

答:
并发用户数越多,响应时间越长;
并发用户数越多,吞吐量会一直,增加,增加到一个临界点(系统瓶颈后),不再增加,有少许的回落;

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有不屈不挠的努力,才能开创辉煌的人生航程;只有坚定不移的奋斗,才能追逐理想的光芒。向前冲吧,勇往直前,你的努力终将点亮未来的星辰大海!

没有成功的捷径,只有坚持奋斗的道路。每一次努力都是一次积累,每一次汗水都是一种收获。相信自己的能力,追寻梦想的勇气将引领你走向辉煌的彼岸。加油!

只要坚持不懈,勇往直前,无论困难多大,都能够战胜一切,成就辉煌。相信自己的实力,追逐梦想,你将收获属于你自己的辉煌人生,永不言弃,奋斗不止!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

checkout

git-checkout - Switch branches or restore working tree files# 用index或者指定commit中的版本,来更新工作区中的文件 # 切换分支 Updates files in the working tree to match the version in the index or the specified tree. If no pathspec was given,git checkout wil…

SonarQube扫描常见Bug、漏洞修复整理(持续更新中)

目录 DMS1、A "NullPointerException" could be thrown; "sra" is nullable here.2、Cast one of the operands of this multiplication operation to a "long"3、Call "remove()" on "requestContainer".4、Use try-with-r…

echarts条形图 动态 设置标签背景和柱状图渐变颜色

<!--Description: 横向渐变柱状图 --> <template><div ref"horizontal" class"w-full h-full"></div> </template><script> import * as echarts from echarts export default {components: {},props: [data],data() …

c++11 标准模板(STL)(std::basic_ostream)(八)

定义于头文件 <ostream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_ostream 提供字符流上的高层输出操作。受支持操作包含有格式…

kubernetes 节点排水维护 cordon, drain, uncordon

1.这三个命令是正式release的1.2新加入的命令&#xff0c;三个命令一起介绍&#xff0c;是因为三个命令配合使用可以实现节点的维护。在1.2之前&#xff0c;因为没有相应的命令支持&#xff0c;如果要维护一个节点&#xff0c;只能stop该节点上的kubelet将该节点退出集群&#…

Java-API简析_java.net.InetAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131590559 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…

git因网络问题报错

Failed to connect to github.com port 443 after 21051 ms: Couldnt connect to server Recv failure: Connection was reset 你是否最近也有遇到这种情况呢&#xff1f; 公司项目目前保存在github上, 在 git pull 和 git push 的时候总是遇到以上情况 也是困扰了我不少…

ESP32-C2 固件烧录需满足的硬件环境整理

ESP32-C2 默认通过 UART0 &#xff08;即 TXD&#xff08;GPIO20&#xff09;和 RXD&#xff08;GPIO19&#xff09;&#xff09;下载固件。 Windows 下可使用 Flash download tool 工具来下载编译后的 bin 文件&#xff1b; 运行 flash_download_tool.exe 的文件 选择开发…

2023 最新互联网大厂Java面经分享:25 分类、1000 道 Java 面试真题(50w 字解析)

作为 Java 程序员&#xff0c;选择学习什么样的技术&#xff1f;什么技术该不该学&#xff1f;去招聘网站上搜一搜、看看岗位要求就十分清楚了&#xff0c;自己具备的技术和能力&#xff0c;直接影响到你工作选择范围和能不能面试成功。 如果想进大厂&#xff0c;那就需要在 Ja…

数据库-分布式数据库历史变迁之旅

我们正式开始分布式数据库历史变迁之旅。 单机数据库的不可能三角 正如经济政策的不可能三角“不可能同时实现资本流动自由&#xff0c;货币政策的独立性和汇率的稳定”那样&#xff0c;单机数据库也有一个不可能三角&#xff0c;那就是&#xff1a;①持久化 ②事务隔离 ③高性…

17款奔驰S400加装原厂无钥匙进入系统,提升您的便利性

奔驰无钥匙进入功能&#xff0c;只要身上装着车钥匙进入车内&#xff0c;车辆就能感应到钥匙的存在&#xff0c;这时只需按下启动键就可启动车辆了 奔驰无钥匙进入功能主要有两大使用体验&#xff0c;首先就是要注意主驾驶位车门的有效检测距离不小于1.5m&#xff0c;其他门钥匙…

BOM/PCB/Gerber比对功能再升级,华秋DFM新版邀您体验!

在电子产品开发过程中&#xff0c;方案选型、原理图设计、BOM制作、PCB设计再到PCB、PCBA的生产都会经历多次版本迭代。在硬件开发过程中BOM文件的迭代、PCB设计的版本迭代是最为常见的&#xff0c;所以对应的版本管控至关重要&#xff0c;只有清晰地了解不同版本的差异&#x…

武汉理工大学第四届ACM校赛

武汉理工大学第四届ACM校赛传送门 A-ST和TS回文问题 这种题都是有一定简单的规律的 如果每个字符都相等的话,肯定存在 如果字符串T的长度是字符串S的整数倍的话,如果字符串S是回文串或者T的长度是S的长度的奇数倍的话,那么存在 否则不存在 就自己构造字符串来找规律&…

121.实战网页图片优化

如上图所示&#xff0c;这个图标的内部尺寸为14791459&#xff0c;但是我们实际呈现的渲染的效果为570562&#xff1b;所以我们可以调整一下图像的大小&#xff0c;缩小图片的文件大小&#xff1b; 我们可以修改他的尺寸&#xff0c;文件的大小就缩小了。但是在网页上显示一点区…

软件测试之单元测试详解

目录 前言&#xff1a; 1、什么是单元测试&#xff1f; 2、什么是好的单元测试&#xff1f; 3、怎么写单元测试&#xff1f; 4、玩转单元测试 前言&#xff1a; 单元测试是软件测试中的一种测试方法&#xff0c;用于验证代码中最小可测试单元的正确性。它主要关注对程序的…

云上百世慧|「慧」聚智能制造的全流程质量管控(我们在7月31日等你)

在制造业的迅猛发展中&#xff0c;「质量管控」一直是企业面临的重要挑战和痛点。如何对「原材料、组件、生产过程和最终产品」进行严格的监控和控制&#xff1f; 稳抓行业痛点&#xff0c;优化质量流程 质量管控&#xff0c;是确保产品符合标准的关键环节。通过严格的监控和控…

卸载mathtype导致的word问题 MathPage.wll not found

MathType 6.9简体中文版是一款功能很强大的数学公式编辑器,但是因为不明原因,有时会出现找不到MathType.dll或者MathPage.wll文件找不到的错误窗口提示&#xff0c;而导致软件无法正常使用&#xff0c;本文将教您解决MathPage.wll或MathType.dll文件找不到的问题。 错误提示&a…

5 给属性赋值的几种方式

首先创建两个类&#xff0c;Person和Dog。为了可以被扫描到&#xff0c;在前面加入Component注解。 Person类如下&#xff1a; package jiang.com.helloworld.pojo;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.…

React 之 过渡动画

一、React的过渡动画 在开发中&#xff0c;我们想要给一个组件的显示和消失添加某种过渡动画&#xff0c;可以很好的增加用户体验 可以通过原生的CSS来实现这些过渡动画&#xff0c;但是React社区为我们提供了react-transition-group用来完成过渡动画 React曾为开发者提供过动画…

MySQL表/用户权限等基本操作

MySQL表操作练习题&#xff1a; 第一题&#xff1a; 具体要求如下所示&#xff1a; 1. 创建数据库Market&#xff1a; CREATE DATABASE Market;2. 创建customers表&#xff1a; 表结构如图所示&#xff1a; CREATE TABLE customers( c_num INT(11) PRIMARY KEY, c_name…