Appium Alpaca 移动端 UI 自动化测试平台

wiggins · January 09, 2019 · Last by rebugggtest replied at August 15, 2019 · 2572 hits

前言

曾经作为测试小白,苦于寻找能够稳定简单进行UI自动化测试的工具平台。但开源项目少之又少。社区里也没有良好的解决方案。年初,受到几个开源项目的启发,萌生了干脆自己开发一个自动化测试平台的想法。18年7月份开始立项目。经过需求评审、软件设计、代码实现、测试、发布等阶段,到如今,项目完成经历了半年的时间,终于完成。作为社区一员,想把这个平台分享给大家,为社区发展贡献一份力量。

平台介绍

  1. 支持项目、页面、元素和用例添加、编辑、删除
  2. 支持测试套件的维护、运行
  3. 支持定时任务触发
  4. 漂亮的报告展示,快速发现失败的用例
  5. 支持运行时日志查看
  6. 支持anyproxy代理
  7. 异步运行测试套件
  8. 支持环境、资源、手机设备、系统配置管理

整体架构

  • 开发语言与框架:python3.6 + Django2.0 + mysql + js
  • 底层运行引擎:appium1.7.1
  • 运行方式:rabbitmq异步运行
  • 测试报告:extentReports
  • 运行设备:真机
  • 手机代理server:anyproxy

界面功能展示

Dashboard

Dashboard主要是展示平台基本报表,项目套件/用例数量报表与项目运行平均成功率

任务运行列表与平台cpu/内存监控

项目管理

项目列表

添加项目

页面管理

页面列表,页面是第二级单位。每个项目包含多个页面,每个页面中又有多个元素。

添加页面

元素管理

元素列表

添加元素,元素定位方式使用的是UIAutomator中的定位方式,暂时包括text、description、resourceId三种定位方式

用例管理

用例列表

添加用例,必要步骤的意义在于,如果找不到此元素,就立刻停止这个用例的执行并将用例置为失败。如果是非必要步骤,那么如果次元素出现就对其进行操作,如果没有出现,则跳过此步骤继续向下进行

套件管理

测试套件列表

添加测试套件

定时任务

定时任务列表

添加定时任务

环境管理

运行环境列表

添加运行环境

资源管理

资源列表,资源可以理解为测试中需要用到的各种文件。列表中包括:处理权限用的jar包、anyproxy代理rule.js文件和测试包

上传资源

设备管理

设备要设置代理,列表中8003/8005/8007分别是3个设备的代理。平台使用anyproxy代理访问网络,代理服务器为运行服务器。不可以使用一个代理端口,因为平台每次运行完成测试就会杀掉anyproxy服务。

系统设置

系统设置详情中截图存放的位置是项目中static静态资源的相对路径,这样在测试报告中就可以直接访问测试截图

报告管理

报告中显示执行成功率

报告详情

日志管理

日志列表

日志详情

关于开源问题

这个项目肯定最后要开源给大家的,但是现在项目刚刚写完,还需要大量的测试。单从代码质量这个角度,还需要重构一次。预计19年5月左右能做到开源。希望大家关注一下,并给予更多的意见,万分感谢。

  • 联系qq: 2406412038
共收到 23 条回复 时间 点赞

java还是python的?

linlang 回复

python3.6 + django + mysql + js

wiggins 回复

期待开源

您好,哪里用到rabbitmq了?

用例系统很不错

期待开源

Ender 回复

运行测试套件用的rabbitmq

simple 回复

谢谢关注

枫叶 回复

会开源的

wiggins #10 · January 10, 2019 作者
linlang 回复

🌝 支持开源。

wiggins #12 · January 10, 2019 作者
Pangluo 回复

ok

谢谢!

—— 来自TesterHome官方 安卓客户端

14Floor has been deleted
wiggins #15 · January 23, 2019 作者

@seveniruby 请关注

承诺做好就开源的项目,基本后来都没开源。
虽然你是霍格沃兹测试学院的学员,我还是要要提前给你打个预防针。

大家点了那么多赞了,我给你提几个建议
自动化测试平台化是时下比较火的一个方向,不过很多人在平台化的过程中常常丢失了很多原本具备的灵活性和应用场景。举个例子,你设计了自动化用例中的动作与断言,加了断言是个很好的事情,不过却丢失了数据驱动和参数化的能力,反而限制了应用场景。 另外就是对于企业已有的用例,如何过渡?

你设计了一个平台,尝试把自动化测试与测试管理融为一体,却常常把两方面的事情都搞的失去了灵活性和扩展性,最好收益反而不高,这是很多测开工程师容易犯的通病。我的建议是你把自动化用例进行更好的建模,或者融合已有的测试用例。不要强求所有的用例都从你的系统里去设计,这样更具开放性和扩展性。

我比较看好的平台我记得我之前跟学员群里讨论过

  • 自动化用例的封装要具备良好的设计。可以融合已有的用例,也不丢失已有自动化用例的灵活性
  • 异步任务处理有很多复杂性,与其自己设计,不如交给第三方组建,比如jenkins,通过调用jenkins的api实现更复杂的处理。
  • 开放。各个用例框架基本都遵从xuni风格或者bdd风格,通过定制可以轻松的支持更多用例框架导入会让整个平台更能海纳百川。
  • 报表灵活性,预定义报表需要,另外也要支持更灵活的多维度数据的自由组合报表生成

我本来是在TTF(TesterHome测试基金会开源项目)里规划了这个通用测试平台项目的,到时候可以看看能不能凑起人来一起做。

有来源项目的时候带我一个,javaphp都会点

hello 回复

加我微信 seveniruby 一起做

请问下真机运行需要连接数据线吗,anyproxy代理这块可以分享一下思路吗

wiggins #20 · January 24, 2019 作者

思寒你好:
首先抱歉一点,我不知道为啥我的个人信息里有霍格伍兹学院这个title。很遗憾我不是咱们的学员。
这个项目我现在没有开源的原因是我还在这家公司,那么出于职业道德的考虑,暂时不能开源。不过我年后可能会有变动,变动过后我一定会开源的。
对于你说的平台灵活性,我认真阅读了,确实有这个问题。后期我会考虑优化这里。

关于你的TTF里通用测试平台,如果有机会,很荣幸参与

wiggins #21 · January 24, 2019 作者
Scofell 回复

1.真机需要连接数据线
2.anyproxy思路:
1)主要解决页面跳转时,弹出公告类页面。
2)anypxoy主要用处是拦截返回响应,或者修改发送请求。思路是连接的真机提前设置好代理,然后针对需求手动编写rule.js文件。在设置环境时,加载rule.js。在运行套件时,针对找到的未使用的真机,读取设置,启动对应端口的anyproxy服务,这样真机就可以联网进行测试,并且在运行过程中,根据rule.js中编写的请求规则,进行相应处理

不知可否加入一起做?

请问,目前开源出来了吗?想学习一下

界面看起来跟HttpRunner有点像...

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up