美文网首页测试技术专题
测试那些事儿(一)- 同步和异步

测试那些事儿(一)- 同步和异步

作者: 唐T唐X | 来源:发表于2020-02-02 16:01 被阅读0次

网络编程中同步和异步的定义:

同步:就是发起一个功能调用时,在这个调用没有得到结果之前,该调用就不返回或调用者不继续执行后续操作。
异步:异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态(轮询)、通知(消息)和回调来通知调用者。对于异步调用,调用的返回并不受调用者控制。

从上面的定义中我们可以看出,同步和异步可以由调用者控制,也可以由被调用者控制。以下我们就暂认为调用者是客户端,被调用者是服务端。

客户端在调用服务端接口后,如果需要等服务端的返回结果才进行下一步操作,那就是同步。如果不需要,无论服务端返回什么,客户端都会进行下一步操作,那就是异步。
服务端本身也可以控制同步和异步。对于一个需要长时间计算的功能,服务端会将它做成异步的,在客户端请求后立即返回个结果给客户端,这个结果没有任何实际意义,只是说明服务端接收到了请求。对于一个很快就能得到结果的请求,那就使用同步好了,返回结果中包含了本次请求需要得到的数据。

那同步和异步测试需要注意什么呢?

1. 用户体验

现在有很多的app都有审核的功能,需要用户们提供各种资料完成相应的认证。这些审核有自动审核、人工审核等等。自动审核一般较快,因为需要对比的数据都存在服务端,直接程序比对即可。人工审核就慢了,快的话几分钟,如果赶上个周末,2-3天都不一定。所以,针对自动审核和人工审核,就需要合理的运用同步和异步,达到最好的用户体验。
自动审核快,用户在提交自己的资料后,稍事等待应该就能得到结果,在客户端上最多也不会等待超过5秒,看到个loading等一会就好了。在这种情况下,使用同步就很合适,客户端在没有得到服务端的结果时就等待,直到审核结果回传过来立即展示在客户端上,用户的体验会很好,毕竟很快得到了答案。
而人工审核,我们不能寄希望于总有一个人一直在那里审核,就算有,快的话也要几分钟吧,毕竟查数据什么的都是人工。用户在这种情况下是等不了的,也不可能一直在这个页面上等着。所以异步就派上了用场,客户端发出审核的请求,服务端接收到后立即告诉客户端我收到了,但不可能给出结果。客户端不论有没有接收到服务端的请求,都会告诉用户请等待XX时间后查看结果,用户不需要一直在这个页面等着。直到服务端计算完成,再通过推送消息的方式通知到客户端,或者用户再一次进入认证页进行认证结果请求,才会得知自己的认证结果。

对于测试来说,如果遇到需要很长时间才能得到结果的接口,就要建议客户端使用异步方式请求,减少用户差的体验

2. 功能实现

试想一下,如果一个功能需要两个接口配合才能完成,有可能存在什么问题呢?我们从本次同步和异步的主题考虑来举个例子:
有一个新建联系人的功能,能够新建联系人的入口有很多,假设其中一个入口是通过上传照片创建联系人。这个入口要是想完成新建就需要调用两个接口,一个是上传照片接口(A),另一个是创建联系人接口(B)。试想一下,如果A是客户端异步调用的,那是不是有可能会出现B调用完成后A还没有调用完成的情况?如果是那样,那本次创建的联系人就无法实时关联A接口上传的照片,轻则用户体验有问题(客户端可以使用轮询拉照片等),重则就会出现创建了联系人却没有照片的BUG。

测试人需关注

对于测试来说,如果一个功能需要>=2个接口的配合,一定要考虑这些接口是同步还是异步的,无论调用者还是被调用者。否则就会出现接口间本该有的联系却没有的情况

相关文章

  • 测试那些事儿(一)- 同步和异步

    网络编程中同步和异步的定义: 同步:就是发起一个功能调用时,在这个调用没有得到结果之前,该调用就不返回或调用者不继...

  • OKHTTP

    OKHTTP 引用 权限配置 测试URL 同步请求 异步请求 异步get请求 异步测试post请求 Retrofi...

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 📕 史上最实用的JS笔记

    1. 同步与异步 同步和异步的区别是什么?分别举一个同步和异步的例子 同步会阻塞代码执行,而异步不会阻塞代码执行。...

  • iOS测试框架XCTest

    XCTest已基本满足单元测试和UI测试的需求,支持对同步流程、异步流程、性能的测试,UI测试代码的自动生成,代码...

  • 多线程-相关概念

    一.同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次方法调用,同步方法...

  • logback同步异步日志性能测试

    本地测试logback同步和异步日志输出的差别(6核32G) 数量级logback 同步日志(耗时ms)logba...

  • ES6 Promise 异步1

    - 异步 和 同步 promise对象: 用同步方式书写异步代码 promise 让异步写起来,像写同步一样流程...

  • JS 函数的执行时机

    1.同步和异步的区别 我们都知道JS里面有同步和异步的区别,怎么理解同步和异步呢。一家餐厅吧来了5个客人,同步的意...

  • JAVA高并发程序设计(一)

    一、同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次方法调用...

网友评论

    本文标题:测试那些事儿(一)- 同步和异步

    本文链接:https://www.haomeiwen.com/subject/hkhqxhtx.html