本文由转转QA赵里京分享,原题“浅谈IM与相关测试方法”,下文进行了排版和内容优化。
目前转转的所有业务都在快速增长,支撑其用户服务的客服系统也同样在快速发展,以承接用户每天大量的问题。
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
WebSocket是HTML5出的一种在单个TCP连接上进行全双工(通信允许数据在两个方向上同时传输)的通信协议。
1)WebSocket与http协议区别:简单的说跟HTTP协议基本没有关系,WebSocket只基于HTTP,或者说借用了HTTP的协议来完成握手动作。
2)http长轮询:Client端发送request请求,server端收到后保持住此次请求x秒,x秒过程中有消息立刻返回。没有新消息就等待x秒,x秒后放开请求,Client端再发送请求, 不断反复;
3)WebSocket长连接:Client端发送http请求,http请求会比普通的http请求多出信息如下图,这个就是Websocket的核心了,告诉Nginx注意啦我发起的是Websocket协议。与Server端建立握手成功后连接建立并在不触发onClose事件情况下不会断开。
而WebSocket不存在以上几个问题,身份验证只进行一次。传输信息完全由业务方自定义,不会有冗余。当然WebSocket也有自身的问题,应用置后台、终止进程、手机重启、4g转wifi、断网等都会中断连接。所以WebSocket方案在实时性以及稳定性上更加合适IM,我们也选择的是WebSocket。
整体测试过程主要有三个测试阶段,“前置测试阶段”、“功能测试阶段”与“上线监控阶段”
所谓“前置测试阶段”就是在开发的过程中进行的测试。首先在需求评审完成后,我们基于WebSocket开发了UserWebSocketClient
实现功能有:用户与客服登录,相互发送包括纯文本、表情、图片、商品和订单消息,会话转移,坐席状态转换,用户排队等。基于这两个测试实例来不断的测试调试开发的版本。IM电竞,IM电竞官网,IM电竞注册,电竞投注平台,电竞博彩,英雄联盟竞猜
首先是WSClient发送onOpen事件与服务器握手建立连接,成功后发送心跳消息保持连接。同时触发onMessage事件,onMessage开始监听服务端发来的信息,我们可以在onMessage中进行需求实现。onOpen、onMessage为异步操作。
分别获取发送端,接收端发出和接收信息的时间戳,差值即为延迟时间。还可以给Server端施加压力的情况下计算这个时间会更加贴近线上的实际场景。
零基础IM开发入门(二):什么是IM系统的实时性?。6.3 可靠性所谓可靠性是指发送消息不丢失,异常提示准确等。
//一般一个brower实例即可,但为了测试时便于观察使用了两个,无头形式
<nch({< p="">
目前平台功能简单,后期也会不断增加功能,如用例管理,监控频率设定,手动触发用例等等。
对应的集群上线完毕后,会通过mq消息推送到监听服务,监听服务收到后会自动触发用例执行,回归线上功能,并返回结果。
最后,我们来简单介绍一下如何使用Jmeter进行WebSocket的性能测试。
如果需要用户认证,再加上用户的信息http信息头管理器,进行用户认证,连接和发送接收消息的基本配置搞定。就可以对server端进行websocket的连接和发送消息的压力测试了,非常简单。
[2]Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
[3]详解Web端通信方式的演进:从Ajax、JSONP 到 SSE、Websocket
[4]网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket