移动端自动化测试调研报告

1. 场景

因为公司业务与微信公众号息息相关,要展开自动化测试等需求除了要解决Web端外还需要兼顾Android与Ios等常见移动端设备的自动化测试方案,并且目前已决定使用Selenium框架实现Web端自动化测试,为了解决移动微信前端自动化测试方案,现对方案选型展开调研,调研主要以查阅网上资源进行。

2. 工具选择

目前市面上主流开源的自动化测试框架有如下:

框架名称 支持平台 脚本语言
Macaca PC,IOS,Android,Hybrid Js、Java、Python
Appium PC,IOS,Android,Hybrid Ruby、Python、Java、Js、OC、PHP、C#(.Net)
Selenium PC(WebApplication) Java,C#,Python,Ruby,PHP,Perl,JS
Selendroid Android Java,Python,Ruby
Robotium Android Java
PhantomJS PC(WebApplication) Js
Calabash IOS,Android,Hybrid Ruby
KARMA PC(WebApplication) JS
2.1. 支持移动端

因为此次调研仅考虑移动端自动化测试,仅限于PC端webApplication的几个框架就不可避免的要排除掉了,这其中包含Selenium,PhantomJS,KARMAR。

2.2. 支持多平台

此外,对于当前市场Android与IOS并存的情景,需要保证不同平台项目都能正常运行,所以只提供单一平台的Selendroid,Robotium可以暂时不用考虑了。

2.3 学习成本

经过上面两次筛选,我们的选择剩下了Macaca,Appium,Calabash。但是由于当前测试人员对Ruby语言认知较少,选择Calabash的话,需要花费更多的额外时间学习语言,由此Calabash也排除在外。

剩下Appium,Macaca两种工具,现对两者进行对比

3. Appium与Macaca对比
3.1 基础资料

3.1.1. Appiumhttps://testerhome.com/topics/1045
3.1.2. Macacahttps://macacajs.github.io/zh/introduction

3.2 环境搭建

3.2.1. Appium: https://testerhome.com/topics/1045
根据教程搭建的环境能正常运行案例。
3.2.2. Macaca: https://testerhome.com/topics/7898
需要配置众多东西,搭建好环境之后无法运行实例,询问业内使用过Macaca的朋友,得到的反馈是目前还存在很多问题,建议我先去国内移动端自动化测试社区TesterHose排雷踩坑,研究了半天后没法解决问题(资料少)

3.3 实例对比

3.3.1 Appium: https://testerhome.com/wiki/apiumpythonapichinese

from appium import webdriver  
import time  

#  配置
desired_caps = {}  
desired_caps['deviceName'] = 'GT-N7100'  
desired_caps['platformName'] = 'Android'  
desired_caps['version'] = '4.3'  
desired_caps['appPackage'] = 'com.job.android'  

#  实例化浏览器
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  

#  寻找元素并操作
driver.find_element_by_id("com.job.android:id/closebtn").click()  
driver.find_element_by_id("com.job.android:id/tv_msg_remind_right").click()  
driver.find_element_by_id("com.job.android:id/loginbutton").click()  
driver.find_element_by_id("com.job.android:id/login_username").send_keys("123456")  
driver.find_element_by_id("com.job.android:id/login").click()  

3.3.2 Macaca: http://macacajs.github.io/macaca-wd

#coding=utf-8
import unittest
import time
from macaca import WebDriver

desired_caps = {
    'platformName': 'Android', # iOS, Android, Desktop
    #'browserName': 'Chrome',    # Chrome, Electron
    "package": "com.huawei.iptv.stb",
    "activity": "com.huawei.iptv.stb.ui.HeadTabActivity",
    "deviceName":"192.168.1.105:5555",
}

server_url = {
    'hostname': '127.0.0.1',
    'port': 3456
}
driver = WebDriver(desired_caps, server_url)
driver.init()
driver.element_by_name("直播").click()

总的来说,两者的API相似度很高,没有什么特别之处

3.4 扩展功能

3.4.1 Appium: 无扩展,仅提供基础框架,其余需要自己搭配其他框架实现
3.4.2 Macaca: 集成了较多功能,详情查看https://macacajs.github.io/zh/coverage,但使用门槛较高

3.5 其他因素

3.5.1 框架维护
Appium属于国际通用的开源框架,团队应该会长期维护,
Macaca属于阿里开源框架,不清楚会不会维护,不排除系统导致框架不可用的局面
3.5.2 功能比较:Appium在功能上要优于Macaca

4.0 工具抉择

建议使用Appium作为移动端自动化测试框架,原因如下:

  1. Appium作为老大哥,功能上较为完善,文档于资料等较为齐全
  2. Appium支持较多语言,特别是C#,与公司开发语言一致,对一些疑难杂症可以寻求开发帮助
  3. Appium直接封装Selenium框架接口以兼容移动端自动化解决方案问题,与Web自动化所选择的Selenium框架统一
  4. 公司已经搭建Jenkins环境,并且Appium也有工具解决APP抓元素问题,所以Macaca集成的工具对现阶段我们而言用处不大,还需要额外投入更多成本去学习怎么使用,得不偿失。
  5. 避免陷入Macaca后续不可用的尴尬局面。
    Macaca目前还属于快速迭代的时期,还不太稳定,鉴于此,建议使用Appium并且持续保持对Macaca的关注。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 导语 前面写了两篇文章介绍了个人基于Macaca在UI自动化上的实践心得,那我们为什么会选择了Macaca呢,这篇...
    君禾_123阅读 2,397评论 1 31
  • 16班在收集2年践行感言,最关键的信息是让每个人都写出2023后,希望自己是什么样子。 未来可期,是每一个人努力往...
    60分妈妈Qing阅读 189评论 0 0
  • 123
    一筒_d74c阅读 41评论 0 0
  • 如果你得了绝症,时日不多,而一场风险极大的手术可以拯救你,你会去做这个手术吗? 成功,便能活。 失败,则当场死去。...
    Winter_77阅读 117评论 0 0
  • 2017.6.13 星期二 多云 1:今天学习第二天,一天都在外面跑,四处加点附近人,下午到晚上我们去做了地...
    罗敏儿阅读 153评论 0 0