Our goal is to create a system for automated UI testing of native Android apps.
We need assistance with:
- defining optimal architecture for a scalable, automated, black-box testing system
for native Android apps running on Android virtual devices.
- technical implementation of initial Proof-of-concept version of the system
The roadmap toward the final product can be divided into several phases, each addressing
specific aspects of architectural design and technical implementation of the system:
1. Defining the system architecture
- defining optimal Android virtualization system
- defining needed computing/networking resources and selecting optimal infrastructure provider
- defining optimal automated testing framework
2. Initial setup of a PoC system
- creating several instances of AVDs, using previously defined virtualization system
- developing a PoC script to automate provisioning of AVDs
- developing a PoC script to automate installation of the testing app from the App store
- creating a PoC automated test, covering a simple test case (like signing up for a user
account within the testing app)
3. Testing and fine-tuning the PoC system with different apps/test cases
4. Defining the specs for the final product
5. Developing the final product following the defined specs
Curently, our focus is on points 1. and 2. and this is where we need your help.
Generally, your job would be:
- to review our requirements (see below) and help us define optimal system
architecture accordingly - this part covers the first point and will mostly
consist of verbal discussions with our technical staff
- to provide technical assistance with the initial setup of a PoC system - this
part covers the second point and will mostly consist of helping us with the
initial setup of the PoC system
Regarding the requirements for the final system, they are:
1. All components requiring an underlying OS should run on top of Linux-based systems
2. Provisioning of AVDs should be simple, scriptable, scalable and cost-effective
3. The interaction with the testing system must not require manual interaction with the
UI (except within the process of creating a new test workflow, i.e. recording of
user's interaction with the UI)
4. The testing process must be able to dynamically change (simulated) user input
according to values received on-the-fly (for example via an API call or similar)
Finally, although I dare to assert that our team holds significant expertise and
experience in Linux administration/VoIP/SMPP/Shell scripting/Information security,
we also recognize areas in which we don't excel. Being so, we always enjoy sharing
knowledge, open-mindedly receiving and discussing honest criticisms, collaborating and
(in many cases) partnering with experts whose expertise either complement or overlap
with our own.
We'll deeply respect and thoroughly review every application for this job.
To provide you with some technical details, we covered a typical use case for the
proposed system within the attached file.
Looking forward to share knowledge with you!