其他测试框架 openstf 的手机占用流程

匿名 · 2018年02月23日 · 最后由 sunny0330 回复于 2018年08月10日 · 4413 次阅读

最近读了 openstf 的源代码,从开始完全没有头绪到现在简单的操作可以快速找到相应代码,并能进行简单的改造,收获颇深,下面以 openstf 的手机占用流程为例,分析源代码的构成,希望对其他对 openstf 源码感兴趣的同学有帮助,不正确的地方也欢迎了解的同学指正
首先如 stf 官方文档给出的整个架构总共分成 app、api、websocket、processor、device、provider、triproxy 这样几个模块,每个模块具体的功能如下:
1、app 模块:使用的 ArgularJs,mvc 模型,主要用于前端的显示、逻辑处理和发起请求,http 与 socket 请求
2、api 模块:独立于前端页面的 api 接口模块,对外提供 http 接口返回手机列表信息、占用手机等,可以直接提供给第三方系统,采用了 swagger 框架,具体 api 接口可以参考官网文档
3、websocket 模块:主要用于与前端的通信,会和数据库进行简单的交互
4、processor 模块:负责后端功能逻辑的处理,在手机占用中主要接收手机的消息并根据不同的消息做不同的响应处理,返回给前端
5、triproxy 模块:代理模块,目前了解的功能中暂时没有特别大的作用,只是代理转发的作用
6、provider 模块:管理手机的接入,将手机与其他模块连接打通
7、device 模块:这个模块的进程启动时机比较特殊,并非部署的时候人工启动,而是 provider 进程 fork 出的子进程,在手机接入的时候
下面就是手机占用各个模块的交互流程

1、app 发起 group.invite 字符串

2、websocket 模块接收字符串并发送封装 GroupMessage 消息进行发送(消息采用 PB 的协议封装)

3、device 模块接收 GroupMessage 消息进行占用判断

4、唤醒设备中 service 进程
5、合理情况下发送 JoinGroupMessage 消息通知

6、processor 模块接收 JoinGroupMessage 消息进行数据库处理

7、发送到 websocket 模块通知前端 device.change 消息

8、app 接收到更新界面上状态的显示
具体 app 前端与后端交互的流程图参考如下:

手机占用 api 接口的流程图参考如下:

个人觉得 stf 的代码逻辑非常清晰,不过始终有一点不明白,为什么作者一定要用 nodejs 而不用其他的方式来实现呢?

共收到 18 条回复 时间 点赞

写的挺赞呀~

小小建议,流程类的用 UML 时序图,会比较直观。

想请教一下,想要改造 stf 的话,用什么 IDE 工具 对 stf 进行二次开发?

你不让作者用 nodejs,那用什么

codeskyblue 回复

问了下作者,作者是这么回答的

匿名 #5 · 2018年02月24日
陈恒捷 回复

谢啦 下次再写帖子的时候考虑一下:)

匿名 #6 · 2018年02月24日

我用的是 webstorm

谢谢,你用的 mac 吗?

匿名 #8 · 2018年02月24日

我用的 ubuntu

你是怎么将项目导入的,能给一下具体流程吗?

匿名 #10 · 2018年02月25日

和一般工程导入是一样的,你可以在网上搜搜 webstorm 的使用,调试的话一楼同学写的文章挺好的,你可以参考下:https://testerhome.com/topics/6395

大佬,可以写的时候顺便把代码的位置说一下吗?感觉根本找不到啊,app/.js 文件都找了,也没有看到你说的那个 “group invite”,新手小白,不知道怎么开始,望指导

sunny0330 回复

用 IDE 全局搜索 group.invite 不就行了

sunny0330 回复

VS Code, IntelliJ

water 回复

非常谢谢您😁

大佬,我最近刚刚接触这个 stf,看你说 stf 官方文档给出的整个架构总共分成 app、api、websocket、processor、device、provider、triproxy 这样几个模块。
但是我没有找到您说的这个官方的文档,能指一条明路嘛。万分感谢大佬!!

sunny0330 回复

加 qq 群 168170256,看群文件里有。

water 回复

哇塞,原来大佬们都在这个群

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册