自动化工具 测试开发的成长之路 - 自动化一站式平台 (UI、接口)

搭八 · 2018年12月06日 · 最后由 搭八 回复于 2019年10月18日 · 3114 次阅读

前言

在自动化测试过程中,随着对接的自动化需求不断增加,测试用例数量显著上升,参与自动化测试的人也越来越多,多人协作就会碰到很多问题,包括脚本、数据、版本、项目整合、持续集成等,而且也增加了后期维护的成本。为了能解决这些问题,开发一个自动化管理平台来统一对这些代码、数据、版本、集成进行处理,是保质提效的不错手段。这篇博客,给大家介绍一下本人针对公司的自动化需求开发的自动化管理平台。

平台功能

UI 自动化 :

特点:

1、用例支持增删改、维护、调试、结果等等

2、用例实时日志

3、用例定位元素、业务采用 po 模式

4、用例支持多环境复制功能 (可根据项目版本进行多套数据保存)

5、用例调试带日志、截图、生成报错记录

6、用例支持执行脚本浏览器操作回放

7、用例支持局部/全局变量

8、用例支持分布式用户本地电脑上浏览器启动 (默认服务器启动)

9、用例执行状态下可进行中断用例脚本操作

10、用例可进行注释

11、用例支持拖拽、复制

12、用例可进行功能用例的描述

13、用例支持多线程

14、用例脚本支持判断、循环、数组、数据库对接、接口对接等等

15、用例与用例之间可互相进行业务调用

16、测试计划进行版本控制(计划完成时可设置直接将结果发布至钉钉)

17、测试计划结果报告展示

18、支持与 jenkins、钉钉、TestLink 对接,进行自动化发布流程

接口自动化:

因为接口平台还处在开发阶段,功能还不完善,这里只介绍下大体框架和思路。

整体框架
语言 JAVA
服务端 spring + springmvc + mybatis + mysql + 第三方 jar 包 (有点多,我就不在这里阐述了,想要具体了解可以联系我) |
前端 JQuery + AJAX + Bootstrap + 第三方框架 (具体了解可以联系我) |

UI 自动化展示

1、首页(整体的设计结构、用户操作手册、操作占比耗时统计、APP 包)


2、元素对象页面

3、用例编写调试界面

用例的增删改页面、测试数据使用变量、定位值使用 PO、还有业务互相调用、用例执行过程中可以进行中断和本地浏览器启动

用例还可以根据自己项目本身的环境来定义测试环境、目前浏览器只支持 chrome 和 firefox

用例执行支持多个线程并行执行、日志是实时的、执行完成后自动更新记录日志、截图、结果

用例添加界面、每个选择的动作非必填项都被禁止输入、输入框内容可实时放大查看编辑

功能用例编写

局部/全局变量

本地浏览器 (用户电脑执行脚本)

操作记录统计

testlink 关联

多线程并行执行

环境配置

4、用例多环境复制功能

用例可以根据项目需求进行用例数据存档,因为我这边需求只需要存一份预发布环境的用例数据,所有只有一个

5、UI 测试计划

以计划为基础作为版本管理,这个就不多做解释了

6、UI 测试计划结果

计划结果完成后的结果展示页

7、钉钉机器人

8、钉钉报告展示

接口自动化展示

视频演示

共收到 65 条回复 时间 点赞
搭八 #71 · 2019年10月18日 Author
Terrydgl 回复

边学习边开发大半年左右

你花了多久搞出来的有点 6 啊大佬

搭八 #69 · 2019年08月30日 Author
徐汪成 回复

要是个人的话开源是没什么影响

个人的话应该开源没多大问题把。

搭八 #67 · 2019年08月22日 Author
MarvinWu 回复

我们公司内部一直在使用,也一直持续更新

这个平台目前使用情况如何,还在继续维护吗?

65楼 已删除
搭八 · #64 · 2019年04月28日 Author
仅楼主可见
搭八 #63 · 2019年02月26日 Author
果冻 回复

过奖了过奖了!

搭八 #62 · 2019年02月26日 Author
泰斯特 回复

windows 上的,视频回放是用 javacv 实现的

厉害了厉害了!

仅楼主可见
搭八 #59 · 2019年01月21日 Author
gaomeijun 回复

1、没用 testng、多线程异步
2、用例顺序和依赖是用户前端选择来设定的,后台只需要根据这些条件进行匹配执行就可以
3、还有用例中有个业务调用功能,这个也是另一种的依赖方法

请问下是否有用到 testng?如果没有用到 testng,楼主是在后台用多线程执行的用例吗?testng 提供的一些功能,例如 setup teardown 用例执行顺序 用例间的依赖是怎么实现的呢?

搭八 #57 · 2019年01月11日 Author
Scofell 回复

seleniumgrid

请问一下分布式用户本地浏览器启动,是怎么实现的。

搭八 #55 · 2018年12月27日 Author

暂时不开源的,涉及东西太多了

开源吧,大神

53楼 已删除

一个人完成,那很棒啊。业余时间加班

