发起人:万能的苗
在19年年初的时候,用python写了一个自动化测试。对selenium做了封装,提供了一个exe的UI界面。当时是通过读取配置文件,无需更改代码。后来,用在升级冒烟测试,使原本3个人3小时的工作量缩短到了1个人一台电脑几分钟。这是我第一次见识到自动化的威力。而我本人也是特别懒的那种,能自动从来不手动。也开发了很多自动化的工具,比如自动Git提交代码、jenkins编译前自动修改某些文件的变量等等。
20年底,准备打造一个无需测试懂代码,只需根据业务逻辑,在可视化拼图界面生成python自动化脚本的开源自动化测试平台。
帮助广大的开发、测试人员解放双手,拥有更多的时间去学习、娱乐是本项目开发的初衷。
经过考察,没有一个使用go做后端的自动化测试平台开源项目。并且他们只是初步封装了selenium、appnium等框架,使用下拉框选项的形式生成脚本。无法满足更复杂的业务需求。
之前参加“链谷杯”区块链应用创新大赛,在决赛的时候初次接触到Google blockly可视化编程技术。这个拼图生成python代码的技术深深的吸引了我。感觉这个就是解决可视化编程问题的天生利器。
也正好赶上了学习go语言的节点。因为go天然支持并发和gprc通信,所以就打算用go做后端服务调用生成好的python脚本打造一个可视化编程的自动化测试平台。
此时,是实践go语言的最佳时机。
本项目采取GitHub开源方式,使用Apache2.0开源协议。
GitHub地址:
从测试用例管理到测试脚本执行,再到代码质量检测的一整套开源解决方案。
- 支持测试用例、评审、报表等管理
- 支持分布式动态扩容
- blockly二次开发,支持生成python自动化测试脚本
- selenium等自动化框架二次封装
- 支持用户权限分级
- 支持结果以邮件形式发送、bug邮件推送开发人员
- 支持测试结果统计,生成图表
- 部署支持Linux和windows双环境(服务器、个人PC)
- agent自研分布式中间件
- 主从选举
- 消息队列
- 异步通信
- 心跳检测
- 任务调度
- 服务发现注册
- 需要满足测试无需会python,通过页面就能生成python脚本。
- 满足高性能、高可用的现代软件设计理念。
- 提供测试的全环节平台化管理
- 从开发到测试到部署,全流程代码质量监测
-
每个节点都会有一个agent作为分布式协调组件。
-
脚本的分发和执行,都是通过agent实现Reactor模型来完成的。
-
master节点上有所有类型的本地消息队列
-
broker节点上有自己拥有角色类型的本地消息队列
- 二次开发blockly
- 考虑如何利用agent将脚本分发
- go实现Reactor模型
- 使用grpc通信,protobuf通信协议
- 使用Redis作为服务中介或使用go开发一个简易kv数据库作为服务中介
- go中文网有go实现一个Redis的例子
- 每个节点中的agent内置一个本地消息队列,用来缓存和队列执行分发的任务
- 由master主节点进行任务的分发调度
- 应充分考虑各节点资源的不同,使用加权算法分发任务
- 考虑节点资源不足时的拒绝策略
- 集成现有框架或参考keepalive模型自主实现
- 使用go的多线程并发技术完成高性能的压力测试
- 充分封装python的selenium框架,以支持blockly生成脚本
- 充分封装python的appnium框架,以支持blockly生成脚本
- 支持多协议,多请求格式的自定义推送
- 参考swgger的支持形式
- 最好可以将swgger集成
- 提供好用的管理页面
- 支持多权限分级管理和评审
- 使用可视化图形界面
- 根据脚本返回的数据(会存入mysql)生成页面图表
- 自动化测试结果通知
- bug通知开发人员
- 应当支持windows环境部署
- 应当支持云环境部署
- 应当支持linux和容器部署
- sonorqube、findbugs、pmd的支持
- 可以根据阿里代码规约插件二次开发IDEA插件
- 建议支持跨协议请求比如dubbo转protobuf等
- 请求文本格式校验,比如json的校验,xml的校验等等
- 使用Gin 作为web服务
- 与blockly配合使用
计划支持mysql和postgresql双数据库。