记录Robotium黑盒测试一个APK文件学习之从签名到简单测试

来源:互联网 发布:九九乘法口诀java运算 编辑:程序博客网 时间:2024/06/06 09:57

Robotium是什么呢,百度百科的回答想必是完美多了,直接搬过来:

Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。


就集成Robotium调试呢,主要有以下几个步骤,都是亲测实践过来的,记录一下自己的学习记录。

1 . 到应用市场下载一个普通的apk文件,然后将它原有的签名信息给剔除了,然后利用自己的keystore通过Android SDK里面的一个工具zipalign.exe进行签名通过命令,然后这个apk文件就是自己签名过的apk文件了。


2 . 接着利用re-signed.jar的一个工具jar包将原apk文件的包名以及LauncherActivity给获取到。


3 . 然后新建一个Android Project,在androidTest包下新建测试类TestDemo.java,在build.gradle里面将Robotium包引入,在project/build/output/apk/目录下面生成两个apk文件,一个是app-debug.apk,一个是app-debug-androidTest.apk,将该项目的包名改成要测试的apk的包名,apk的包名已经通过工具获取到,然后在新建的测试类TestDemo.java里面将要测试的apk的LancherActivity通过反射注入进去,最后直接运行测试用例,然后测试成功。


需要用到的工具:

1 . re-sign.jar;2 . zipalign.exe;3 . debug.keystore;4 . Android Studio;5 . Internet


一、apk文件重签名:

1 . 现在需要用到工具1,下载地址在这里:http://troido.de/downloads/category/1(下载不了,直接私聊我,邮箱发),需要配置ANROIDHOME环境变量,直接把SDK的路径配置到path里面进去就好了,跟配置JDK类似,然后双击下载到的re-sign.jar,出现下面画面:


然后把apk拖进去,等待<=10s左右,然后直接会出现这样子的对话框:


记录下上面的包名与MainActivity,后面测试会用到。


2 . 将要进行测试的apk文件拷贝一个副本进行操作,将其.apk后缀改成.zip,然后双击打开,将META-INF文件夹删了,因为META-INF是主要跟原项目有关的签名信息,然后再将.zip后缀改回.apk后缀。


3 . 现在进行重签名操作,利用到了工具2与工具3,工具2需要在\AndroidSDK\tools/目录下,但是那个目录没有,实质上在AndroidSDK的其他目录下,每一个build-tools的版本目录下面都有一个zipalign,不需要去网上下载,直接拷贝一个到tools目录下就好。工具3,如果Android Studio没有改变默认设置的话,就是在C:\Users\(个人pc用户名)\.android\debug.keystore。


4 . 然后打开cmd,用命令直接签名:


jarsigner

-keystore C:\Users\(个人pc用户名)\.android\debug.keystore

(这个地址就是debug.keystore的路径)

-storepass android

-keypass android

-sigalg MD5withRSA

-digestalg SHA1

D:\radio.apk

(这个目录就是需要签名的apk的路径)

androiddebugkey


像这样:


然后就能显示jar已签名,然后优化签名:

将cmd的当前目录切换到tools的目录下,然后进行


zipalign 4 

D:\radio.apk (需要优化的apk的路径)

D:\radio-resigned.apk (优化之后会生成一个新的apk文件,定义路径名字)


像这样:


然后就能在第二个路径的位置看到一个自己设定了名字的apk文件。


二、Robotium测试

思路疏导:

1 . app-debug.apk和app-debug-androidTest.apk两个apk都安装上去,app-debug-androidTest.apk一旦在Rebuild或者Clean了之后就不在了,要想重新生成得在命令行里面直接用这个命令才能生成这个apk文件:

gradlew assembleAndroidTest

然后就能在命令行里看到生成成功的消息,再到apk文件夹下面去看,这个apk文件又会有了。


2.他们安装完之后,因为生成的app-debug.apk并不是我们想要测试的apk文件,所有在安装到手机之前,应该把app-debug.apk替换成需要测试的radio-resigned.apk文件,所以这里就在build.gradle里面自定义一个任务,在运行之前可以直接启动这个任务,这个任务就是把需要测试的radio-resigned.apk替换掉app-debug.apk并把前者的名字也命名为后者的名字,这样,测试用例就能直接测试的是我们想要测试的apk文件了。


1.先修改app的build.gradle

定义任务如下:


然后到运行列配置面去配置这个任务先运行:

-->Run-->Edit Configuration-->


就是把默认的任务删了,把自己在build.gradle里面那个任务添加进来就好了。

然后修改包名,applicationId为之前在re-sign.jar工具里面得到的包名,testInstrumentationRunner的值改成"android.test.InstrumentationTestRunner",因为默认生成的不是这样子的,最后在依赖里面导入androidTestCompile   'com.jayway.android.robotium:robotium-solo:5.6.3' ,然后同步,build.gradle就算修改完了。


2.编写测试类

在androidTest包下面,新建这样一个类:



3.运行

这样按照规定步骤做完,就能得到如下运行成功的结果:



然后就,从给要测试的APK重签名到,运行测试用例就记录完了。


参考资料:

1 . robotium基于Android studio无源码测试

2 . 小白笔记 - Robotium(一) —— Android APK重签名


个人觉得就是学习别人的东西,变成自己学习到的东西,本着吃水不忘挖井人的原则,非常感谢以上两位博主,从他们的博客中学到了很多,并且也自己从不会到稍微会一点了,谢谢。通过对博客的学习,自己再总结出自己的东西,这就是学习。

阅读全文
0 0