51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

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

自动化测试Robotium实战学习

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-26 16:24:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从什么是自动化测试开始

自动化测试就是通过一定的编程手段,自动执行本来需要手动执行的一系列测试的活动。

自动化测试和手动测试的对比:

执行速度快
可靠性高
复用性高
节省人力资源成本
移动端自动化测试工具的选择

Appium:可以用来测试native、hybird和mobile web APP,最突出的一点是它既支持Android的自动化测试,也支持
IOS的测试;另一方面是它支持使用不同的编程语言编写测试代码。缺点:稳定性有待提高。点此进官网
Uiautomator:其是Google官方提供的一款自动化测试框架,主要特点是支持跨进程操作(这一点极大的方便了对
应用外控件的操作)。缺点:只支持Android Platform、API16及以上,调试编译运行比较麻烦。具体可在官网查看
Robotium:支持native和hybird的自动化测试,API使用起来方便简单,执行速度快,可根据控件ID操作;另外它
既可以基于源码操作,也能基于APK测试,功能强大。缺点:不支持跨进程的操作;针对APK操作,而且需要对A
PK重新签名(有工具:re-sign),因此操作相对复杂。点此进官网
其他的自动化测试框架:monkey,monkeyrunner,Testdroid(商业)和Eggplant(商业)等。
Robotium版“Hello World”

基于源码自动化测试

搭建实战测试项目:在eclipse中依次选择File->New->Other->Android Test Project,一路点击next,添加Robotium
.jar 5.6.3,在添加jar文件时应在java build path中查看,不然在初始化solo时容易碰到NullPointerException错误。
新建第一个测试用例:新建Java类,继承ActivityInstrumentationTestCase2< >.
//泛型写入需要测试的工程的入口activity名-LoginActivity
  1. public class TestCase1 extends ActivityInstrumentationTestCase2<LoginActivity> {
  2.     private Solo solo;
  3.     public TestCase1(){
  4.         //LoginActivity是指启动的activity名称
  5.         super(LoginActivity.class);
  6.     }
  7.     //实现测试前的初始化工作,JUnit框架下的方法
  8.     @Override
  9.     protected void setUp() throws Exception {
  10.         // TODO Auto-generated method stub
  11.         super.setUp();
  12.         solo=new Solo(getInstrumentation(),getActivity());
  13.     }
  14.     //实现测试完成后的垃圾回收等工作,JUnit框架下的方法
  15.     @Override
  16.     protected void tearDown() throws Exception {
  17.         // TODO Auto-generated method stub
  18.         solo.finishOpenedActivities();
  19.         super.tearDown();
  20.     }
  21.     //测试用例
  22.     public void testTestCase1(){
  23.         //不推荐通过index的方式找到控件,应通过ID的方式
  24.         solo.enterText(0, "abcd");
  25.         solo.enterText(1, "1234567");
  26.         solo.clickOnButton(0);
  27.         assertTrue("错误提示信息没有出现,可能出现bug",solo.searchText("用户名或者密码错误",true));
  28.     }
  29. }
复制代码

小结:在setUp()中实现一些前置动作,在tearDown()做一些恢复初始状态的动作,然后在test方法实现测试动作。

运行Robotium例子:在测试类中单击鼠标右键,选择Run As->Android JUnit Test.
基于APK的自动化测试

APK重签名:在基于APK的自动化测试过程中,需要确保被测试的APK必须与测试项目具有相同的签名。利用工
具re-sign.jar,用法可自行Google。(re-sign重签名找的debug.keystore是位于C://User/.android下的,而eclip
se的debug.keystore要与re-sign的一致)

搭建项目和新建测试用例与上述一样
//该注解的作用是给编译器一条指令,告诉它对被注解的代码内部的某些警告保持静默
@SuppressWarnings("rawtypes")
public class FirstQunarTest extends ActivityInstrumentationTestCase2{
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME="com.Qunar.NoteActivity";
    private static Class<?> launcherActivityClass;
    /*static代码块(静态代码块):在类中独立于类成员的static语句块,可随便存放
    它不在任何的方法体中,JVM加载类时会按照它们在类中出现的先后顺序依次执行它们,
    并且只会执行一次*/  
  1.     static{
  2.         try {
  3.             launcherActivityClass=Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
  4.         } catch (ClassNotFoundException e) {
  5.             // TODO Auto-generated catch block
  6.             e.printStackTrace();
  7.         }
  8.     }
  9.     @SuppressWarnings("unchecked")
  10.     public FirstQunarTest(){
  11.         super(launcherActivityClass);
  12.     }
  13.     private Solo solo;
  14.     @Override
  15.     protected void setUp() throws Exception {
  16.         // TODO Auto-generated method stub
  17.         solo=new Solo(getInstrumentation(),getActivity());
  18.     }
  19.     //测试用例:黑盒测试方式——无被测项目的源代码(基于APK)
  20.     //robotium通过反射的方法来调用被测应用程序的代码(具体原理??)
  21.     public void testCanOpenSettings(){
  22.         if(solo.searchText("软件更新")){
  23.             solo.clickOnView(solo.getView("button3"));
  24.         }
  25.         solo.pressMenuItem(0);
  26.     }
  27.     @Override
  28.     protected void tearDown() throws Exception {
  29.         // TODO Auto-generated method stub
  30.         solo.finishOpenedActivities();
  31.         super.tearDown();
  32.     }
  33. }
复制代码

运行Robotium例子:在测试类中单击鼠标右键,选择Run As->Android JUnit Test.


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

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-4-25 01:33 , Processed in 0.060972 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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