With mobile apps taking the centre stage in software development, more companies are getting into mobile app development. As such, there is a great demand for mobile app engineers. While recruiting mobile test engineers, it is important to access their testing skills. Here are some of the common questions that will help you in this regard.
1) What are the different types of mobile applications?
Mobile applications are commonly categorized into three types:
- Native Apps: Mobile applications that are designed for the native operating system of a mobile device. For instance, an Android app works on Android mobile. You cannot install it on an iOS phone or any device not running the Android OS. As native apps are specifically designed for the mobile OS, they can easily and quickly access the hardware which means faster operations and reliable performance. However, the developer has to write a different version of the app for every platform.
- Web Apps: Web applications are not standalone apps but are responsive websites that can be accessed via a mobile web browser. You don’t have to download or install them. Being platform-agnostic, they are easy to develop. However, the performance varies with each mobile browser. You will need an Internet connection to access these apps.
- Hybrid Apps: Hybrid Apps combine native APIs and web technologies to make web apps look like native apps. They are quicker to build but lack the speed and performance when compared with native apps.
2) Difference between Simulator/Emulator and real devices
To check the behavioral consistency of mobile apps on different devices, developers normally perform mobile testing on mobile devices.
Mobile device testing is broadly classified into two types:
- Real Devices: As the name suggests, companies purchase real devices running on various platforms such as Android, iOS, BlackBerry, and Windows to test their applications. Being real in nature, real device testing produces highly accurate results.
- Virtual Devices: Virtual devices are software-based devices that simulate the features of real devices. Testing mobile apps on thousands of mobile devices are expensive. As such, companies run mobile testing on virtual devices to save costs. However, the produced results will be close to real testing but not as accurate as them.
Virtual devices are dividing into two types:
- Simulators: Simulators are software-based mobile devices written in high-level languages. They mimic the target object’s internal state. They test the hardware components of a device such as firmware, memory, etc.
- Emulators: Emulators are software-based mobile devices written in machine-level assembly languages to emulate the behavior of the target device on the computer. Here, the Instructions Set Architecture (ISA) of the target device translates to the virtual device running on the computer. Emulators mimic the external behavior of an object.
3) Describe a typical first user flow
A user flow is a path followed by the user on an app to perform a task. Consider the Amazon eCommerce app for instance. A user visits the app from multiple sources. The user browses various categories, selects the products for purchase, adds them to the cart, and checks out to complete the transaction. The entire user navigation of on an app is mapped as a user flow.
Here is a typical user flow example:
- A user lands on the Amazon application home page
- Clicks on a category page
- Browses various products and clicks on a product
- Adds the product to the shopping cart
- A new user will sign up and an existing user will sign in
- Checks out and makes payment to complete the purchase
4) Describe a testing strategy around device fragmentation
Device fragmentation is a challenge for mobile testing as it involves testing different models of devices that use different versions of an operating system. For instance, mobile brands such as Samsung Galaxy S8, Galaxy S3, Nexus 4, One Plus 6TXperia Z5 all use different versions of Android. In addition, you have to deal with different screen sizes and resolutions. So, test scripts that work fine on one mobile browser might break out on another. As such, you should prepare a testing strategy to deal with device fragmentation.
Here is a basic testing strategy
- You cannot test every type of device and version of OS. So, Shortlist a minimum set of devices to support: For instance, you can consider Android version 4.4 and above. Similarly, choose resolution types, Bluetooth versions, etc.
- Shortlist a set of brands to test. Create your audience base based on a criterion such as leading brands, popularity, etc, and come up with main user personas.
- Use responsive design to reflect all your major user personas
- Define a list of user flows and devices that will suit automation testing
- Using cloud services will give you access to a range of devices to choose from
5) List the most common automation tools
As mobile apps gained popularity over the past few years, a number of mobile testing automation tools entered the market. Here are the most common automation tools:
- Appium: The most popular tool that supports cross-technology and cross-platform mobile testing.
- Robotium: An open-source mobile automation testing framework designed to test Android UI Interface.
- Calabash: An open-source mobile automation testing framework for UI acceptance tests. It supports both Android and iOS devices.
- Kif: An open-source mobile integration testing automation framework that supports iOS apps.
- XCUITest: Apple developed an open-source interface testing framework developed by Apple. It only supports iOS native apps.
- Selenium: It is a highly popular test automation tool that supports multiple languages and browsers. It is a base for multiple testing automation frameworks.
- Cucumber: It is a behavior-driven development based open-source test automation tool that is popular for testing UI testing.
6) Provide a list of testing types that are not functional testing
Here are some of the non-functional testing types:
- Performance Testing: Checks the stability and responsiveness of a system under a workload
- Security Testing: Checks the vulnerabilities, risk, and threats in the software
- Usability Testing: Checks how easy the design is for end-users
- Load Testing: Checks the application behavior under a specific load
- Reliability Testing: Checks the consistency and failure-free operation of the app
- Stress Testing: Checks the robustness of the system under heavy loads
- Compatibility Testing: Checks whether the software runs on different platforms, OS, networks etc.
- Volume Testing: Checks the performance of software with a specific amount of data
- Recovery Testing: Checks the ability of the software to recover from crashes and hardware failures
- Compliance Testing: Checks whether the software complies with the organization standards and regulations
- Install Testing: Checks the software installation and how it works
- Localization Testing: Checks the software behavior with regard to local culture
7) Explain iOS security
Security is a key aspect of iOS. Apple securely integrates hardware and software so that every component of the iOS is secure.
- The secure boot chain ensures the OS is running on a valid iOS device. The low-level software cannot be compromised too.
- Secure Enclave is a co-processor that runs its own secure boot and manages encryption, and cryptographic operations.
It uses Touch ID to authenticate iOS users and unlocks the device on successful authentication.
- Data is encrypted locally and remotely. A hierarchy of keys and a hardware encryption engine manages each file created on the device.
- iOS Keychain is used to secure data and passwords
- Only apps validated by Apple are available on Apple Store. To install an app on an iOS device, executable code should be signed by the Apple certificate.
- For runtime security, Apple uses a sandbox wherein the app doesn’t interact with other apps or data.
iOS uses standard network protocols and advanced security to protect data and user info transmitted on the network.
8) What are the types of bugs/errors encountered in mobile testing?
Common bugs or errors encountered while performing mobile testing can be categorized into 3 types:
- Platform-related bugs: Errors that are related to the operating system (eg: iOS, Android).
- Application-related bugs: Bugs related to business logic.
- App architecture-related bugs: Bugs related to the components of the application architecture (eg: double-clicking buttons, progress indicator, portrait/landscape orientation etc).
9) How to test the CPU usage of a mobile device?
You can test the CPU usage on a mobile device by using apps such as CPU-Z, CPU Monitor, Task Manager, Usemon etc. The SeeTest platform also provides CPU consumption monitoring on real devices as part of their Mobile UX Performance Testing.
10) What are the most common challenges encountered while testing mobile apps?
Here are some of the most common challenges encountered while testing mobile apps:
- Device fragmentation
- Browser fragmentation
- Connection types
- Screen sizes
- Device settings
- Battery life
11) When should you not automate mobile testing?
Here are some instances wherein test automation is not a good idea.
- When you are only able to partially automate a feature set.
- If there are only 2-3 builds.
- If a feature fails to perform as per requirements specifications.
To conclude, with the proliferation of mobile applications companies are looking to hire the most experienced and qualified engineers and developers. Depending on a company’s needs and projects they will ask each candidate different questions. However, the questions listed above will comprise a good amount of and help you successfully navigate the interview process. We hope that you use this guide to prepare for the process of searching for a job in the mobile app testing market. If you are looking to practice or try our software out before an interview download a free trial now.