Title:
No Code Test Recording for iOS Applications

Thumbnail Image
Author(s)
Mittal, Anushk
Authors
Advisor(s)
Orso, Alessandro
Advisor(s)
Editor(s)
Associated Organization(s)
Organizational Unit
Organizational Unit
Supplementary to
Abstract
Over the past decade, mobile apps have touched every sphere of life with ~4.5M applications available to download through Apple’s App Store and Google’s Play Store that are expected to generate ~$1T in revenue by 2023. Today, an average American checks their phone once every 12 minutes, but testing these mobile apps is mostly unreliable and too resource expensive with current state-of-the-art technology. Specifically, testing iOS apps requires writing code using Xcode IDE that requires a development environment setup for all testers. These testers must also be familiar with coding for iOS apps as they need to interface with XCUITest API to write UI tests or verify the automatically generated code through Xcode’s XCUITest Recorder. To address this issue and to make iOS testing accessible to everyone, we adopt the Barista technique to passively record user interactions and build device-independent test scripts using any iOS device. We describe a three-part technique of recording user interactions through Objective-C swizzling, encoding generated test cases using a separately hosted server, and generating XCUITest files to run encoded test cases. We conclude with experimental results and discussions that demonstrate the effectiveness of our solution on a host of sample open-source applications that represent the most common and popular app categories and functionalities along with future directions on how this collected big data could be leveraged for intelligent insights. The goal of this research is to make testing approachable and easy for large corporations and indie developers alike with presented tool made open-source at https://github.com/anushkmittal/iOSTestSDK.
Sponsor
Date Issued
2020-08
Extent
Resource Type
Text
Resource Subtype
Undergraduate Thesis
Rights Statement
Rights URI