This section contains the answers to the extra questions in the technical challenge.
The application can be improved with features which, most of them, are implemented here in one of my other repositories. It includes:
- Higher test coverage using Unit Tests and Integration Tests.
- Docker. It can be used to virtualize the application environment. In the application mentioned, it uses docker-compose to setup the required dependencies.
- Celery worker to run tasks in the background.
- A notification system that can be used to check the status of the tests.
- Redis. It can be used, together with this repository to provide a Priority Queue. Then, it can be used to, given a set of scarce resources, decide which test to run next.
- Authentication. Google OAuth 2.0 can be used to access Google APIs.
- AWS S3 can be used to upload and store the APKs, partitioned by owner, application and version.
- AWS ECS can be used to ship and scale multiple instances of the web server.
- uWSGI is required to overcome the issue with multi-threading in Python.
- Detect currently opened app using these instructions.
- Accessing USB device over the network using this tool.