Automation for iOS 9.3.x and above

quality-jam-2017-elise-carmichael-and-corey-pyle-jumpstarting-your-test-automation-12-638

     For iOS automation, Appium relies on system frameworks provided by Apple. For iOS 9.2 and below, Apple’s only automation technology was called UIAutomation, and it ran in the context of a process called Instruments. As of iOS 10, Apple has completely removed the UIAutomation instrument, thus making it impossible for Appium to allow testing in the way it used to. Fortunately, Apple introduced a new automation technology, called XCUITest, beginning with iOS 9.3. For iOS 10 and up, this will be the only supported automation framework from Apple.

     The below Machine configuration is mandatory for running Appium automation against an iOS 9.3.x device.

  • Appium: 1.6.4 and above
  • Mac OS: OS X El Capitan 10.11 and Above
  • Xcode Version: 8.0 and Above

Setting up appium-xcuitest-driver

     This is Appiun driver for iOS using XCUITest for back-end. It has the WebDriverAgent which is a WebDriver server implementation for iOS that can be used to remote control iOS devices. It allows you to launch & kill applications, tap & scroll views or confirm view presence on a screen. This makes it a perfect tool for application end-to-end testing or general purpose device automation. It works by linking XCTest framework and calling Apple’s API to execute commands directly on a device. WebDriverAgent is developed and used at Facebook for end-to-end testing and is successfully adopted by Appium.

EXTERNAL DEPENDENCIES

     This package has a lot of external dependencies and we need to ensure that all those dependencies are installed properly to make this work. Below section explains the dependencies and its installations:

