当前位置:网站首页>阿里软件测试工程师教你如何理解线程同步异步
阿里软件测试工程师教你如何理解线程同步异步
2022-08-05 23:15:00 【软件测试网】
案例描述
在日常测试中,当程序加载数据文件时,经常会出现页面卡住、程序不响应、程序崩溃等情况。,调查发现与程序进程中线程的同步和异步有关。
问题描述:
使用文件查看器打开压缩文件时,程序没有响应。
问题原因:
1、经过调查发现,文件查看器打开压缩文件时,会遍历压缩文件中的所有资源,在遍历过程中,出现资源解析错误会导致任务阻塞。
2、经过进一步了解,我们发现开发实现该功能时,资源遍历线程放入主线程同步加载,所以当资源遍历线程被阻塞时,主线程没有响应。
解决方案:
1、对资源遍历线程的阻塞场景增加保护,保证遍历线程的正常执行。
2、将资源遍历压缩文件线程从主线程放到子线程,形成异步加载,避免单线程失败导致主线程直接挂机,影响程序使用。
从以上案例可以看出,在逻辑实现中使用同步或异步线程对于提高程序效率和保护主线程非常重要。
扩展思维
1、开发层面的线程使用:
1) 使用线程的场景:
①当手机APP程序模块需要加载框架+内容时,使用线程效率更高;
②优化程序性能时,更倾向于使用线程。
2) 线程同步和异步在程序中的应用:
①主线程执行任务时,异步任务在子线程中执行。主线程可以在主线程上完成操作,而不需要等待子线程的结果返回,然后调用回主线程完成整个过程。这是线程的异步加载操作,可以提高执行效率(如下图);
②当主线程正在执行任务1时,需要等待任务1的响应完成后才能启动任务2。如果任务1被阻止,整个过程将无法继续。这样的同步线程对执行效率影响很大(如下图所示)。
2、线程对测试的影响:
1) 线程对用例设计的影响:
①数据流加载类的作用。这些功能大部分是异步线程,测试用例的设计可以从网络级和负载级来考虑。
②JS注入类的功能。这些函数大部分都是同步线程,所以可以从注入JS函数的有效性和JS注入的时机来考虑测试用例的设计。
2) 线程对程序性能的影响:
①从安全性和性能的角度来看,同步线程虽然解决了线程的安全问题,但始终存在判断锁,导致性能下降;
②与同步线程相比,异步线程对程序性能有积极影响,效率更高。一般建议在APP程序中使用异步线程,以保证程序效率。
注: 在安全和性能之间,安全是第一考虑因素,其次是性能。
理解程序实现的逻辑在测试工作中是必不可少的。只有更仔细、更清晰地了解,才能对检测方案有更全面的思考,从而保证产品质量。在这里,希望朋友们在技术上越来越好,在软件测试上越来越高!
边栏推荐
- 使用MQ的时候,怎么确保消息100%不丢失?
- MUI底部菜单栏 uniapp 底部菜单栏
- js全屏实现代码
- 风格迁移篇---重用鉴别器进行编码:朝向无监督的图像到图像转换
- About Invalid prop: type check failed for prop “index“. Expected String, got Undefined
- Basic use of CardView, DrawerLayout sliding menu, Fragment
- 认识一下MRS里的“中间人”Alluxio
- What are the common nested queries in MySQL
- 做个男人,做个成熟的男人
- 将trivydb转转化为mysql、sqlite的小工具
猜你喜欢
DB307S-ASEMI贴片整流桥DB307S
Day15 jenkins的简单使用
About Invalid prop: type check failed for prop “index“. Expected String, got Undefined
OCCT示例学习笔记3--Modeling项目
鲲鹏开发者创享日2022:鲲鹏全栈创新 与开发者共建数字湖南
视觉slam学习|基础篇02
Nanoprobes丨Nanogold 印迹和免疫化学技术
Exploration and practice of Redis fixed-length queue
Redies(四) session共享的优化
How the Internet of Things is Driving Agriculture
随机推荐
Vim编辑器常用命令汇总
Uni-app开发微信小程序的一些基础知识点(边学边更新)
Analysis of six methods of declaring variables in ES6
Why can't the expedited fee of 5,000 yuan guarantee the delivery time?
上课作业(8)——#631. 字符串匹配问题(strs)
60: Chapter 5: Develop admin management services: 13: Develop new functions of [Add/Modify Friendship Links, Interfaces]; (Add data to MongoDB) (To operate the Dao layer interface of MongoDB, you must
leetcode:291. 单词规律
蒙牛智慧牧场:最新鲜的牛奶来源于“数字牛”
工程师必看的示波器探头安全使用说明书
炫酷又高效的数据可视化大屏,做起来真的没那么难!丨极客星球
Insensitivity and Self-Reconciliation
What are the current pain points of domestic BLDC motor control solutions?
程序编译过程(扫盲贴)
狄兰·托马斯诗合集▷Do not go gentle into that good night
JuiceFS 在多云存储架构中的应用 | 深势科技分享
C# System.Reflection.Assembly动态加载资源文件
OCCT示例学习笔记3--Modeling项目
AT2377-[AGC014E]Blue and Red Tree【启发式合并】
三年软件工程真题
Nanoprobes Nanogold标签:助力显示SAP-1 的分布和功能