用命令行来启动虚拟设备—Android应用测试指南(6)

发表于:2016-3-17 09:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李江    来源:51Testing软件测试网原创

  5.2  用命令行来启动虚拟设备
  如果可以通过命令行来实现启动不同类型的虚拟设备那该多好啊,这样,我们就可以通过写脚本来自动化回归。
  释放窗口中的虚拟设备,为我们自动化脚本打开了另一扇大门。
  下面,让我们来看看门后面的世界。
  5.2.1  Headless模拟器
  无头模拟器,就是不显示交互窗口的模拟器。这种模拟器在自动化测试的时候很有用,因为我们在自动化测试的时候,没有人会盯着屏幕看,以及人机交互,因为自动化执行得都很快,想看也看不了。
  当然,值得一提的是,如果你看不到屏幕,即使用例失败了,你可能还不知道原因,因此,我们在选择的时候,要根据具体场景需要,选择是否需要这种模拟器。
  我们注意到一件事情,就是在运行AVD虚拟机的时候,通信端口在执行期间就已经分配好了,端口从5554开始,将最新实用的端口加2,就是当前分配的端口号。这个端口号可以用来标记模拟器,给模拟器命名,设置模拟器序列号,比如,模拟器用端口5554,那它的名字就是"模拟器-5554"。在我们用虚拟机模拟器的时候很有用,这样我们就不用关注分配的端口号是啥了,直接看名字就知道了。当然,在你同时启动多个模拟器,跑自动化程序的时候,就会造成一些困扰,较难跟踪了。
  这种情况下,我们建议设置指定的端口号来通信,使得虚拟器在我们的掌控之中。
  通常,如果我们在同一个时间点启用多个虚拟器来跑多个用例,除了不想看屏幕之外,还希望有输出。我们有下面这些选择项。
  1.启动刚刚创建的虚拟机命令行如下:
  $ emulator -avd test -no-window -no-audio -no-boot-anim -port 5580 &
  2.端口必须是5554和5584之间的整数:
  $ adb devices
  List of devices attached
  Emulator-5580 device
  这样列出所有的设备列表。
  3.下一步就是安装应用和测试工程:
$ adb -s emulator-5580 install\
TemperatureConverter/bin/TemperatureConverter.apk
347 KB/s (16632 bytes in 0.046s)
pkg: /data/local/tmp/TemperatureConverter.apk
Success
$ adb -s emulator-5580 install\
TemperatureConverterTest/bin/TemperatureConverterTest.apk
222 KB/s (16632 bytes in 0.072s)
pkg: /data/local/tmp/TemperatureConverterTest.apk
Success
  4.然后,我们可以用具体的序列号来标记正在执行的测试用例
$adb-semulator-5580shellaminstrument-w\
com.example.aatg.tc.test/android.test.InstrumentationTestRunner
com.example.aatg.tc.test.EditNumberTests:......
com.example.aatg.tc.test.
TemperatureConverterActivityTests:..........
com.example.aatg.tc.test.TemperatureConverterTests:....
TestresultsforInstrumentationTestRunner=....................
Time:25.295
OK(20tests)
  5.2.2  禁用锁屏功能
  我们可以看到,这种情况下,测试用例执行起来,并没有中断让用户去输入什么东西。不过,有时候,如果我们用标准的方法,在Eclipse中启动标准的模拟器来执行测试用例,即使用例没有失败,也会报错。那是因为模拟器在第一个屏幕出现的时候就锁住了,我们需要将UI相关的屏幕解锁来执行用例。
  解锁屏幕你可以用下面的命令:
  $ adb -s emulator-5580 emu event send EV_KEY:KEY_MENU:1 EV_KEY:KEY_MENU:0
  还有一种方式,就是在程序里面将锁屏禁用;但是呢,有点不好的就是需要在应用程序中插入测试的代码。因此,程序发布之前,需要将这段测试代码从应用程序中删除掉。
  在此之前,需要在AndriodManifest.xml中加入下面这段准入代码,然后再在你的程序中加入禁止锁屏的代码。
  Manifest配置加入下面元素,如框5.1所示。
  框5.1  manifest配置
  <manifest>
  ...
  <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
  ...
  </manifest>
本文选自《Android应用测试指南》第五章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号