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

wiggins · 2019年01月09日 · 最后由 xenos_liu 回复于 2020年06月24日 · 7508 次阅读

前言

曾经作为测试小白,苦于寻找能够稳定简单进行 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 静态资源的相对路径,这样在测试报告中就可以直接访问测试截图

报告管理

报告中显示执行成功率

报告详情

日志管理

日志列表

日志详情

关于开源问题

源代码:https://gitee.com/wiggins_evan/alpaca

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

java 还是 python 的?

linlang 回复

python3.6 + django + mysql + js

wiggins 回复

期待开源

您好,哪里用到 rabbitmq 了?

用例系统很不错

期待开源

Ender 回复

运行测试套件用的 rabbitmq

simple 回复

谢谢关注

枫叶 回复

会开源的

linlang 回复

🌝 支持开源。

Pangluo 回复

ok

谢谢!

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

22楼 已删除

@seveniruby 请关注

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

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

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

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

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

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

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

hello 回复

加我微信 seveniruby 一起做

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

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

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

Scofell 回复

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

不知可否加入一起做?

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

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

同问 开源了吗

这个平台有没有开源

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