【性能测试】资深老鸟总结,常见并发问题汇总(一)

2023-12-01 17:12

本文主要是介绍【性能测试】资深老鸟总结,常见并发问题汇总(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录:导读

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


前言

1、并发测试的定义

并发测试的定义中,最主要的有两点:

点层面:
同一时间做某件事。例如:周一早上7:30,小学生要统一到操场升国旗。

线层面:
一个时间段做不同的事。例如:中午11:30-13:00,小学生有的跳皮筋,有的踢足球,但同时对服务器产生压力。

2、并发测试不等于性能测试

这个问题,我面试的时候,问过多个求职者,大部分求职者的第一反应都是说并发测试就是性能测试。

性能测试中把并发又分为负载和压力测试。虽然并发测试与性能测试有交集,但是,并发测试并不仅仅应用于性能测试,并发测试更多被运用于其他领域。

3、并发测试的分类

并发测试不仅仅是性能测试,它存在各个测试阶段,并且测试目的各不相同。

4、功能并发测试

要先进行测试单业务功能场景的并发测试,再进行混合业务功能场景的并发测试。
功能并发测试目的为验证系统功能是否符合需求规格说明书的要求。

5、性能并发测试

同时满足某些系统性能指标的前提下,让被测对象承担不同的工作量,以评估被测对象的最大处理能力及是否存在缺陷。

性能并发测试的目的为验证系统性能指标是否符合需求规格说明书的要求

6、稳定性的并发测试

判断测试系统的长期稳定运行的能力。
稳定性并发测试目的为验证系统稳定性是否符合需求规格说明书的要求。

7、异常性并发测试

模拟系统在较差、异常资源配置下运行,以评估被测对象在资源不足的情况下的工作状态。

异常并发测试的目的为验证系统的异常响应机制是否满足需求规格说明书的要求。

8、常见并发问题

当下流行一种时尚的软件设计理念,叫"微服务"。把复杂功能组合拆分成若干个独立的服务进行开发,然后有选择性的组合执行各服务。

微服务开发框架有利于并发测试设计,每个服务都是测试的切入口,可以单独执行。换句话说,测试切入口越多,越有利于测试场景的设计,有效执行并发用例。

并发切入口从以下三个方面查找统计:

1)客户端操作
使用工具捕获提交到服务器的请求,分析链接、参数进行测试。

2)系统接口
查阅相关的接口文档,开发并模拟其他系统功能进行测试。

3)定时任务
定时任务是开发框架,可能需要二次开发,以接口形式进行测试。

并发测出的问题,是一种综合症,往往有多种错误交织在一起的,所以不能乱用"药"。解决这类问题,通常分以下5个步骤(比把大象放冰箱多了2步):
①通过并发测试找到故障点;
②以故障点的现象分析问题原因;
③确定产生原因后讨论解决方案;
④根据解决方案实施修复;
⑤同并发测试验证修复情况。

4)事务并发的问题
由于事务处理而导致的并发问题,我们需要先了解什么是事务。

5)事务的定义
是数据库操作的最小单元,是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么执行,要么不执行,事务是一组不可再分割的操作集合(工作逻辑单元)。

6)系统内部事务控制
事务的控制好坏往往取决于码农们的开发技术、业务理解能力、专注程度,由于这类错误而导致的bug是非常低级别且严重的(必须出示黄牌 进行警告)!

我们举例来说明:使用APP订电影票。首先打开某团,找到某电影,选择位置,并点击"确定选择",然后进入到支付页面,提交订单,选择支付宝去支付,支付成功收到短信。

在前半段,用手机打开某团,找到想看的电影,选择座位,提交订单到支付页面,"选座"与"提交订单"都是某团内部接口。

如果将这两个作为一个事务,有以下四个特性:
原子性:要么都整,要么都不整。
一致性:锁定座位提交订单后必须生成订单号,取消订单则解锁座位。
隔离性:座位被别人选中,没有网络,操作日志记录失败等。
持续性:事务提交后永久存在,不会受到任何故障影响。

而作为测试人员,需要考虑的测试点有:
一个座位被多个账号锁定,生成了订单;
座位锁定成功,但没有生成订单;
取消订单,座位未解锁;
生成重复订单号;
操作日志没有完整记录所有行为。

我们再来分析订电影票场景的下半部分:在支付页面,使用了支付宝进行支付,支付成功后收到平台短信。

"支付成功"是外部接口,对于外部接口的事务控制,需要考虑两个系统的设计。

对支付接口进行并发接口测试,要考虑的事务问题:
同一笔订单,不能同时选择多种方式,不能进行多次支付;
重复通知上传支付结果(支付成功,支付超时),只能处理一次订单;
日志记录完整记录发送、接受的支付信息,与测试用例内容相匹配。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

在人生的舞台上,每个人都是自己的主角。所以,请勇敢地追求梦想,用努力和汗水去塑造自己独特的人生角色,让世界因你而更加精彩!

人生就像一场旅行,不在乎目的地有多远,只在乎沿途的风景和心情。因此,请珍惜每一段旅程,用微笑和勇气去面对每一个挑战,让生活因你而美好!

每个人都有自己的价值和意义,只是需要我们去发掘和实现。因此,请相信自己的潜力,勇敢追求梦想,用行动去创造属于自己的美好未来!

这篇关于【性能测试】资深老鸟总结,常见并发问题汇总(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/441980

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据