精华内容
下载资源
问答
  • Robotium

    万次阅读 2016-11-21 11:19:59
    本文内容:基于Android Studio 的Android自动化测试框架Robotium的开发 版权声明:本文为原创文章,未经允许不得转载 博客地址:http://blog.csdn.net/kevindgk 简介 Robotium Robotium Recorder 一白盒...

    本文内容:基于Android Studio 的Android自动化测试框架Robotium的开发

    版权声明:本文为原创文章,未经允许不得转载

    博客地址:http://blog.csdn.net/kevindgk

    简介

    Robotium

    Robotium是世界领先的开源Android自动化测试框架。在2010年1月发布的第一个版本,目前最新的版本是5.6.3,增加了许多新特性和提升了很高的性能。通过使用Robotium,可以很容易的为android应用写出强大的和稳定的自动化黑盒测试用例,既支持纯Android应用,也支持混合应用(含H5页面)。

    特点:

    • 支持纯Android应用、混合应用。
    • 不需要对应用有深入的了解。
    • 该框架可以自动处理多个Android 的Activity
    • 快速写出测试用例
    • 相当于标准的Instrumentation来说,测试代码的可读性得到了极大的改善
    • 由于是运行时绑定UI组件,所以测试用例具有更好的鲁棒性(健壮)
    • 测试用例执行非常快
    • 可以和Maven、Gradle以及Ant更好的结合,成为可以持续集成的测试

    支持平台:Windows/Mac OSX/Linux

    支持工具:Android Studio/Eclipse,推荐使用Android Studio,当成插件使用,特别方便

    目前支持:录制Java脚本(收费)、使用JAR包开发测试用例(免费)

    Robotium Recorder

    Robotium Recorder是Robotium团队四五年以来对Robotium框架的可持续的创造和改造的成果,可以帮助我们快速的录制脚本,而且录制好的脚本个人觉得还是很棒的,经过适当的完善修改就可以输出稳定的测试用例,遗憾的是目前该服务是收费的,仅仅能体验一下。

    一、白盒测试

    1.创建Android项目

    2.安装Robotium插件

    在android studio中集成Robotium和集成其他的插件一样,File->Setting->Pluygins-Browse repositories,输入robotium,找到Robotium Recorder并点击安装,安装完重启即可。然后,该插件就会出现在Tools菜单中:

    3.启动插件

    安装完插件以后,使用ADB连接上手机或者模拟器,并且设备必须有外部存储。

    点击Tools菜单中的Robotium Recorder,出现该插件的对话框,

    此时选择有两个:

    ①点击”select apk”,选择APK,然后点击”Next”,最终会在本项目工程中创建一个module用来测试,此时做的就是黑盒测试;

    ②在中间的框内会出现本工程中包含的module,选中之后,该插件会自动打包成apk文件,点击”Next”,最终默认会在选中的module中的测试文件夹下生成测试用例,此时就是白盒测试。从测试的角度讲就是关联了源代码,从开发的角度讲,就是相当于单元测试。需要注意的时候,由于是该插件打包的,所以默认使用的是本地的原生的签名配置文件。

    4.开始录制脚本

    点击“Next”之后就会出现下面的对话框,先看一下Setting目录:

    4.1 Runtime options 运行时配置

    a.Use sleeps - 是否会使用sleeps方法,来保证回放测试用例的速度和录制的时候相同,该配置对那些带宽密集型或者混合App特别有用。简单讲,就是在生成的测试用例中调用sleep()方法来模拟用户录制时的操作间隔,如果不设置的话,该recorder只会捕捉到用户和Activity的动作,但是回放的时候会顺序瞬间执行。

    b.Keep app data - 如果开启一个新的脚本录制的时候,是否保留App的数据。

    c.Click and drag coordinates - 选择在点击和拖拽的时候是否录制坐标。

    4.2 Saved path - SDK和JDK路径

    4.3 License key - 证书(购买后才会下发邮件)

    此时点击”New Robotium Test”就会自动进行开始脚本录制,流程如下:

    1.打APK包
        adb shell am force-stop xxx
    2.将APK包push到设备上
        adb push xxx.apk /data/local/tmp/xxx
    3.从设备上安装APK包
        adb shell pm install -r "/data/local/tmp/xxx"
    4.运行测试用例:
        adb shell am instrument -w -r -e debug false -e class xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    这些过程在控制台都可以看得到,会输出原始的命令,有利于我们了解robotium的整个流程。

    当程序成功的安装到设备上并启动之后,在插件的对话框界面就可以看到有Activity启动了,然后就可以进行一些测试的操作,你会发现在该对话框中就会记录出操作的整个过程,比如打开了那个界面、点击了某个按钮、输入了什么内容等,这些都会转换成java测试代码,下次运行测试用例的时候,就会按照这个顺序进行测试。

    5.保存脚本

    测试结束后,点击Save,起个名字,就会自动生成测试脚本类,保存在src/androidTest目录中。

    首先简要的分析一下该类:

    • 继承了ActivityInstrumentationTestCase2类,该类在android.test包下,泛型指的是需要进行测试的类,图中为登陆的测试用例,所以第一次打开的是SplashActivity。其实Robotium内部就是对Android的Instrumentation进行了2次封装,使其变得更加方便。
    • Robotium内部集成了Junit3,所以对junit熟悉的很容易看懂一些基本特点:setUp()启动测试用例、tearDown()测试结束、testRun()就是本测试用例中的一个测试过程,更为详细的特点见下文。

    二、黑盒测试

    开发步骤

    1.创建Android工程

    ​ 要和测试的APK同包名,同签名

    2.配置Gradle

    android {
        ...
        defaultConfig {
            ...
            testInstrumentationRunner "android.test.InstrumentationTestRunner"
        }
    }
    
    dependencies {
        ...
        androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.2'
    }

    3.写测试代码并打包

    ​ 本工程项目主要是写测试代码,所以在androidTest/java/包下写代码,Android代码不用理会。写完测试代码后,执行命令打包测试apk。

    gradlew assembleAndroidTest

    4.安装apk进行测试

    ①安装待测apk
    adb install 待测apk路径
    ②安装用于robotium测试的apk
    adb install 测试apk的路径
    ③开启测试
    adb shell am instrument -w 包名.test/android.test.InstrumentationTestRunner

    等待片刻,就会自动执行测试apk中的所有的测试用例。

    步骤分析

    1.创建Android工程

    要求测试工程和待测应用同包名,同签名。虽然安装到手机上仍然会识别为两个应用,但是如果测试应用和待测应用同时运行,由于他们具有相同的数字签名,Android系统的Instrumentation可以将它们加载到同一个进程中运行,这样的话,测试代码就可以获取到待测应用的数据,更为详细的过程可以研究系统的测试框架Instrumentation。

    2.配置Gradle

    testInstrumentationRunner "android.test.InstrumentationTestRunner"

    如果需要使用Robotium,就必须使用android.test.InstrumentationTestRunner。简单讲,Instrumentation框架是android测试环境 的核心,在这个框架下,测试应用程序 可以精确控制应用程序。它可以理解为 一种没有图形界面的,具有启动能力的 ,用于监控其他类的工具类,其中的关键类就是InstrumentationTestRunner。

    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.2'

    显而易见,表示加载android测试编译器,会导入robotium包。

    3.写测试代码并打包

    启动Splash界面,进入到登陆页面,模拟输入手机号,点击下一步按钮就会发送验证码,跳转到输入验证码的界面,仅仅给出前半部分逻辑,如下:

    /**
     * 登陆的单元测试类
     * 测试模块:登陆和退出
     * 测试框架:Robotium
     * 测试性质:黑盒测试
     * <p>
     */
    public class LoginFirstTest extends ActivityInstrumentationTestCase2 {
    
        // 启动Activity
        private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "***.SplashActivity";
        private static Class<?> launcherActivityClass;
    
        static {
            try {
                // 通过反射的方法找到启动类的Class
                launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
            } catch (ClassNotFoundException e) {
                throw new RuntimeException(e);
            }
        }
    
        private static final String TAG = "LoginFirstTest";
        private Solo solo;
    
        public LoginFirstTest() {
            super(launcherActivityClass);
        }
    
        @Override
        public void setUp() throws Exception {
            super.setUp();
            // 创建测试的主要类Solo,并启动界面
            solo = new Solo(getInstrumentation());
            getActivity();
        }
    
        @Override
        public void tearDown() throws Exception {
            LogUtil.i(TAG, "tearDown");
            solo.finishOpenedActivities();
            super.tearDown();
        }
    
        public void testLogin() {
    
            //Wait for activity: 'SplashActivity'
            assertTrue("SplashActivity is not found!", solo.waitForActivity("SplashActivity", 10000));
    
            //Wait for activity: 'LoginActivity'
            assertTrue("LoginActivity is not found!", solo.waitForActivity("LoginActivity", 10000));
            solo.sleep(1000);
    
            EditText et_phone = (EditText) solo.getView("et_phone");
            TextView bt_next = (TextView) solo.getView("bt_next");
    
            //Enter the text: '187***1'
            solo.clearEditText(et_phone);
            solo.typeText(et_phone, "187***");
            solo.sleep(1000);
            solo.clickOnView(bt_next);
            solo.sleep(1000);
    
            //Wait for activity: 'VerificationActivity'
            assertTrue("VerificationActivity is not found!", solo.waitForActivity("VerificationActivity", 10000));
            EditText et_code = (EditText) solo.getView("et_code");
            final TextView tv_err_code = (TextView) solo.getView("tv_err_code");
    
            solo.enterText(et_code, "1234");
            solo.sleep(1000);
            solo.waitForCondition(new Condition() {
                @Override
                public boolean isSatisfied() {
                    return tv_err_code.isShown();
                }
            }, 10000);
            solo.sleep(1000);
            ...
        }
    }

    4.安装apk进行测试

    ① 安装待测apk
        adb install 待测apk路径
    安装完毕后,可以执行命令,来查看是否安装上了对应的InstrumentationTestRunner
        adb shell pm list instrumentation
    结果中会列出手机上安装的所有的instrumentation测试程序,找到自己的,看是否正确:
        instrumentation:包名.test/android.test.InstrumentationTestRunner (target=包名)

    上图中,第一个为”百度传课”的TestRunner,第三个是我进行测试的应用的TestRunner,显示正确。如果你发现你的是类似于途中的第二个,使用的是Android.support.test.runner.AndroidJUnitRunner,则表示没有配置,这个是Android Studio默认的JUnitRunner,进行junit测试的,需要在gradle中修改掉。

    ② 安装用于robotium测试的apk:adb install 测试apk的路径
    可以执行命令列出所有的第三方应用,查看两个包是否安装成功,其中待测spk的包名为:"包名.test"
    adb shell pm list packages -3
    
    ③ 开启测试:adb shell am instrument -w 包名.test/android.test.InstrumentationTestRunner
    稍等片刻,首先会启动测试程序,测试程序会去启动被测应用,然后模拟点击和输入,最终给出简单的测试结果。

    以上就是使用Robotium进行简单的黑盒测试的整个流程。

    引用

    1.Robotium官方网址

    2.Robotiu GitHub

    3.安卓APP自动化测试(kevin公开课专辑)

    联系方式

    邮箱:815852777@qq.com

    微信:

    展开全文
  • robotium

    2014-06-24 11:27:07
    download download robotium https://code.google.com/p/robotium/

     

    1. download ADT

    https://developer.android.com/sdk/installing/bundle.html

    Unpack the ZIP file -> Open the adt-bundle-<os_platform>/eclipse/ directory -> launch eclipse

     

    2. download robotium

    https://code.google.com/p/robotium/

    Or in Eclipse, Help-> Install new software -> Robotium - http://recorder.robotium.com/updates

    展开全文
  • Robotium测试

    2014-09-22 14:48:43
    Robotium测试
  • robotium-solo-5.1.jar robotium-solo-5.1-javadoc.jar
  • robotium实例

    2012-02-14 07:40:30
    robotium实例
  • Robotium实例

    2014-04-27 12:10:30
    Robotium实例, 官方文件, 入門绝佳
  • Robotium_Demo

    2017-01-17 10:48:51
    Robotium demo实例 &&Robotium 使用说明文档
  • robotium使用

    2014-08-13 12:10:24
    共同学习robotium.这里是配置环境文档,有些组件可能有更新的版本了
  • Adb-For-Robotium-master.zip

    2017-01-16 15:59:08
    Robotium
  • Robotium-5.2.1

    2016-10-14 11:55:19
    Robotium-5.2.1
  • robotium issues

    2014-04-04 16:10:59
    解决robotium所遇到的问题,如null pointer exception或其他异常

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,618
精华内容 2,247
关键字:

robotium