作为测试人员,如何理解线程同步异步!点进来


背景

日常测试中,程序加载数据文件,时常出现页面卡顿、程序无响应、程序崩溃等情况,排查发现与程序进程中线程的同步异步有关。

案例描述

问题描述:

使用文件查看器打开压缩文件时,出现程序无响应问题。

问题原因:

1、经排查发现,在文件查看器打开压缩文件时,会对压缩文件中所有资源进行遍历,在遍历过程中某个资源解析出错,导致任务阻塞。

2、进一步了解后发现,开发在实现功能时,将资源遍历线程放在了主线程中进行同步加载,所以资源遍历线程阻塞时,导致主线程无响应。

解决方案:

1、对资源遍历线程阻塞场景添加保护,保证遍历线程正常执行;

2、将资源遍历压缩文件线程从主线程放到子线程进行,形成异步加载,避免单个线程失败导致主线程直接挂掉,影响程序使用;

通过以上案例可以看出,逻辑实现中使用同步或异步线程,对程序的效率提升以及主线程的保护是非常重要的。

扫描二维码关注公众号,回复: 12673498 查看本文章

延伸思考

1、 开发层面对线程的使用:

1) 使用线程的场景:

① 移动APP程序模块需要加载框架+内容时,使用线程更为高效;

② 优化程序性能时,更偏向使用线程;

2) 线程同步异步在程序中的应用:

① 主线程在执行任务时,将异步任务在子线程中执行,主线程无需等待子线程的结果返回,完成主线程上的操作即可,等待子线程的结果返回后,再回调给到主线程,完成整个进程。这是线程的异步加载操作,这样可以提高执行的效率(如下图);

② 主线程在执行任务1时,需等待任务1响应完成后,才能开始任务2,如任务1阻塞,则整个进程不能进行,这样的同步线程对执行效率有很大的影响(如下图)。

2、线程对测试的影响:

1)线程对case设计的影响:

① 数据流加载类的功能。这类功能多为异步线程,可以从网络层面和加载量级层面考虑测试case的设计;

② JS注入类的功能。这类功能多为同步线程,可以从注入JS功能的生效性和JS注入时机考虑测试case的设计。

2)线程对程序性能的影响:

① 从安全和性能层面考虑,同步线程虽然解决了线程的安全问题,但每次都有判断锁,导致性能降低;

② 相对同步线程来说,异步线程对程序性能的影响是积极的,效率更高,一般APP程序中都建议使用异步线程,保证程序的效率。

注意:在安全与性能之间,首先考虑的是安全,其次是性能。

结束语

了解程序实现逻辑是测试工作中必不可少的,只有了解的更细更清楚,才能对测试方案有更全面的思考,从而保证产品质量。在此希望小伙伴们技术越来越棒,在软件测试这条路上越走越高!


最后:测试资料送上一波

技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。

这份资料整体是围绕着【软件测试】来进行整理的,主体内容包含:python自动化测试专属视频、Python自动化详细资料、全套面试题等知识内容。对于软件测试的的朋友来说应该是最全面和完整的备战仓库了,这个仓库也陪伴我走过了很多坎坷的路,希望也能帮助到你。关注微信公众号:【伤心的辣条】,就可以直接获取了! 交流学习裙:902061117

如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

推荐好文:

包装成1年工作经验的测试工程师,我给他的面试前的建议如下

自动化测试到底要学什么?

为何跳槽不考虑腾讯?聊聊我和鹅厂的一点往事

自动化测试和手动测试哪个更高级?

新手必看:怎么写一个合格的测试用例?

python登录接口测试问题记录与解决 ( 干 货 )

猜你喜欢

转载自blog.csdn.net/weixin_50829653/article/details/114312106