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);

浙公网安备 33010602011771号