精华内容
下载资源
问答
  • [经验分享] 安卓自动化测试执行总结以及疑问-Robotium 经过4周左右时间摸索和实践,android的自动化算是完成了用例的任务了,在这个过程中遇到很多困难和尝试很多方案,对比wed自动化,终端产品的自动化...

    [经验分享] 安卓自动化测试执行总结以及疑问-Robotium

    经过4周左右时间摸索和实践,android的自动化算是完成了用例的任务了,在这个过程中遇到很多困难和尝试很多方案,对比wed自动化,终端产品的自动化算是比较新鲜同时不成熟,但是也算是一个成长的乐趣.


    首先,由于我开始进行自动化测试的是公司开发的apk,所以有源代码且编译是没问题的,所以能够在这个基础上作为第一个Robotium自动化项目.首先我们通过eclipse创建测试项目,连接上被测的源代码工程.然后就可以很简单的编写用例了:

    Package被测对象包;

    1. Importandroid.test.ActivityInstrumentationTestCase2;

    2. Importcom.liliandroid.helloworld.ActivityMain;

    3. Importcom.jayway.android.robotium.solo.Solo;

    4. PublicclassUITextTestextendsActivityInstrumentationTestCase2<ActivityMain>{

    5. Private Solo solo;

    6. Public UITextTest() {

    7. super("需要继承的被测对象的东东", ActivityMain.class);

    8. }

    9. Public void setUp()throws Exception {

    10. solo=newSolo(getInstrumentation(), getActivity());

    11. }

    12. Publicvoid  测试用例testcase()throwsException {

    13. }
    复制代码

    以上这步其实我相信很多做自动化测试的人已经都能够正常跑起来,但是困难点来了,假如我们想通过只有apk不要源代码的情况下执行用例的话,我们就要做许多操作了.通过我几个星期的摸索,首先我们需到这里下载一个关于创建测试的工程:

    http://robotium.googlecode.com/files/RobotiumForBeginners.pdf

    关键点来了,这个工程中所有步骤都顺利,但是关于重新签名的这个地方暂时我还没看到相关同学解决掉,所以我就换了另外一个方式去解决签名问题,此方法通过网上的重新签名的一些共享来执行的(这里不建议自己创建签名,因为容易会对测试的apk有功能上的影响,以下是一些网上重新签名的方法):

    pre-install apk的签名方法

    • 在Eclipse里编写好测试apk的代码,例如要测试“打开信息这个应用,准备发送短信息”;
    • 准备Linux系统环境,并配置好Android开发环境(包括SDK、JRE、环境变量等);
    • 下载自动签名脚本
    •   http://code.google.com/p/robotiu ... gn-debug-any-apk.sh
    • 从Android系统中导出pre-install的应用(例如Mms.apk)
    • adbpull /system/app/Mms.apk
    • 准备Eclipse的默认签名工具debug.keystore文件;
    • 将脚本文件、Mms.apk、debug.keystore都拷贝到Linux系统中;
    • 修改脚本文件,并给它加权(注二);
    • 在终端中输入命令:
    • ./sign-debug-any-apk.shMms.apk Mms_signed.apk
    • 如果一切顺利,此apk应该已经签好名并生成新的文件“Mms_signed.apk”;
    • adb pull /data/system/packages.xml
    • Openpackages.xml and remove:
    • <packagename="com.android.Mms">
    • </package>
    • Pushpackages.xml back to device: adb push packages.xml /data/system
    • Renamed“Mms_signed.apk”to “Mms.apk”, then push the apk back to the device: adb push Mms.apk/system/app
    • 运行Eclipse里的测试代码,顺利的话你就能看到信息这个应用被调用并启动。

    注一
    ‐‐Un-zip the apk file
    ‐‐Delete the META--‐INF folder
    ‐‐Re‐zip the apkfile
    ‐‐In Dos prompt /Command prompt
    >jarsigner -keystore~/.android/debug.keystore -storepass android -keypass android ApplicationToTest.apkandroiddebugkey
    > zipalign 4 ApplicationToTest.apkTempApplicationToTest.apk
    注二

    1.     #!/bin/bash
    2.     set -e
    3.     ORIGINAL_APK="$(readlink --canonicalize $1)"
    4.     CLEAN_SIGNED_APK="$(mktemp -t robotium.clean.apk.XXXXXXXXXXXXXX)"
    5.     UNPACK_DIRECTORY="$(mktemp --directory -t robotium.unpack.XXXXXXXXXXXXXX)"
    6.     ZIPALIGNED_APK="$(readlink --canonicalize $2)"
    7.     PWD="$(pwd)"
    8.     if [ -e "$ORIGINAL_APK" ]; then
    9.       if [ "$2" == "" ]; then
    10.           echo "Second argument must be the output filename for the signed apk."
    11.           exit 2
    12.       fi
    13.       rm "$CLEAN_SIGNED_APK" 2>/dev/null || true
    14.       rm "$ZIPALIGNED_APK" 2>/dev/null || true
    15.       cd "$UNPACK_DIRECTORY"
    16.       jar xf "$ORIGINAL_APK"
    17.       rm META-INF/CERT.*
    18.       jar cf "$CLEAN_SIGNED_APK" .
    19.       jarsigner -keystore这里是你的debug.keystore存放路径-storepass android -keypass android "$CLEAN_SIGNED_APK" androiddebugkey
    20.       zipalign 4 "$CLEAN_SIGNED_APK" "$ZIPALIGNED_APK"
    21.     else
    22.       echo "First argument must be an apk file."
    23.       exit 1
    24.     fi
    复制代码

    但是有一个问题,以上用到的一个sh文件中,他有一行代码用到了MKTEMP -T这个关键字,很多类似安卓下的linux环境是会报错的,我手头上暂时没有能够支持该命令(-T选项)的linux系统.所以这里遗留几个问题:

    1.      测试工程apk与被测apk的签名相同了,是否每次启动的时候都要对该签名进行重新签名,安卓手机里面有没保存?

    2.   我上面提到MKTEMP的关键字是否是因为我的linux系统的问题?还是说有别的解决方法?


    不过最后总结,因为安卓自动化测试是一个非常新和较少经验共享的领域,所以我后续等项目自动化模式成熟之后会多上google和国外网站上面学习,争取10月中旬能够攻我工作设计的apk自动化任务.

    展开全文
  • 2)Service需要主动调用stopSelf()或stopService()服务才可以停止,IntentService运行完后自动停止 使用IntentService需要注意2点: 1)构造函数中一定要调用父类的有参构造函数 2)需要耗时处理的事情放在...
  • 这次接到一个任务,要求批量操作安卓手机,数量大概有20台吧,还要求有个中控台,可以查看当前脚本执行情况思考了下,决定使用termux + UIAUTOMETOR2 + django2 完成构架如下服务器(django完成中控+API) 安卓手机...

    这次接到一个任务,要求批量操作安卓手机,数量大概有20台吧,还要求有个中控台,可以查看当前脚本执行情况

    思考了下,决定使用termux + UIAUTOMETOR2 + django2 完成

    构架如下

    服务器(django完成中控+API) 安卓手机(termux来接收和发送信息UIAUTOMETOR2来执行自动化脚本操作)

    ---------------------------------------------------------------------------------------------------

    首先安卓手机安装termux,建议使用F-Droid安装(另外termux-api也可以安装,提供一些系统功能,比如弹个消息什么的)

    另外安装openssh,python3,UIAUTOMETOR2库来完成环境配置

    ---------------------------------------------------------------------------------------------------

    因为需要用服务器来控制安卓手机,所以需要ssh到termux

    现在网上提供的都是用key来登录ssh,比较麻烦,其实termux也是可以直接用账号密码来ssh的

    接下去就是操作

    #首先是常规升级

    apt update

    apt upgrade

    #然后是安装需要的软件

    apt install openssh

    pkg install termux-auth

    #获取用户名 比如u0_a150

    whoami

    #设置密码,按照要求输入2次密码

    passwd

    #查看自己ip,比如inet addr:192.168.2.243ifconfig

    #开启ssh

    sshd-p 9000#电脑端输入,然后输入密码即可

    ssh u0_a150@192.168.2.243 -p 9000

    接下去是python3 和 UIAUTOMETOR2库的安装

    #python3安装

    pkg install python3

    还有一些依赖库

    pip install six

    pip install humanize

    #UIAUTOMETOR2库,这个需要从电脑端复制过去

    找到电脑端安装的位置,把文件夹直接复制到termux下的目录即可完成安装

    一般是在这个位置

    /data/data/com.termux/files/usr/lib/python3.7/site-packages

    自己电脑的话一般在这个位置

    C:\Python37\Lib\site-packages

    复制过去就行了

    接下去就是安卓端的初始化,将手机用usb线连接到电脑

    电脑上执行(需要adb配合,自己可以去下adb的插件,放到python37目录下即可)

    使用python3 -m uiautomator2 init 初始化安卓手机,会安装一个app,这样就完成了配置

    测试连接,如果出现如下信息就是配置好了

    >>> import uiautomator2 asu2>>> d = u2.connect('192.168.1.100')>>>d.info

    {u'displayRotation': 0, u'displaySizeDpY': 640, u'displaySizeDpX': 360, u'screenOn': True, u'displayWidth': 1080, u'productName': u'hermes', u'currentPackageName': u'xxxx', u'sdkInt': 21, u'displayHeight': 1920, u'naturalOrientation': True}>>>

    ---------------------------------------------------------------------------------------------------

    接下去是服务端的配置

    服务端配置python3 + django2 + paramiko即可

    paramiko库提供ssh操作

    ---------------------------------------------------------------------------------------------------

    使用django搭建一个后台,将手机都配置到服务器,手机上面都使用静态ip

    然后就可以使用ssh连接到各个手机执行自动化脚本操作了,脚本将数据通过API提交到服务器,这样就完成了数据的手机

    展开全文
  • 这次接到一个任务,要求批量操作安卓手机,数量大概有20台吧,还要求有个中控台,可以查看当前脚本执行情况 思考了下,决定使用termux + UIAUTOMETOR2 + django2 完成 构架如下 服务器(django完成中控+API)<...

    这次接到一个任务,要求批量操作安卓手机,数量大概有20台吧,还要求有个中控台,可以查看当前脚本执行情况

    思考了下,决定使用termux + UIAUTOMETOR2 + django2 完成

    构架如下

    服务器(django完成中控+API)<--> 安卓手机(termux来接收和发送信息<-->UIAUTOMETOR2来执行自动化脚本操作)

    ---------------------------------------------------------------------------------------------------

    首先安卓手机安装termux,建议使用F-Droid安装(另外termux-api也可以安装,提供一些系统功能,比如弹个消息什么的)

    另外安装openssh,python3,UIAUTOMETOR2库来完成环境配置

    ---------------------------------------------------------------------------------------------------

    因为需要用服务器来控制安卓手机,所以需要ssh到termux

    现在网上提供的都是用key来登录ssh,比较麻烦,其实termux也是可以直接用账号密码来ssh的

    接下去就是操作

    #首先是常规升级
    apt update
    apt upgrade
    
    #然后是安装需要的软件
    apt install openssh
    pkg install termux-auth
    
    #获取用户名 比如u0_a150
    whoami
    
    #设置密码,按照要求输入2次密码
    passwd
    
    #查看自己ip,比如inet addr: 192.168.2.243
    ifconfig
    
    #开启ssh
    sshd -p 9000
    
    #电脑端输入,然后输入密码即可
    ssh u0_a150@192.168.2.243 -p 9000

    接下去是python3 和 UIAUTOMETOR2库的安装

    #python3安装
    pkg install python3
    还有一些依赖库
    pip install six
    pip install humanize #UIAUTOMETOR2库,这个需要从电脑端复制过去 找到电脑端安装的位置,把文件夹直接复制到termux下的目录即可完成安装

    一般是在这个位置

    /data/data/com.termux/files/usr/lib/python3.7/site-packages

    自己电脑的话一般在这个位置

    C:\Python37\Lib\site-packages

    复制过去就行了

    接下去就是安卓端的初始化,将手机用usb线连接到电脑

    电脑上执行(需要adb配合,自己可以去下adb的插件,放到python37目录下即可)

    使用python3 -m uiautomator2 init 初始化安卓手机,会安装一个app,这样就完成了配置

     测试连接,如果出现如下信息就是配置好了

    >>> import uiautomator2 as u2
    >>> d = u2.connect('192.168.1.100')
    >>> d.info
    {u'displayRotation': 0, u'displaySizeDpY': 640, u'displaySizeDpX': 360, u'screenOn': True, u'displayWidth': 1080, u'productName': u'hermes', u'currentPackageName': u'xxxx', u'sdkInt': 21, u'displayHeight': 1920, u'naturalOrientation': True}
    >>> 

     

     ---------------------------------------------------------------------------------------------------

    接下去是服务端的配置

    服务端配置python3 + django2 + paramiko即可

    paramiko库提供ssh操作

    ---------------------------------------------------------------------------------------------------

    使用django搭建一个后台,将手机都配置到服务器,手机上面都使用静态ip

    然后就可以使用ssh连接到各个手机执行自动化脚本操作了,脚本将数据通过API提交到服务器,这样就完成了数据的手机

     

    转载于:https://www.cnblogs.com/darkspr/p/10767067.html

    展开全文
  • 这次接到一个任务,要求批量操作安卓手机,数量大概有20台吧,还要求有个中控台,可以查看当前脚本执行情况思考了下,决定使用termux + UIAUTOMETOR2 + django2 完成构架如下服务器(django完成中控+API) 安卓手机...

    这次接到一个任务,要求批量操作安卓手机,数量大概有20台吧,还要求有个中控台,可以查看当前脚本执行情况

    思考了下,决定使用termux + UIAUTOMETOR2 + django2 完成

    构架如下

    服务器(django完成中控+API) 安卓手机(termux来接收和发送信息UIAUTOMETOR2来执行自动化脚本操作)

    ---------------------------------------------------------------------------------------------------

    首先安卓手机安装termux,建议使用F-Droid安装(另外termux-api也可以安装,提供一些系统功能,比如弹个消息什么的)

    另外安装openssh,python3,UIAUTOMETOR2库来完成环境配置

    ---------------------------------------------------------------------------------------------------

    因为需要用服务器来控制安卓手机,所以需要ssh到termux

    现在网上提供的都是用key来登录ssh,比较麻烦,其实termux也是可以直接用账号密码来ssh的

    接下去就是操作

    #首先是常规升级

    apt update

    apt upgrade

    #然后是安装需要的软件

    apt install openssh

    pkg install termux-auth

    #获取用户名 比如u0_a150

    whoami

    #设置密码,按照要求输入2次密码

    passwd

    #查看自己ip,比如inet addr:192.168.2.243ifconfig

    #开启ssh

    sshd-p 9000#电脑端输入,然后输入密码即可

    ssh u0_a150@192.168.2.243 -p 9000

    接下去是python3 和 UIAUTOMETOR2库的安装

    #python3安装

    pkg install python3

    还有一些依赖库

    pip install six

    pip install humanize

    #UIAUTOMETOR2库,这个需要从电脑端复制过去

    找到电脑端安装的位置,把文件夹直接复制到termux下的目录即可完成安装

    一般是在这个位置

    /data/data/com.termux/files/usr/lib/python3.7/site-packages

    自己电脑的话一般在这个位置

    C:\Python37\Lib\site-packages

    复制过去就行了

    接下去就是安卓端的初始化,将手机用usb线连接到电脑

    电脑上执行(需要adb配合,自己可以去下adb的插件,放到python37目录下即可)

    使用python3 -m uiautomator2 init 初始化安卓手机,会安装一个app,这样就完成了配置

    测试连接,如果出现如下信息就是配置好了

    >>> import uiautomator2 asu2>>> d = u2.connect('192.168.1.100')>>>d.info

    {u'displayRotation': 0, u'displaySizeDpY': 640, u'displaySizeDpX': 360, u'screenOn': True, u'displayWidth': 1080, u'productName': u'hermes', u'currentPackageName': u'xxxx', u'sdkInt': 21, u'displayHeight': 1920, u'naturalOrientation': True}>>>

    ---------------------------------------------------------------------------------------------------

    接下去是服务端的配置

    服务端配置python3 + django2 + paramiko即可

    paramiko库提供ssh操作

    ---------------------------------------------------------------------------------------------------

    使用django搭建一个后台,将手机都配置到服务器,手机上面都使用静态ip

    然后就可以使用ssh连接到各个手机执行自动化脚本操作了,脚本将数据通过API提交到服务器,这样就完成了数据的手机

    展开全文
  • 基于Monkeyrunner的安卓自动化测试框架.大部分材料来自SDK,对其中一些源代码进行了微量修改.用python写的一个小框架,简化了绝大部分Monkeyrunner的语法. 优化1:无需下载SDK,无需更新SDK,无需配置Path,解压即可使用...
  • 环境介绍服务器235:存放测试脚本,常改动和...用于调试执行各种操作自动化测试环境搭建就是指在执行机上搭建测试环境,让其最终可以正常执行任务的前置过程软件安装 名称版本号前置依赖CentOS7.4.1708无pyenv1.1.5...
  • 你是否遇到跑monkey测试,wifi被关了,测试一直失败或者可以说效果不大?你是否遇到跑monkey测试,突然声音变大,影响他人,并且...本次更新就是为了解决这几个问题~提高执行的成功率,也为平台自动化降低干扰,提...
  • 之前发了一个帖子说我需要安卓的几个功能,ios...2. 连接到某wifi后自动执行任务,比如连接到公司wifi后自动调整为震动模式。注意:以上两功能完全不需要root!下载安装就略过,谷歌市场或者酷安都有下载,下面截图...
  • Automagic Premium 安卓上的自动化神器

    千次阅读 2018-03-27 18:25:46
    这时候我就在想,如果有一个App,能够自动帮我完成这种每天重复执行任务就好了。之前找到一个叫uiautomator2的python项目,能够实现类似的功能,但是这个项目实际上是基于谷歌的uiautomator自动化调试工具,每次...
  • 最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。方式...
  • 有些开发者想实现iOS操作系统下,用户通过浏览器访问某个页面后,浏览器自动执行某个任务,比如某些openinstall的iOS开发者就希望在用户访问落地页后直接开始安装App。   其实这个任务在iOS操作系统之下是不...
  • 项目需要不断检查数据库,当数据库信息发生相应变化时向安卓端发送推送,本人是渣渣,网上没有找到相应的...auto.php  实现定时执行任务 ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limi
  • 安卓通过自定义gradle Task或者buildSrc自定义插件实现打包+360加固+瓦力打渠道包流程自定义gradle Task实现打包+360加固+瓦力打渠道包流程一、为项目配置签名文件和buildTypes二、创建gradle task任务执行加固流程...
  • 任务完成时自动显示获取的信息,执行结果将在右下角冒泡提示。 5、查看签名信息 自动提取APK文件的签名信息,任务完成时在当前目录下生成文件名为”源文件名_signinfo“的文本文件,,并自动打开生成的TXT文件。...
  • 安卓电量消耗在代码中如何优化 系统为了节省电量,CPU在没有任务忙的时候就会自动进入休眠。 有任务需要唤醒CPU高效执行的时候,就会给CPU加wake_lock锁
  • 安卓笔记20170118

    2017-01-18 11:56:00
    为了让电池更加耐用,每种手机都会有自己的休眠策略,Android手机就会在长时间不操作的情况下自动让CPU进入到睡眠状态,这就有可能导致Timer中的定时任务无法正常运行。而Alarm则具有唤醒CPU的功能,它可以保证在...
  • 安卓 | 使用AsyncTask进行Socket编程

    千次阅读 2017-04-01 23:57:01
    AsyncTask是什么 AsyncTask 允许对用户界面执行异步操作。 它会先阻塞工作线程中的操作,然后在 UI 线程中发布结果,而无需您亲自处理线程和/或处理程序。... 2、方法 doInBackground() 会在工作线程上自动执行
  • 安卓学习04:服务

    2018-06-03 21:34:11
    服务1.定义1)实现程序后台运行的解决方法,适合去执行那些不需要和用户交互而且还要求长期运行的任务。...4)服务不会自动开启线程,我们需要在服务的内部手动创建子线程,并在这里执行具体的任务,否则...
  • WfMC(Workflow Management Coalition)工作流管理联盟对工作流是这样定义的:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。90年代后至今...
  • 安卓Service详解(二)

    2017-05-30 18:17:48
    Android中Services之异步IntentService 1.IntentService:异步... 2.IntentService完成工作后会自动停止服务,同时执行多个任务会以工作队列形式,依次执行 3.不需要主动调用stopSelft()来结束服务。因为,在所有
  • 本文主要讲述如何配置ANT+SVN测试框架的ANT部分。  ANT在框架中的主要作用相当于取代人的作用,自动化构建测试环境,...ant执行安卓测试任务(包括自动编译,打包,安装,测试) ==&gt;ant发送日志文件到邮...
  • 在职场中,养成制定工作日程管理计划习惯的办公人士,在工作过程中很容易事半功倍,因为他们的每个工作时间段都安排有相应的任务,还可以设置定时提醒时间,到期后会自动提醒要去做的事情,按照计划依次执行好每一项...
  • 前一篇《使用Fidder从安卓模拟器获取APP内H5游戏网址》我们获取到了APP内H5游戏的网址,那么接下来我们使用辅助工具做一些日常任务,如:每天...通过录制脚本进行回放,可以设置定时任务到时间自动执行代替双手,自...
  • |--任务循环之只在Activity显示时执行 |--修改文件的最后修改时间 |--偏好设置(回显) |--内存优化之各种方法 |--内容提供者之短信的序列化对象读写 |--内容提供者之短信的获取与写入 |--内容提供者之联系人读写与...
  •  非常适合去 执行 那些不需要 和用户 交互,而且还要求长期运行的任务。    3. 服务并不是 运行在一个独立的 进程当中的,而是依赖于 创建服务时,所在的应用程序进程。    4.服务 并不会 自动开启线程,...
  • 所用工具环境python3.6.5 和 支持自动鼠标键盘点击等编程的pyautogui功能包windows ...利用脚本,模拟任务开启点击,进入后自动执行,中间对话跳过,最后任务完成检测,再次启动任务。均是通过截屏信息获取当前在做...
  • 所用工具环境python3.6.5 和 支持自动鼠标键盘点击等编程的pyautogui功能包windows ...利用脚本,模拟任务开启点击,进入后自动执行,中间对话跳过,最后任务完成检测,再次启动任务。均是通过截屏信息获取当前在做...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

安卓自动执行任务