開源手機自動化測試框架iQuery入門教程(一)

上次介紹iQuery以後,已經有些朋友在開始在手機自動化測試程序裏試用iQuery了,因爲以前的介紹文檔比較含糊,先擱置擴展iQuery使其支持多種編程語言的系列文章,補充一下iQuery的入門教程,以前寫的介紹性文章能夠參考:
1.    開源類庫iQuery Android版使用說明
2.    類jQuery selector的控件查詢iQuery開源類庫介紹html

iQuery是一個開源的自動化測試框架項目,有興趣的朋友能夠在這裏下載:https://github.com/vowei/iQuery/downloadsjava

源碼位置:https://github.com/vowei/iQueryandroid

iQuery for iOS簡易教程

 

當前iQuery for iOS還只支持instrument裏的自動化測試,在本教程裏,咱們使用下面的程序演示使用iQuery for iOS編寫自動化測試用例的方法:ios

可用在iphone模擬器裏的程序:https://github.com/vowei/iQuery/tree/master/iOS/targetApp
源代碼:https://github.com/vowei/iQuery/tree/master/iOS/targetApp/Gesturesgit

該教程裏演示的自動化測試用例須要下載iQuery for iOS類庫:github

https://github.com/downloads/vowei/iQuery/iQuery%20for%20iOS.zip編程

依照下面的步驟建立並運行iOS程序的自動化測試用例:
1.    在Mac機上啓動 instruments:app

ios-launch-instruments

2.    在「Choose a Template for The Trace Document」對話框裏選擇「Automation」。框架

ios-select-automation

3.    點擊instruments上的「Choose Target」下拉框 。eclipse

ios-choose-target
4.    將咱們的演示用程序Gestures.app設置爲目標程序。

ios-choose-target-gestures
5.    Gestures.app要求iOS 5的模擬器,須要顯式設置。

ios-set-instruments-option
6.    而後點擊「Create …」按鈕建立一個新的自動化測試用例腳本。

ios-instruments-create-script
7.    並在新腳本對話框中輸入以下代碼。
ios-instruments-iquery-statements
8.    最後,點擊底下的「run」按鈕來執行自動化測試用例腳本,而後在結果對話框裏查看結果。

ios-run-instruments-test

iQuery for Android簡易教程


這個教程是基於Android Instrumentation測試技術寫的,但iQuery for Android同時還支持從View Server的輸出中查詢控件,關於如何從View Server中獲取Android Activity層次信息的方法,後面會寫文章講到:

演示用的Android程序在:https://github.com/vowei/iQuery/tree/master/java/Test/multiplatformdemoproject
其源碼在:https://github.com/vowei/iQuery/tree/master/java/sample

下面是使用iQuery編寫Android Instrument UI測試的方法:
1.    打開eclipse而且建立一個新的Android工程(Create Android Project),命名爲tutorial.

android-new-project-name
2.    iQuery支持android 2.2以上的版本,在這個教程裏,咱們選擇Android 2.2平臺。

android-new-project-target
3.    由於建立的是測試工程,所以不須要添加任何的Activity。

android-new-project-info
4.    工程建立完畢以後,更新新建工程的manifest.xml文件,添加一個新的instrumentation塊,來指定要測試的應用的包名。

android-test-manifest-file
5.    在eclipse裏右鍵單擊tutorial工程,依次點擊「Build Path」-> 「Configure Build Path」。

android-config-build-path-menu
6.    在「Properties for tutorial」對話框裏,點擊「Add External JARs」按鈕。

android-config-build-path-add-external-jars
7.    添加對iquery-core.jar和iquery-instrumentation.jar的引用,因爲iQuery是基於antlr的,還須要添加對antlr-runtime-3.4.jar的引用。這篇教程裏,咱們使用robotium來抓取和修改UI控件的信息,還須要添加對robotium-solo-3.1.jar的引用。最後,Build path應該以下所示:

android-config-build-path-jars
8.    建立一個新的測試用例文件,並輸入下面的代碼。

package cc.iqa.studio.demo.test;

 import java.io.*;
 import java.util.*;
 import org.antlr.runtime.*;

 import junit.framework.Assert;
 import cc.iqa.iquery.*;
 import cc.iqa.iquery.android.*;

 import com.jayway.android.robotium.solo.*;

 import android.test.ActivityInstrumentationTestCase2;
 import android.view.*;

 @SuppressWarnings("rawtypes")
 public class DemoOnlyTest extends ActivityInstrumentationTestCase2 {
    private static String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "cc.iqa.studio.demo.MainActivity";
private static String TARGET_PACKAGE_ID = "cc.iqa.studio.demo";

private Solo _solo;

@SuppressWarnings("unchecked")
public DemoOnlyTest() throws Exception {
    super(TARGET_PACKAGE_ID, Class
            .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME));
}

public void setUp() throws Exception {
    this._solo = new Solo(this.getInstrumentation(), this.getActivity());
}

public void testSimplifiedAPI() throws Exception {
    List<SoloTreeNode> r1 = iQuery.query(
            new SoloTreeNode(_solo.getCurrentViews().get(0)), 
            "LinearLayout >> TextView [mText = 'Down Under']");
    Assert.assertEquals(2, r1.size());              
}

private List<ITreeNode> parseQueryAgainst(View root, String iquery)
        throws IOException, RecognitionException {
    InputStream query = new ByteArrayInputStream(iquery.getBytes("utf8"));
    ANTLRInputStream input = new ANTLRInputStream(query);
    iQueryLexer lexer = new iQueryLexer(input);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    iQueryParser parser = new iQueryParser(tokens);

    List<ITreeNode> candidates = new ArrayList<ITreeNode>();
    candidates.add(new SoloTreeNode(root));
    List<ITreeNode> result = parser.query(candidates);
    return result;
}
 }


9.    最後,將演示用的Android程序安裝到模擬器或者手機上,並運行測試用例。

android-run-tutorial-tests

完整的測試用例文件能夠從這裏下載:
https://github.com/vowei/iQuery/blob/master/java/sample/src/cc/iqa/studio/demo/test/DemoOnlyTest.java

相關文章
相關標籤/搜索