51楼 已删除
搭八 #50 · 2018年12月24日 Author
少女 回复

没开源噢

不懂楼主的团队为啥要用这背景,同样做过平台的。你们可以高大上简洁的,变的有点山寨感。

没开源吗

秦川风 移动端自动化多机并行测试-Part1 中提及了此贴 12月17日 14:52
搭八 #46 · 2018年12月17日 Author
秦川风 回复

是啊,这里主推的就是测试的,不像博客太广泛了

搭八 回复

对测试而言还是这里更专业

搭八 #44 · 2018年12月16日 Author
秦川风 回复

是啊 在这里混个脸熟

果然,楼主也在这里😄

搭八 #42 · 2018年12月14日 Author

webscoket 了解一下

仅楼主可见
搭八 测试开发的成长之路 - 入门篇 中提及了此贴 12月11日 16:03
39楼 已删除

请问能留个联系方式交流下吗, 我有自学一些技术, 就是具体使用起来, 不知道该用哪些技术

搭八 #37 · 2018年12月10日 Author
紫川 回复

1、用例本身就是共享的(除非限制了权限查看处理),用例复制你可以理解为将整条用例进行复制,该用例关联的变量、测试数据、用例等等的所有数据都会一并移到一个全新的环境下
2、做这个功能是因为实际场景会遇到测试环境已经开始新的迭代,而预发布还是之前的版本(这个时候线上出了问题需要自动化脚本去追溯问题),可是自动化脚本已经改成新迭代的数据了,所以将上一次迭代的脚本数据进行保留追溯

观摩学习下。楼主的用例复制功能,如果多人使用,是不是可以理解为共享功能?那么需要共享的那条测试用例,测试数据共享么?如果共享,数据是否更新,是定格共享时的数据,还是拿最新的数据?

搭八 #35 · 2018年12月10日 Author

1、自学,培训机构教的都是基础系统化的 (个人不建议去培训),只有自己学习的时候遇到坑解决后你的提升才能比较显著
2、力不从心说明你没学好,建议边学边写

仅楼主可见
搭八 #33 · 2018年12月09日 Author

是的前端框架是必须要掌握的,我也是去年才开始学的,这种东西需要静下心来循序渐进,加油看好你

仅楼主可见
搭八 #31 · 2018年12月09日 Author

1、这平台的话确实要看公司实际情况,有足够人力物力才有开发的意义。
2、框架和部署是要放在一起的,因为你这套东西归根结底是个 web 项目。

搭八 #30 · 2018年12月09日 Author

目前是公司项目,不开源的 不好意思哈

仅楼主可见
仅楼主可见
搭八 #27 · 2018年12月07日 Author
cainiaowu 回复

😆 😆

大佬膜拜啊!!!!!

胖虎 回复

1、首先我只是一名测试
2、其次这平台是我自己独立堆出来的
3、我的平台只是为了自身公司针对性开发的
4、我没打算包装也没准备宣传,只是为了给大家提供点思路

搭八 #24 · 2018年12月07日 Author
小抄 回复

然并卵啊

先夸奖 1 下,一些功能和想法挺全的,平台的功能细节有亮点。
再吐槽 1 下,你完全没有任何产品设计的思路,做出来的东西给人的感觉,仅仅是几个程序员堆代码堆出来的小工具页面。既不会包装,也不会推广宣传。

搭八 回复

浏览排行已经第四了 很强啊

搭八 #21 · 2018年12月07日 Author
adair 回复

你的称呼,我已经知道你是谁了😒

搭八 #20 · 2018年12月07日 Author
小抄 回复

你的名字太明显了😒

搭八 回复

渣哇大佬,测试新人何足挂齿

为大佬捧场

搭八 #17 · 2018年12月07日 Author
adair 回复

你是哪位报上名来😒

搭八 回复

居然炸出萧老哥😂

搭八 #15 · 2018年12月06日 Author
槽神 回复

萧老哥 哪里都是你😒

搭八 回复

试试

.mian-content {
  backgroud-color: #FFFFFF30;
}

既保留背景的朦胧美,又不至于让人看着太恶心😏

搭八 #13 · 2018年12月06日 Author
hello 回复

好多吐槽背景的😓

背景图换一张感觉更好点

搭八 #11 · 2018年12月06日 Author
End 回复

暂时不开源!

楼主开源嘛

Jerry li 回复

以 key value 的形式进行存储在数据库,然后调用

好奇你们的 PO 对象是怎么管理? 数据库里保存,还是代码编写?

徐汪成 回复

简洁已经无法满足公司的需求,所以这是针对自身公司来设计的

simple 回复

这样做的意义主要在于将数据统一管理,多人共同协作,降低维护成本后人工成本

李秋 回复

为什么不代码写,开头已经说明了

看着像是 Grafana 做的,楼主你 UI 自动化弄成平台可视化,感觉是为了提示操作便利性,牺牲了扩展性和灵活性啊

操作这么麻烦,为什么不直接写代码?

我喜欢简洁点的。

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