This repository contains the code related to my Bachelor's Capstone Project "Automated Performance Testing Suite for Mobile iOS Applications: Designed for repetitive tests and data collection of performance metrics".
This project was designed to execute repeated and controlled performance tests on mobile iOS applications using Xcode' XCUITests for tests and Instruments app for metric collection. To achieve this, the project uses various Xcode Command Line Tools (e.g. xcodebuild
) and pymobiledevice3
to interact with physical iOS devices. For a more detailed overview of these technologies please refer to the cores' README Technologies section.
On a high level, the project aims to provide the following features:
- ✅ Device selection and connection to physical iOS devices.
- ✅ Build an application from source code.
- ✅ Configure test plans that define the tests executed and the metrics collected.
- ✅ Execute test plan on a physical iOS device using the test plan configuration and build.
- ✅ Export and parse the collected metrics.
- 🚧 Package server with macOS app for easy use.
While these are a high level description of features, please take a look at each component to get a more detailed overview of the features and technologies used.
The project is divided into three main components:
Component | Description | README |
---|---|---|
Core | A Python library that provides the main functionality of the project. | README |
API | A FastAPI server that provides a RESTful API to interact with the Core. | README |
macOS | A SwiftUI macOS app that provides a graphical user interface. | README |
The following diagram shows a basic overview of the interaction between the components, the real device, database, and file system.
/root
|-- core/ # Core library
|-- api/ # API Server
|-- macOS/ # SwiftUI macOS app
|-- misc/ # Miscellaneous files (example iOS xcode project and server installation script)
|-- README.md # This file
Technology | Version | Description |
---|---|---|
Python | 3.13+ | Api and Core were developed developed using Python 3.13. |
Xcode | 16+ | Xcode for xcode specific operations. |
macOS | 14+ | macOS is required for this to run as the Core interacts with xcode tools. The minimum version of 14 is set by the macOS app. |
git clone git@github.com:marvin-kolja/capstone-public.git
cd capstone
- Run the installation script
This will install python dependencies and sets up server environment in ~/capstone
.
Caution
This requires python3.13
to be installed and available in the PATH. Check if python3.13
is available by running command -v python3.13
.
sh ./misc/install_server.sh
- Start the server
sh ~/capstone/start_server.sh
- Start the tunnel connect server
Note
This will ask for your password to start the tunnel connect server. Please read more about why this is necessary in the core README.
sh ~/capstone/start_tunnel_server.sh
- Make sure it's working
curl http://localhost:8000/health
# {"status":"ok","db":"ok","tunnel_connect":"ok"}
Important
Currently, the macOS is not distributed to GitHub. You can either build it yourself or contact me for a pre-built signed and notarized version.
-
Clone the repository:
git clone git@github.com:marvin-kolja/capstone-public.git cd capstone
-
Follow the setup instructions in each component's README.
-
Start the API and the macOS app as instructed in their respective READMEs.
Marvin Kolja Willms - marvin.willms@code.berlin