Mobile Testing 简明教程
Mobile Testing - Robotium Framework
Robotium 是一个开源测试框架,用于为 Android 应用编写自动灰盒测试用例。借助 Robotium,测试用例开发者可以编写功能、系统和验收测试场景,涵盖多个 Android 活动。
Robotium 可以用于测试源代码可用的应用和仅提供 APK 文件的应用。
Benefits of Robotium
-
书写简单、代码更短。撰写可靠测试案例所需时间最少。
-
在对正在测试的应用了解最少的情况下,您都可以高效地编制出测试案例。
-
该框架会自动处理多个 Android 活动。与标准工具化测试相比,测试案例的可读性得到了大幅提高。
-
Automatic timing and delays.
-
Automatically follows current Activity.
-
Automatically finds Views.
-
会自动进行决策(例如何时滚动等)。
-
无需修改 Android 平台。
-
Test execution is fast.
-
由于在运行时绑定 GUI 组件,测试案例更加健壮。
-
能够与 Maven 或 Ant 平滑集成。
Drawbacks of Robotium
-
Robotium 无法处理 Flash 或 Web 组件。
-
它一次只能处理一个应用程序。
-
它无法使用 Robotium 模拟在软键盘上单击(需要使用“enterText()”在 EditText 字段中输入文本)。
-
Robotium 无法与状态栏通知交互,即无法下拉通知区域并单击指定的通知。
-
速度可能会有点慢,尤其是在较早的设备上运行时。
How to Use Robotium
Step 1 - 使用 Robotium 的前提条件是 Java SDK(最低 1.6)。如果您系统中尚未安装 Java,请按照以下步骤操作。
-
从 Oracle Technology Network 下载 JDK 和 JRE
-
Accept license agreement.
-
Install JDK and JRE.
-
设置环境变量,如下面的屏幕截图所示。
Step 2 - 从 Android Studio 下载 Android Studio
-
双击 exe 并运行安装程序。
-
使用所有默认选项继续。
-
Set the ANDROID_HOME.
Step 3 − 安装 Android 镜像和工具。
-
单击 SDK Manager −
-
选择必要的软件包。例如,如果我们正在构建一款适用于 Android 4.4.2 的应用程序,那么请确保在 Tools 小节中已选中下列软件包 −Android SDK 工具 rev 22.6.3Android 平台工具 rev 19.0.1Android SDK 构建工具 rev 19.1
Step 4 - 创建 Android 虚拟设备。
-
打开 Android Studio,然后单击工具栏中的 AVD Manager。AVD 允许我们测试和运行我们的 Android 应用程序。
-
为 Nexus5 AVD 使用以下设置- 设备 - Nexus 5(4.95,1080 x 1920;xxhdpi)- 目标 - Google API x86(Google Inc.) - API 级别 19(确保在名称中选择了包含 Google API 的目标。)- CPU - Intel Atom (x86) - 勾选“使用主机 GPU”复选框 - 单击“确定”
-
你现在应该可以在 AVD Manager 中看到你创建的 AVD,在其中你可以启动它、删除它或创建另一个!
Step 5 - Robotium Jar 文件 - 从 RobotiumTech 下载 Robotium Jar 文件
Test an App with Robotium
若要使用 Robotium 测试应用,请按照以下步骤操作-
Step 1 − 在 Android Studio 中创建一个名为 “RobotiumTest”的测试项目。
选择所有默认选项,直至你到达主页面。
Step 2 − 将 Robotium jar 文件复制到项目的 Lib 文件夹。
Step 3 − 在 src 文件夹下的 build.gradle 文件中添加依赖项。
androidTestCompile 'com.jayway.android.robotium:robotium-solo-5.5.3'
Step 4 − 同步 Gradle。
Step 5 − 创建如下所示的测试类 −
package com.example;
import com.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.EditText;
import android.widget.TextView;
public class MyTestClass extends ActivityInstrumentationTestCase2<TestActivity>{
private Solo solo;
public MyTestClass() {
super(TestActivity.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void testCase() throws Exception {
String vResult="TestExample";
EditText vEditText = (EditText) solo.getView(R.id.edit1);
solo.clearEditText(vEditText);
solo.enterText(vEditText,"TestExample");
solo.clickOnButton("Submit");
assertTrue(solo.searchText(vResult));
TextView textField = (TextView) solo.getView(R.id.txt1);
//Assert to verify result with visible value
assertEquals(vResult, textField.getText().toString());
}
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
}
Step 6 − 保存所有更改。确保不存在任何错误。
Step 7 − 现在,运行测试用例。如果测试用例成功,你应该看到以下输出!