可视柜台web扩展增强_chromium多接口自动化验证.md 4.7 KB

目的:

  • 业务真实交互数据包含:BeginSession、SessionAck、register、getVar、setVar、request、requestAck、Info、broadcast、event、logEvent、LogWarn,使用某一业务进行验证难以全面。
  • 以往经验发现,进行了部分改动后。在基础业务中表现无问题,但在其他不常用的页面使用时,容易出现验证不全面引发的问题。
  • 所以设计的多接口自动化验证需要覆盖以上接口。
  • 安全和非安全的websocket,输入、输出值有少量不同,需要进行验证到
  • 在多次打开关闭websocket、register实体,需验证内部数据是否正确,是否已经正确释放。

实现:

  • 正向场景1:

    • BeginSession连接Guiconsole
    • 检查SessionAck,关联SessionAck规范内容
    • Register实体Guiconsole,关联Register规范内容
    • Request功能OpenLogSender
    • 检查RequestAck, 关联RequestAck规范内容
    • 在业务端应能持续收到broadcast
    • info功能OpenSender
    • 在业务端应能收到event
    • 验证SetVar设置UIState的值
    • 验证GetVar获取UIState的值
    • 验证LogEvent、LogWarn,Guiconsole订阅chromium发出的事件,通过broadcast发送
  • 错误场景1:

    • BeginSession连接实体Unknown
    • 检查SessionAck是否能够正确返回错误信息
  • 错误场景2:

    • BeginSession连接实体Guiconsole
    • 验证SetVar设置TerminalStage的值(无权限)
    • 应返回错误信息
  • 错误场景3:

    • BeginSession连接实体Guiconsole
    • Request、Info功能访问不存在的接口
    • 验证RequestAck、Info是否能够正确返回错误信息
  • 长时间多ws client场景:

    • 多次打开关闭websocket
    • register多个实体,关闭websocket,查看是否被正确释放
    • 多个ws订阅同一个实体的广播,查看broadcast是否正常发送给每一个ws client

内部数据验证:

  • ST、UAT上提供一个内部页面,能够实时检查chromium内部数据变量,防止数据未被正确释放
  • 页面上需要展示的数据包含
    • websocket当前的连接信息
    • 实体-sessionId对照表(应随实体的启动和关闭,表现为>0和-1)
    • broadCast注册表(为一列表,指示websocket订阅了哪些broadcast)
    • register注册表(指示一个实体对应了几个不同的websocketId)

终端当前涉及对外http连接包含:

spshell

  • upload log(上传互联网日志)
  • get terminal cfg(获取终端配置)
  • get VTM err msg List(获取终端错误映射列表)
  • get Token(获取token)
  • upload terminal cfg version(上传终端配置版本)

    alarm

  • send alarm(发送告警)

    accessAuth

  • GetmAccessAuthHost(获取会话密钥)

  • UpdateWKTask(更新mk)

  • access(准入)

  • init mk(初始化mk)

    guardian

  • upload log(上传互联网日志)

    CardIssuer

  • RegistCardWhileCaptureCard(吞卡登记)

  • SyncMaterialCount(同步物料计数)

  • JudgeCardType(查询卡片类型)

    HeartBeat

  • hand shake(心跳握手)

    ConunterConnector

  • call route(呼叫)

    IDCertificate

  • img check(图片检测)

    Record

  • recordinfo list upload(上传记录信息列表)

    Upgrade

  • SendSM3Task(发送文件SM3列表)

  • UpdateTaskStatus(更新任务状态)

  • QueryCurrTask(查询当前任务)

  • QueryNewPreTask(预查询新任务)

  • QueryNewContinueTask(继续查询新任务)

  • QueryTaskStatus(查询任务状态)

  • DownLoad Package(下载包) 文件下载,不上传链路信息

    UpLoad

  • queryTempFile(查询临时文件)

  • updateState(登记文件流水状态)

  • addUploadFail(登记失败文件流水)

  • queryPlan(查询上传计划)

  • upload file(上传文件) 文件上传,不上传链路信息

按照类型,可分位3类

  • 终端自行发起的http请求:自行生成第一跳,上传第一跳信息,并把下一跳信息传给服务端。
  • 终端由业务端调用,发起的http请求:终端不生成第一跳,更新当前跳信息,传递给下一层
  • 不需要上传链路信息:上传下载文件。

实现细节:

(1)改造http组件,如无任何链路输入,则把终端作为第一跳,并把链路信息上传;把第二跳信息传递给服务端。 (2)可输入链路信息,则更新当前跳信息,并把链路信息传递给下一层。 (3)改造规范参考:《分布式链路追踪技术规范》-http协议部分: TraceContext 采用 B3 染色方案,通过 Http Header 标识符传递TraceContext,所有的 B3 Header 都遵循 X-B3-${name}的头部格式 添加TraceContext包含: BusinessId、TraceId、SpanceId、ParentSpanId、Timestamp