多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

安卓自动化测试执行总结以及疑问-Robotium

更新时间:2022-04-28 09:15:41 作者:多测师 浏览:48

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

安卓自动化测试执行总结以及疑问-Robotium

  首先,由于我开始进行自动化测试的是公司开发的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、环境变量等);

  下载自动签名脚本

  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

  注二:

#!/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

  以上内容为大家介绍了安卓自动化测试执行总结以及疑问-Robotium,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部