测试角度的并发和幂等问题总结

本文作者刘静媛分享了在金融业务领域测试中遇到的并发和幂等问题,包括并发的定义、优缺点、并发编程的应用场景、并发测试的挑战以及幂等的概念、引发原因和控制关键。并发测试难点在于分析、测试和定位问题,幂等问题的控制关键在于唯一键+状态机。文章强调了在设计资金系统时幂等的重要性,以及在测试中对幂等性的关注。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文来自网易云社区


作者:刘静媛


前言  

   从事金融业务领域的测试工作过程已经有半年时间了,在此期间遇到了各种类型的问题,个人认为在日常测试工作中,特别是涉及资金的业务领域内,测试人员需要格外关注的方面有:系统的并发问题、幂等问题、性能问题及资损风险等。下面就是这段时间以来,在并发问题和幂等问题上站在测试角色上的一些积累和总结。


一、并发问题  

1、什么是并发?

   并发(Concurrency)是指系统在同一时间段内,同时执行多个计算程序。为了更好的解释并发的概念,引入并行(Parallelism)概念来进行对比分析。

下图较为形象的给出两者的工作机制:

20180906103841124e5c47-0c8d-4005-a9cc-663a63ac299e.png              

   在多个线程同时工作时,单个CPU硬件环境下不可能真正同时的有多个线程在工作,此时并发机制实际上是将CPU的运行时间划分成若干时间段,不同的时间段交由不同的线程使用,而其他线程此时属于挂起状态。在多个CPU的硬件环境下才有可能实现多个线程真正的同时工作。


2、并发与并行特点  

并发 并行
宏观层面同时执行 严格的同时执行
解决多个不相关的任务 一般解决同一个任务
资源和数据共享 资源和数据隔离
单、多处理器均可 必须多处理器
彼此需要交互通信 不需要交互通信
重点是组合协调 重点是执行

3、并发的优缺点

<
<think>嗯,用户让我介绍一下如何根据博客系统项目设计黑盒测试白盒测试。首先,我需要回忆一下黑盒白盒测试的基本概念,确保自己理解正确。黑盒测试主要关注功能,不需要看内部代码,而白盒测试则要了解内部结构,针对代码路径、条件等测试。 接下来,用户提到的是博客系统,所以得先考虑这样的系统通常有哪些功能模块。比如用户注册登录、博客文章的增删改查、评论功能、搜索、权限管理等等。需要把这些模块列出来,然后分别设计黑盒白盒的测试用例。 对于黑盒测试,可能需要从用户的角度出发,测试每个功能是否符合预期。比如注册时输入无效邮箱是否提示错误,登录失败的处理,发布博客的流程是否顺畅,编辑后是否保存正确,删除是否有确认提示等等。还有界面测试,比如不同浏览器、设备的兼容性,以及性能测试,比如多人同时发帖时的响应时间。 然后是白盒测试,这时候需要考虑代码结构。比如用户管理模块中的密码加密函数,需要覆盖各种条件,比如空密码、特殊字符等。博客发布模块的输入校验,可能需要检查XSS过滤SQL注入防护。这里需要设计用例覆盖所有条件分支,比如if-else语句的所有情况,循环的边界条件,比如空列表或者最大限制。 另外,可能需要提到具体的测试方法,比如黑盒中的等价类划分、边界值分析,白盒中的语句覆盖、条件覆盖等。还要考虑集成测试,比如各个模块之间的交互,比如发布博客后是否在首页正确显示,评论后通知功能是否正常。 需要注意的是,用户可能希望了解具体的例子,所以应该举一些实际的测试用例,比如用户注册的不同情况,或者博客编辑的异常输入处理。同时,要区分黑盒白盒的不同侧重点,黑盒更关注外部行为,白盒更关注内部逻辑。 还要确保回答结构清晰,分点说明,可能用序号或项目符号列出各个测试方法对应的例子。同时,语言要口语化,避免过于技术化的术语,但又要准确。可能需要检查是否覆盖了博客系统的主要功能模块,以及测试的全面性。 最后,总结一下两种测试方法的结合使用的重要性,确保功能正确代码质量。可能还需要提到自动化测试工具,比如Selenium用于黑盒,JUnit用于白盒,但用户没有特别问工具,所以可能不需要深入。</think>根据博客系统项目的特点,我会按照以下结构设计黑盒测试白盒测试(严格遵守LaTeX格式要求): # 一、黑盒测试设计(功能驱动) $$测试对象 = 博客系统前端功能 + 用户可见交互$$ **1. 核心功能测试用例** - 用户注册:$测试用例 = \lbrace 有效邮箱/无效格式/重复注册 \rbrace$ - 文章发布:$验证约束条件 = \lbrace 空标题/超长内容/非法标签 \rbrace$ - 评论系统:$边界值分析 = \lbrace 0字符/1000字符/XSS注入检测 \rbrace$ **2. 业务流程测试** ``` 发布流程 = 登录 → 写文章 → 添加标签 → 预览 → 发布 → 验证首页展示 编辑流程 = 定位文章 → 修改内容 → 保存草稿 → 版本比对 ``` **3. 兼容性矩阵** $$兼容组合 = \begin{pmatrix} Chrome & Windows 11 \\ Safari & iOS 16 \\ 微信浏览器 & Android \end{pmatrix}$$ # 二、白盒测试设计(代码驱动) $$覆盖率目标 \geq 90\%\ 语句覆盖 + 分支覆盖$$ **1. 关键模块测试** ```python # 用户权限验证函数 def check_permission(user, post): if user.is_admin: # 分支1 return True elif post.author == user: # 分支2 return not post.is_locked # 条件组合 else: return False ``` 测试路径覆盖: - 管理员访问 - 作者访问未锁定文章 - 非作者访问已锁定文章 **2. 数据库操作测试** $$SQL注入防御验证 = \lbrace 特殊字符过滤 \rightarrow OR 1=1 \rightarrow 结果集验证 \rbrace$$ **3. API接口测试** ```javascript // 文章点赞接口 POST /api/like 测试断言 = { 响应码: 200/401/403, 等性: 重复请求检测, 并发测试: 100用户同时点赞 } ``` # 三、测试策略结合 $$测试有效性 = 黑盒测试(功能验证) \cup 白盒测试(逻辑验证)$$ 1. 先执行黑盒测试验证核心业务流 2. 根据代码覆盖率报告补充白盒用例 3. 重点模块采用灰盒测试(参数边界+代码路径结合) **示例组合测试**:文章搜索功能 - 黑盒:验证模糊搜索/特殊字符处理/空结果展示 - 白盒:覆盖倒排索引构建算法/Trie树查询路径 建议使用测试金字塔模型: $$自动化测试占比 = 70\%\ 单元测试 + 20\%\ 接口测试 + 10\%\ UI测试$$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值