ios testing

http://www.cnblogs.com/vowei/archive/2012/08/10/2631949.html

Automating UI Testing   Instruments User Guide

https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html

 

Testing, Debugging, and Performance

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_debugging/SAppsDebugging.html

 

UI Automation JavaScript Reference

http://developer.apple.com/library/ios/#documentation/DeveloperTools/Reference/UIAutomationRef/_index.html

 Note: To fully understand this section, you should be familiar with the information in iOS Human Interface Guidelines.

Frank: Automated Acceptance Tests for iPhone and iPad

http://blog.thepete.net/2010/07/frank-automated-acceptance-tests-for.html

 

#import "<path-to-library-folder>/TestUtilities.js"

  

UIATarget.localTarget().frontMostApp();

//To reach the app window, the main window of your app, you would specify

UIATarget.localTarget().frontMostApp().mainWindow();

  

UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0];

UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0];

UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Chocolate Cake"];

  

// List element hierarchy for the Recipes screen
 
UIALogger.logStart("Logging element tree …");
UIATarget.localTarget().logElementTree();
UIALogger.logPass();

  

// List element hierarchy for the Unit Conversion screen
 
var target = UIATarget.localTarget();
var appWindow = target.frontMostApp().mainWindow();
var element = target;
 
appWindow.tabBar().buttons()["Unit Conversion"].tap();
UIALogger.logStart("Logging element tree …");
element.logElementTree();
UIALogger.logPass();

  

// Switch screen (mode) based on value of variable
 
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var tabBar = app.mainWindow().tabBar();
 
var destinationScreen = "Recipes";
 
if (tabBar.selectedButton().name() != destinationScreen) {
    tabBar.buttons()[destinationScreen].tap();
}

  

Performing User Interface Gestures

UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();
UIATarget.localTarget().tap({x:100, y:200});
UIATarget.localTarget().doubleTap({x:100, y:200});
UIATarget.localTarget().twoFingerTap({x:100, y:200});

UIATarget.localTarget().pinchOpenFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);

UIATarget.localTarget().pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);

UIATarget.localTarget().dragFromToForDuration({x:160, y:200}, {x:160, y:400}, 1);

UIATarget.localTarget().flickFromTo({x:160, y:200}, {x:160, y:400});

var recipeName = "Unusually Long Name for a Recipe";

UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(recipeName);



var tabBar = UIATarget.localTarget().frontMostApp().mainWindow().tabBar();

var selectedTabName = tabBar.selectedButton().name();

if (selectedTabName != "Unit Conversion") {

tabBar.buttons()["Unit Conversion"].tap();

}


UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0]

.scrollToElementWithPredicate("name beginswith ‘Turtle Pie’");

  

Adding Timing Flexibility with Timeout Periods

UIATarget.localTarget().pushTimeout(2);

//You then run the code to perform the action and pop the custom timeout off the stack.

UIATarget.localTarget().popTimeout();

UIATarget.localTarget().delay(2);

  

Logging Test Results and Data

var testName = "Module 001 Test";
UIALogger.logStart(testName);
//some test code
UIALogger.logPass(testName);


///////////
var testName = "Module 001 Test";

UIALogger.logStart(testName);

//some test code

UIALogger.logMessage("Starting Module 001 branch 2, validating input.");

//capture a screenshot with a specified name

UIATarget.localTarget().captureScreenWithName("SS001-2_AddedIngredient");

//more test code

UIALogger.logPass(testName);

  

Verifying Test Results

var cell = UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()
    .firstWithPredicate("name beginswith ‘Tarte’");
if (cell.isValid()) {
    UIALogger.logPass(testName);
}
else {
    UIALogger.logFail(testName);
}

  

Handling Alerts

UIATarget.onAlert = function onAlert(alert) {

var title = alert.name();

UIALogger.logWarning("Alert with title '" + title + "' encountered.");

// return false to use the default handler

return false;

}

  

Handling Internally Generated Alerts

UIATarget.onAlert = function onAlert(alert) {

var title = alert.name();

UIALogger.logWarning("Alert with title '" + title + "' encountered.");

if (title == "The Alert We Expected") {

alert.buttons()["Continue"].tap();

return true; //alert handled, so bypass the default handler

}

// return false to use the default handler

return false;

}

  

Detecting and Specifying Device Orientation

var target = UIATarget.localTarget();

var app = target.frontMostApp();


//set orientation to landscape left

target.setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPELEFT);

UIALogger.logMessage("Current orientation now " + app.interfaceOrientation());


//reset orientation to portrait

target.setDeviceOrientation(UIA_DEVICE_ORIENTATION_PORTRAIT);

UIALogger.logMessage("Current orientation now " + app.interfaceOrientation());

  

Testing for Multitasking

UIATarget.localTarget().deactivateAppForDuration(10);

  

posted @ 2013-01-18 22:52  zyip  阅读(548)  评论(0编辑  收藏  举报