libimobiledevice [http://www.libimobiledevice.org/]

Installation  :  > brew install ideviceinstaller

carthage: [https://github.com/Carthage/Carthage]

Installation  :  > brew install carthage

mobiledevice:

Installation: brew install mobiledevice

ios-deploy: [https://github.com/phonegap/ios-deploy]

Installation :   npm install -g ios-deploy

deviceconsole:

Installation : npm install -g deviceconsole

xcpretty: [https://github.com/supermarin/xcpretty]

Installation : gem  install xcpretty

CONFIGURATION FOR REAL DEVICES

The profile can be manually associated with the project (keep in mind that this will have to be done each time the WebDriverAgent is updated).

Once you install the Appium, you will get the path node_modules/appium-xcuitest-driver/WebDriverAgentOpen WebDriverAgent.xcodeproj in Xcode and select your developmentteam for both the WebDriverAgentLib and WebDriverAgentRunner targets. This should also auto select Signing Certificate.

Selecting Signing Certificate for WebDriverAgentLib

1

Select Provisioning Profile for WebDriverAgentRnner [Select a Wildcard Development Provisioning file since this will work for all the bundle ids]

2

     Build WebDriverAgent once to verify all above steps worked. You can just build and save the xcode project [The WebDriverAgentRunner will be installed when you execute your automation script with expected capabilities] OR you can build and install the WebDriverAgentRunner on a device connected to your mac using the below command,

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=’

Now you are ready to start the automation using XCUITest framework for iOS 9.3.x above devices.

make it perfect !

Different Testing Aspects and Areas or Types of Testing

Following are the different aspects and areas or type of testing not only in mobile application testing:

Functionality

  • User Interaction Testing
  •  Transaction testing

Performance

  • UI responsiveness
  • Transaction completion time(s)
  • Peak load performance
  • Longevity

Network

  • Network type (Wi-Fi, 2G, 3G, 4G)
  • Impact of Connectivity Issues

Security

  • Data Retention on device
  • Transmission Security

Compatibility

  • Mobile Platform Compatibility (e.g. iOS 9.x, iOS 8.x, iOS 7.x, iOS 6,
    iOS 5.1.1, iOS 5.1.1)
  • Device Model Compatibility
  • Backward compatibility (with previous app version)

Conformance

  • Marketplace guidelines compliance (e.g. Apple App Store policies)
  • Enterprise policy compliance (e.g. prohibited content)

Usability

  • User Experience

Installation and Provisioning

  • Installation process
  • Un-installation process
  • User provisioning and de-provisioning.

Life with Bug Tracking Tools

tracking-bugs-with-intervals-online-task-management-software


I would like to share small information about the bug tracking or project management tools


Salesforce (https://login.salesforce.com/?locale=in) – is a web-based project management as well as bug tracking system, it is very effective in software quality assurance. The platform supports tasks planning, creating stories to track tasks as well as various reports and statistics. I used this tool for defect tracking, defect cloning and work hours burning. The other features of this tool include:

  • Project.
  • Stories.
  • Clone defects.
  • Defect sharing.
  • Kanban (Story-wise and project-wise), to helps companies visualize workflow, analyze and improve business processes and reduce waste.
  • Chatter.
  • Defects.
  • Burn Work Hours.
  • Reports.

Unfuddle (https://unfuddle.com) – is a secure, defect tracking and project management solution. Developers can commit the source code. I used this tool for tracking defects in 2011-2012 in my software testing life. Look and feel is good, easy to use. The other features of this tool include:

  • Web-based Subversion access.
  • Milestone tracking.
  • Bug and issue management.
  • Wiki.

JIRA (https://www.atlassian.com/software/jira) – is a branded issue tracking product, developed by Atlassian, used for bug tracking and project management. Developers can commit the code. I used this tool for tracking defects in 2012-2013. The other features of this tool include:

  • Code Integration.
  • Project Tracking.
  • Issues Tracking.
  • Process (Software development workflow).
  • Planning (JIRA to help capture, assign, and prioritize their work).
  • Wiki.

image2014-3-13 14-48-34     logo180     image2014-3-13 14-49-46

Team Foundation Server (TFS) – It manages repositories, build processes, testing infrastructure, and lab deployment all while easily collaborating and reporting status. Team Foundation Server supports connects, collaborate, and deliver on time. Created to get more out of development teams, Team Foundation Server (TFS) 2013 is the application lifecycle management hub for Visual Studio. It enables all stakeholders to participate in the development process using a single solution. Use it to manage heterogeneous projects and teams as well. The other features of this tool include:
  • Project.
  • Stories.
  • Version Control.
  • Agile Planning & Collaboration.
  • Build.
  • Test Case Management.
  • Reporting.

Axosoft (http://www.axosoft.com/bug-tracker) – (formerly OnTime) is a proprietary project management and bug tracking system, available as hosted or on-premises software. Project managers and developers are able to visually see each task, requirement, defect and incident in the system on individual filing cards through the Scrum planning board. I am using this tool for tasks creations, defect tracking, add work logs. The other features of this tool include:

  • Bug tracking
  • Requirements management
  • Scrum planning board
  • Scrum burndown charts
  • Team wiki
  • Help desk/incident tracking
  • Workflow automation
  • Reporting
  • Data visualization
  • SCM integration

Project Locker (https://portal.projectlocker.com) – is web-based project management and bug tracking with Trac. This tool was used for tracking defects, subversion hosting. Trac was my first bug tracking tool. The other features of this tool include:

  • Project management (Roadmap, Milestones, etc.).
  • Ticket system (bug tracking, tasks, etc.).
  • Search engine for tickets.
  • Email notifications.
  • Wiki with attachments.
  • Version control system.

axosoft-logo-black@2x     Visual_Studio_2012_logo_and_wordmark.svg     image2014-3-13 14-48-23

Mantis – is an issue tracking system and project management tool. I used this tool for storing my test scripts; it helped me to store the test scripts in structured manner with different Test Suites. The other features of this tool include:
  • E-mail notifications upon changes being made to issues in the system.
  • Version control system.
  • Roadmap.
  • Wiki.
  • Change Log.

TestLink (http://testlink.org/) – is a web-based test management system, it is very effective in software quality assurance. The platform offers support for test cases, test suites, test plans as well as various reports and statistics. I used this tool for creating test plan, test suite and test cases. The other features of this tool include:

  • User roles and management.
  • Grouping of test cases in test specifications.
  • Test plans.
  • Platforms.
  • Requirements with versioning.
  • Support for testing different builds of the software.
  • Reports and charts.
  • Bug tracking system integration (Mantis, JIRA, and others).

Assembla (https://www.assembla.com/) – is web-based project management, code management and bug tracking system. Assembla using a distributed agile process to link employees from multiple locations. Assembla Workspaces provide development teams with tools including: task management, code repositories, real-time collaboration, and deployment tools. The other features of this tool include:

  • Tickets.
  • Wiki.
  • StandUp.
  • Messages.
  • Files.
  • SVN.
  • Team.
  • Stream.
  • Admin.

image2014-3-13 14-50-10     image2014-3-13 14-50-1     image2014-3-13 14-49-28