分享

面试|Appium移动端自动化测试,搭建模拟器

 wenxuefeng360 2022-07-02 发布于四川

在《面试|Appium的这些内容一定要了解》,分享了Appium环境搭建的服务端,接下来继续分享,留的一点小尾巴「测试设备」。

我们部门在刚开始成立时,测试设备非常匮乏,因为要等做完设备调研和选型之后,才能进行采购。

会涉及的硬件设备有:ROS、打印机、扫码枪、摄像头、广告电子屏、取餐叫号机等。

从这些设备可以看出,用户群体属于B端,主要是加盟商门店的工作人员,涉及的功能有:接收订单、查看订单详情、备餐、通知取餐、设置打印机、店员考勤打卡等

这些功能的核心是ROS,它连接了打印机、扫码枪、摄像头等。

在《实战|Python+Appium实现多设备运行,我有介绍打印机的选型标准,关于ROS的,我们后续再分享吧。

图片

ROS装载的操作系统是安卓系统,说到模拟安卓系统,事情就简单啦,模拟器有很多,比如:MuMu、夜神、逍遥等。

我刚开始接触Appium时,用的是夜神,后来它不支持微信了,就换MuMu来用了。

关于它们的使用,就不赘述了,下载下来进行安装启动,和手机一样。

如果要安装第三方应用,把下载下来的APK文件,拖拽过去就可以了

这些模拟器都是基于Android的某个特定版本进行改造的,比如MuMu的Android版本是6.0.1,它是网易基于安卓6出品的游戏专用模拟器。

如果想模拟多厂家、多版本、多屏幕和尺寸,且运行比较稳定,可以考虑:Genymotion和emulator

  • Genymotion,可以模拟不同的尺寸,不同的版本,不同的运营商品牌

  • emulator,是Android SDK自带的模拟器

图片

Genymotion是一套完整的工具,它提供了Android虚拟环境。运行需要依赖VirtualBox,所以安装之前需要先安装VirtualBox。

去网上下载Genymotion,安装完成后启动,点击右上角的+号按钮,进行新建模拟器。

图片

选择一个设备,点击「Next」,弹出的确认界面会显示,即将创建的模拟器的配置,再次点击「Next」,Genymotion会将该模拟器对应的镜像下载下来并创建模拟器。

图片

创建完成的模拟器,会展示在如下图所示的列表中,选择一个模拟器,点击「Start」进行启动。

图片

在Genymotion模拟器中安装应用,和MuMu一样,只需要将应用APK文件,拖拽过去就可以了

新建模拟器有x86和ARM这两套指令集供选择,真机通常都是ARM的,因为ARM针对续航能力有优化,使得电池更耐用

Genymotion模拟器,以及市场上大部分以快著称的Android模拟器基本上都是基于x86架构的,因为x86的性能会好一些,比如我们的电脑都是x86系统

x86架构的模拟器,无法兼容ARM架构的APP,但市场上大部分APP,都是基于ARM架构,也就意味着x86模拟器无法兼容市场上大部分模拟器。

比如:微信,豌豆荚,如果拖拽其安装文件APK,到Genymotion模拟器,会报错:

图片

那么,能不能让Genymotion运行ARM架构的APP呢?

答案是,可以安装一个ARM转换包它可以让x86架构的模拟器运行ARM架构的APP

百度网盘链接: 

https://pan.baidu.com/s/1VzAX6KRnNQtK7SDalkQ9QA

从上述网盘地址,下载zip包,将其拖拽到Genymotion模拟器窗口上,在弹出对话框点击确定,重启模拟器即可解决。

图片

此外,我们还可以使用Android SDK自带的emulator模拟器,自带的比较原汁原味,而且支持创建ARM架构系统的模拟器。

图片

图片

使用如下命令查看模拟器列表:

emulator -list-avds

使用如下命令启动模拟器

emulator -avd 模拟器名称emulator @模拟器名称

图片

上面要用命令行进行操作,比较费劲,我喜欢直接安装和使用Android Studio,方便创建和管理emulator模拟器。

图片

图片

图片

图片

图片

总结一下,分享了3种模拟器:

  • MuMu或夜神,由厂商基于特定版本改造的,所以不适用模拟:多厂家、多版本、多屏幕、多尺寸

  • Genymotion是基于x86架构的模拟器,无法兼容ARM架构的APP,若要安装arm架构的app,需安装ARM转换包

  • emulator是Android SDK自带的模拟器,可以创建x86架构模拟器,也支持ARM架构系统的模拟器,我们可以使用Android Studio来管理模拟器

图片


另外,MuMu和Genymotor,不能模拟打电话发送短信;emulator和真机可以。

真机运行稳定且快速,但若要对驱动真机进行自动化测试,得在真机开启USB调试模式,而且用USB线连接容易掉线,而模拟器不需要开启USB调试模式,也不存在掉线问题。

在《面试|Appium的这些内容一定要了解》,Android SDK的结构组成,在tools里面有很多工具monkeyrunner、emulator、uiautomatoviewer等,adb也在其中。

为便于使用我们会将tools和paltform-tools都配置成环境变量。

adb的全称为Android Debug Bridge,即安卓调试桥,可以实现PC机和手机端的通讯。

补充几个adb常用的命令,也是面试经常会提问的:

adb install /Download/xxx.apk(apk的路径)  # 安装apk,拖拽apk到模拟器,也能自动进行安装adb install -r /Download/xxx.apk(apk的路径)  # 如果该应用已经安装,需要加参数-r进行覆盖安装adb uninstall 包名  # 卸载安装,如果已安装该应用的高版本,那么需要先卸载,才能安装上低版本的apk,可以手动卸载,也可以用命令进行卸载adb -s emulator-5554 shell  # 如果只有一个设备,执行【adb shell】可进入到设备的Android Shell命令模式,如果有多个设备,需加-s参数,指定设备的名称

我们用以下命令查看设备的连接状态:

adb devices
  • device状态,表示连接成功

  • offline状态,表示未授权

发现设备,出现offline状态,可通过以下命令重启服务:

图片

连接设备所用的命令:

adb connect 127.0.0.1:7555

这里的[127.0.0.1]代表的是本机,[7555]是端口号,

各类模拟器的默认端口号:

Genymotion模拟器 5555
夜神模拟器 62001/52001
海马玩模拟器 26944
mumu模拟器 7555
天天模拟器 6555
逍遥安卓模拟器 21503
BlueStacks蓝叠3模拟器 5555
雷神安卓模拟器 5555
腾讯手游助手 5555

注意:以上是Windows安装的模拟器所使用的默认端口号,有些在Mac是有区别的,比如mumu在Windows默认的端口号是7555,在Mac上是22471

图片

随着移动端市场份额的日益增多,掌握移动端产品的测试,也是我们软件测试工程师必备的技能之一。

虽然有了模拟器,在实际的工作中,公司还是要采购真机来进行测试,甚至如果想进行完整的兼容性测试,可能还会购买第三方的测试服务。

模拟器只能模拟测试一些页面上布局、展示等,单纯的只用模拟器进行测试是不合理的。

我们测试一定要尽量贴合用户的行为和使用场景,模拟器做得再真实,是软件就会有bug,测试设备的钱是不能省的

运行模拟器很耗费资源,配置比较低的机器,真是苦不堪言。

为了解决这个痛点,我们引入了Sonic云真机测试平台,后续将分享Sonic的搭建和使用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多