51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1596|回复: 0
打印 上一主题 下一主题

【我分享】安卓自动化测试执行总结以及疑问-Robotium

[复制链接]
  • TA的每日心情
    慵懒
    2017-7-9 10:38
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2015-1-7 08:44:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    经过4周左右时间摸索和实践,android的自动化算是完成了用例的任务了,在这个过程中遇到很多困难和尝试很多方案,对比wed自动化,终端产品的自动化算是比较新鲜同时不成熟,但是也算是一个成长的乐趣.

    首先,由于我开始进行自动化测试的是公司开发的apk,所以有源代码且编译是没问题的,所以能够在这个基础上作为第一个Robotium自动化项目.首先我们通过eclipse创建测试项目,连接上被测的源代码工程.然后就可以很简单的编写用例了:
    Package被测对象包;
    • Importandroid.test.ActivityInstrumentationTestCase2;
    • Importcom.liliandroid.helloworld.ActivityMain;
    • Importcom.jayway.android.robotium.solo.Solo;
    • PublicclassUITextTestextendsActivityInstrumentationTestCase2<ActivityMain>{
    • Private Solo solo;
    • Public UITextTest() {
    • super("需要继承的被测对象的东东", ActivityMain.class);
    • }
    • Public void setUp()throws Exception {
    • solo=newSolo(getInstrumentation(), getActivity());
    • }
    • Publicvoid  测试用例testcase()throwsException {
    • }

    复制代码
    以上这步其实我相信很多做自动化测试的人已经都能够正常跑起来,但是困难点来了,假如我们想通过只有apk不要源代码的情况下执行用例的话,我们就要做许多操作了.通过我几个星期的摸索,首先我们需到这里下载一个关于创建测试的工程:
    http://robotium.googlecode.com/files/RobotiumForBeginners.pdf
    关键点来了,这个工程中所有步骤都顺利,但是关于重新签名的这个地方暂时我还没看到相关同学解决掉,所以我就换了另外一个方式去解决签名问题,此方法通过网上的重新签名的一些共享来执行的(这里不建议自己创建签名,因为容易会对测试的apk有功能上的影响,以下是一些网上重新签名的方法):
    pre-install apk的签名方法

    • 在Eclipse里编写好测试apk的代码,例如要测试“打开信息这个应用,准备发送短信息”;
    • 准备Linux系统环境,并配置好Android开发环境(包括SDK、JRE、环境变量等);
    • 下载自动签名脚本
    • [url=]http://code.google.com/p/robotiu[/url]... 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
    注二
    •     #!/bin/bash
    •     set -e
    •     ORIGINAL_APK="$(readlink --canonicalize $1)"
    •     CLEAN_SIGNED_APK="$(mktemp -t robotium.clean.apk.XXXXXXXXXXXXXX)"
    •     UNPACK_DIRECTORY="$(mktemp --directory -t robotium.unpack.XXXXXXXXXXXXXX)"
    •     ZIPALIGNED_APK="$(readlink --canonicalize $2)"
    •     PWD="$(pwd)"
    •     if [ -e "$ORIGINAL_APK" ]; then
    •       if [ "$2" == "" ]; then
    •           echo "Second argument must be the output filename for the signed apk."
    •           exit 2
    •       fi
    •       rm "$CLEAN_SIGNED_APK" 2>/dev/null || true
    •       rm "$ZIPALIGNED_APK" 2>/dev/null || true
    •       cd "$UNPACK_DIRECTORY"
    •       jar xf "$ORIGINAL_APK"
    •       rm META-INF/CERT.*
    •       jar cf "$CLEAN_SIGNED_APK" .
    •       jarsigner -keystore这里是你的debug.keystore存放路径-storepass android -keypass android "$CLEAN_SIGNED_APK" androiddebugkey
    •       zipalign 4 "$CLEAN_SIGNED_APK" "$ZIPALIGNED_APK"
    •     else
    •       echo "First argument must be an apk file."
    •       exit 1
    •     fi

    复制代码
    但是有一个问题,以上用到的一个sh文件中,他有一行代码用到了MKTEMP -T这个关键字,很多类似安卓下的linux环境是会报错的,我手头上暂时没有能够支持该命令(-T选项)的linux系统.所以这里遗留几个问题:
    1.      测试工程apk与被测apk的签名相同了,是否每次启动的时候都要对该签名进行重新签名,安卓手机里面有没保存?
    2.   我上面提到MKTEMP的关键字是否是因为我的linux系统的问题?还是说有别的解决方法?

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

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-19 12:51 , Processed in 0.067430 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表