By the end of this chapter, you will be able to: - identify different types of mobile application testing based on specific user requirements, - prepare a clear and effective mobile application test plan by following proper work procedures, - thoroughly test a mobile application according to your test plan, - prepare a detailed and accurate mobile test report using correct work procedures.
Mastering these skills will help you ensure mobile apps are reliable, user-friendly, and ready for real-world use in the tech industry.
Mobile application testing is the planned process of checking that an app works correctly, safely and comfortably on the devices, networks and users it was built for. Mobile apps face conditions that desktop software rarely meets: small screens, many device models, interrupted connections, limited battery and memory, and users who are distracted or on the move. Example: a building contractor releases a site-reporting app that lets supervisors photograph progress and submit daily reports. If it is tested only on the developer's new phone and office Wi-Fi, it may crash on an older handset or lose reports on a weak signal at the site. Testing is done in layers, starting with the smallest pieces of code and ending with the whole app in the hands of real users.
| Test type | Main question | Usually done by | Typical stage |
|---|---|---|---|
| Unit test | Does each small piece of code do its job? | Developers | During coding |
| Integration test | Do the parts work together? | Developers and testers | After units pass |
| Usability test | Can real users use the app easily? | Testers with representative users | Prototype and later |
| System test | Does the complete app meet the requirements? | Independent testers | Complete build |
| Security test | Can the app and its data be attacked? | Security testers | Throughout, and before release |
| Performance test | Is it fast and stable under load? | Performance testers | Complete build |
| Compatibility test | Does it work on different devices and systems? | Testers | Complete build, before release |
A unit test checks the smallest testable part of an app, such as a single function, method or class, in isolation from the rest of the system. It is written and run by the developer, usually while the code is being written, so that faults are found when they are cheapest to fix. Example: a SACCO app contains a function that calculates loan interest. A unit test feeds the function known values and compares the result with the answer worked out by hand.
Formula: interest = principal × rate × time
Substitution: interest = 100,000 × 0.12 × 1
Working: 100,000 × 0.12 = 12,000
Result: expected interest = Ksh 12,000
If the function returns any other value for these inputs, the test fails and the developer corrects the code before it is combined with other parts.
Key features of a good unit test:
Steps for writing a unit test:
An integration test checks that separately built modules work correctly when they are connected. Each module may pass its unit tests and still fail when it exchanges data with another, because of mismatched data formats, wrong assumptions about order of calls, or errors in how one module handles another's failure. Example: a hospital appointment app has a booking module, a patient database and an SMS reminder service. Integration testing confirms that when a patient books a slot, the record is saved in the database with the right date and the reminder service sends the message to the correct phone number.
Common integration approaches compare as follows:
| Approach | How it works | Advantage | Limitation |
|---|---|---|---|
| Big bang | All modules are combined at once and tested together | Quick to set up | Hard to find which module caused a failure |
| Top-down | Upper modules are tested first, with stubs replacing lower ones | Main user flow is checked early | Needs many stubs |
| Bottom-up | Lower modules are tested first, with drivers calling them | Core services are proven early | The complete flow is seen late |
| Sandwich | Top-down and bottom-up are carried out together and meet in the middle | Balances early flow and core checks | More planning needed |
What integration tests usually check:
A usability test measures how easily, efficiently and satisfactorily real users can complete tasks with the app. Code can be technically correct and still be abandoned because menus are confusing, buttons are too small to tap or text is hard to read outdoors. Example: a school develops an app for parents to check fee balances and download report forms. Ten parents of different ages and phone experience are asked to find a balance and download a form while an observer notes where they hesitate or make mistakes.
Common usability measures:
Formula: task success rate = (users who completed the task ÷ users who attempted it) × 100
Substitution: task success rate = (8 ÷ 10) × 100
Working: 0.8 × 100 = 80
Result: task success rate = 80%
If the target was 90%, the design of that task needs improvement.
Steps for running a usability test:
Mobile-specific points to observe include touch target size, readability in bright sunlight, use with one hand, clear feedback after each tap, and sensible behaviour when the user rotates the screen or receives a call.
System testing evaluates the complete, fully integrated app against the specified requirements. The tester treats the app as a black box: they do not look at the code but use it as a user would and check that each requirement is met from start to finish. Example: a bank's mobile app is tested through a full journey of logging in, checking a balance, transferring money to another account, viewing the mini statement and logging out. The tester confirms that the amount deducted, the amount received and the entries on the statement all agree.
What system testing covers:
Defects found are recorded with the steps to reproduce them, the expected and actual results and a severity rating, so that developers can fix them and testers can retest. The app is normally accepted for release only when all critical defects are closed.
A security test checks whether the app protects its users, their data and the back-end systems from misuse. Mobile apps are especially exposed because they live on devices that can be lost, stolen, rooted or infected, and they communicate over networks that may be untrusted. Example: a county government revenue app lets residents pay market fees and land rates. Security testing checks that a resident cannot see another person's payment record, that the payment details cannot be intercepted, and that a stolen phone does not give access to stored data. Kenya's Data Protection Act, 2019 places duties on organisations that handle personal data, so protecting such data is a legal as well as a professional concern.
Areas covered by a security test:
Steps in a security test:
A performance test measures how fast, responsive and stable the app is under expected and extreme conditions. Users quickly abandon apps that start slowly, freeze or drain the battery, and servers that fail under heavy demand can stop business altogether. Example: a hotel booking app works well with 20 users in the office, but during the December holiday season thousands of guests search rooms and pay at the same time. Performance testing simulates that demand beforehand to find out whether the app and its servers cope.
Main performance measures:
Formula: throughput = number of requests ÷ time in seconds
Substitution: throughput = 12,000 ÷ 60
Working: 12,000 ÷ 60 = 200
Result: throughput = 200 requests per second
Types of performance test:
Mobile-specific checks include behaviour on slow or changing networks, battery drain during long use, performance on low-memory phones, and how quickly the app resumes after being in the background.
A compatibility test checks that the app installs and works correctly across the range of devices, operating system versions, screen sizes and network conditions used by its audience. Unlike a desktop product, a mobile app meets hundreds of device models with different hardware, manufacturers' customisations and software versions. Example: a farm produce marketplace app is used by farmers on inexpensive Android phones with small screens and by buyers in town on newer handsets. Compatibility testing confirms that prices, photos and order buttons display and work properly on both, including over slow mobile data.
Dimensions of compatibility:
Steps for planning compatibility testing:
Create a free account to open more of this chapter.
Free: practical guides, quick cards, workplace scenarios and more.
Create a free accountType: Individual
| Tools & Equipment | Materials |
|---|---|
| Computer installed with Windows 10 OS or higher | |
| Android Studio IDE | |
| Java Development Kit (JDK) | |
| Android SDK | |
| Visual Studio Code | |
| Android Emulator or Android Device |
| S/N | Item | Quantity |
|---|---|---|
| 1 | Computer installed with Windows 10 OS or higher | 1 Pc per Candidate |
| 2 | Android Studio IDE | 1 Pc per Candidate |
| 3 | Java Development Kit (JDK) | 1 Pc per Candidate |
| 4 | Android SDK | 1 Pc per Candidate |
| 5 | Visual Studio Code | 1 Pc per Candidate |
| 6 | Android Emulator or Android Device | 1 Pc per Candidate or 1 Pc per 15 Candidates |
| Items to be Evaluated | Marks Available | Marks Obtained | Comments |
|---|---|---|---|
| TASK 1: Identification and Classification of Testing Types | |||
| Candidate wears appropriate PPE (e.g., anti-static wrist strap if applicable) (Award 1 mark for PPE usage, 0 if none) | 1 | ||
| Candidate launches Android Studio and opens the sample calculator project (Award 2 marks for correct project setup and launch) | 2 | ||
| Candidate identifies and lists five types of mobile application testing: Unit, Integration, Functional, Usability, and Performance Testing (Award 1 mark per correctly identified testing type) | 5 | ||
| Candidate provides a brief explanation for each testing type (Award 1 mark per clear and correct explanation) | 5 | ||
| Candidate demonstrates practical example for each testing type using the sample calculator app (Award up to 7 marks based on completeness and correctness of examples) | 7 | ||
| Sub-Total | 20 | ||
| TASK 2: Testing Execution and Reporting | |||
| Candidate runs Unit tests on calculator functions and interprets results (Award 3 marks for successful execution and correct interpretation) | 3 | ||
| Candidate performs Integration testing by validating interaction between calculator components (Award 3 marks for correct execution and documentation) | 3 | ||
| Candidate conducts Functional testing by verifying calculator operations meet requirements (Award 3 marks for thorough functional test cases and results) | 3 | ||
| Candidate carries out Usability testing via emulator/device, noting user interface feedback (Award 3 marks for detailed usability observations) | 3 | ||
| Candidate executes basic Performance testing (e.g., response time) and records findings (Award 3 marks for accurate performance testing and reporting) | 3 | ||
| Candidate compiles a concise report summarizing all testing types, procedures, and results (Award 5 marks for clear, complete, and well-organized report) | 5 | ||
| Sub-Total | 20 | ||
| PRODUCT CHECKLIST | |||
| Report clearly classifies and explains five types of mobile application testing with practical examples (Award 7 marks for completeness, clarity, and accuracy) | 7 | ||
| Testing procedures are correctly demonstrated and documented in the report (Award 8 marks for correctness and completeness of testing demonstration) | 8 | ||
| Report is well-structured, free of grammatical errors, and professionally presented (Award 5 marks for professional presentation and language) | 5 | ||
| Sub-Total | 20 | ||
| GRAND TOTAL | 60 | ||
Type: Individual
| Tools & Equipment | Materials |
|---|---|
| Computer installed with Windows 10 OS or higher | Java Development Kit (JDK) |
| Android Studio or Flutter IDE | Android SDK |
| Visual Studio Code or Notepad++ | |
| Android Emulator or Android Device |
| S/N | Item | Quantity |
|---|---|---|
| 1 | Computer installed with Windows 10 OS or higher | 1 Pc per Candidate |
| 2 | Android Studio or Flutter IDE | 1 Pc per Candidate |
| 3 | Java Development Kit (JDK) | 1 Pc per Candidate |
| 4 | Android SDK | 1 Pc per Candidate |
| 5 | Visual Studio Code or Notepad++ | 1 Pc per Candidate |
| 6 | Android Emulator or Android Device | 1 Pc per Candidate or 1 Pc per 15 Candidates |
| Items to be Evaluated | Marks Available | Marks Obtained | Comments |
|---|---|---|---|
| TASK 1: Design Unit Test Cases | |||
| Prepared unit test cases covering positive, negative, and zero integer inputs (Award 1 mark for each category of input correctly covered = 3 Marks) | 3 | ||
| Used appropriate testing framework (e.g., JUnit or Flutter test) (Award 2 marks if correct framework is used and configured properly) | 2 | ||
| Sub-Total | 5 | ||
| TASK 2: Implement Unit Test Code | |||
| Wrote test methods that call the sum function with test inputs (Award 1 mark per correctly implemented test method for positive, negative, zero inputs) | 3 | ||
| Asserted expected outcomes correctly using assertEquals or equivalent (Award 2 marks for proper assertion implementation) | 2 | ||
| Sub-Total | 5 | ||
| TASK 3: Execute and Debug Unit Tests | |||
| Executed all unit tests successfully in the IDE or emulator (Award 3 marks if all tests run and results are visible) | 3 | ||
| Identified and fixed any failing tests or code errors (Award 2 marks if debugging is demonstrated and tests pass after correction) | 2 | ||
| Sub-Total | 5 | ||
| PRODUCT CHECKLIST | |||
| Unit test code correctly verifies sum function outputs for all test cases (Award 5 marks if test coverage and correctness are confirmed by running tests) | 5 | ||
| Sub-Total | 5 | ||
| GRAND TOTAL | 20 | ||
At the start of this chapter we promised you would be able to:
Tick each one you can genuinely do.
So, are you there yet?
You're competent when you can confidently do 50% or more of what this chapter promised.
Sign in to record how you're doing.