Taxi booking app testing: how to make an app like Uber?

/ 24th May, 2017 / Best Practices
Taxi booking app testing: how to make an app like Uber?

The Internet and smartphone era has brought changes to the well-known offline services and has influenced every corner of our everyday life. If someone needs to book a flight, train tickets, a room in a hotel or order something in a restaurant, they most likely will use a mobile app for these purposes.

Taxi services are certainly no exception to this. The traditional way to book a taxi is by physically waving one down in the street or by calling the taxi company. These methods are hardly used anymore. Booking services such as Uber that use mobile apps for their business are currently valued most in the taxi market.

The considerably lower prices, higher levels of comfort and easy-to-use taxi apps make them more favorable, even in the on-demand car sphere. A user simply needs to make a request for a taxi, and those nearest the location from which the request came from can either accept it or decline it. The individual who booked the taxi then receives a notification that their request has been accepted. They can either accept or decline that Uber. If the customer accepts, their Uber promptly arrives and takes them to their destination point. Everything is done through the app, order request, order verification and confirmation, view of the planned route, payment, and testimonials.

In this article, we will review a crucial part of all software development – the app testing process of taxi booking apps. You will get a clear understanding of the following:

  • taxi booking app types and the difficulties that testers are faced with,
  • workflow pitfalls that should be included into your test-cases, and
  • testing approaches for on-demand car apps.

You will also receive test checklists and hot tips from taxi booking app development companies.

Get tips how to make an app like Uber and test it. Enjoy your reading!


Taxi booking app types

There are a lot of taxi companies and Cab Management System providers who have made their own apps with extremely impressive features that make a user’s ride much more efficient than ever before. If you want to join this business, you should know the main taxi booking app types that are available on the market.

There are four main taxi booking app types:

  • Custom made apps (CMA). It is popular that a client has an idea about how to make an app similar to Uber, but with specific ingenious features that are not available now.
  • CMS (Cab Management System) apps. These are apps whose software comes with a suit of ready-to-use features. They are perfect for those who would like to launch a personal taxi service with a standard list of features in a specific region (e.g. Taxi Admin).
  • White label taxi (WLT) services (e.g. A client can purchase the rights of a server side app that comes ready-to-use, and can launch the app with their own brand name without the “powered by” options.
  • Ride services such as Cars on demand (CoD), also known as ride-hailing or ride sourcing, is a sort of marketplace where consumers and service drivers can connect with each other.

CMSs, WLTs and CoDs are mainly supported by the development team. Any issues with them can be resolved by sending an issue report to the app seller company. If you want to test a taxi booking app that you made from scratch, then we recommend using agile continuous testing approaches:

  1. Initiate a testing process.
  2. Create a user story and acceptance criteria. Each taxi booking system consists of 3 parts:
    1. a user (client) app,
    2. car driver app, and
    3. a web service with a Dispatcher panel (Admin panel).

Each part includes a list of:

  • end-user behavior patterns, and
  • behavior variations/flows (e.g. users can obtain access to screen A in 3 different ways).

You should try to cover all of them in your test-cases to avoid a misleading process:

  • Divide a user story based on the steps taken within a testing iteration,
  • Execute test cases,
  • Review bug reports and make bug fixes,
  • Commit to it, and
  • Initiate regression testing.

| Also read: If you want to know more about continuous testing, then we recommend reviewing “7 Criteria for Selecting Mobile Application Testing Tools for Your Business”.

Let’s inspect how it works and review the main flows.


What is inside?

At first glance, on-demand car service apps appear to have a lot in common and contain only a few basic options. We’ve written down the most essential and important options that every on-demand car app should possess.

User registration

The first step is to enter personal information. There are two main methods for user registration:

  • registration with a user’s mobile phone number and email address, and
  • registration with a user’s login and password, and/or social API OAuth (Open Authorization).

During the second step, an app user should confirm their account creation. This can be done in several ways:

  • via SMS,
  • via E-mail confirmation message, and
  • via a social OAuth display message.

Take note:
From a driver’s side, their profile should be:

  • verified,
  • approved by the administration manager, and
  • completed with relevant information regarding car name, car type, tech specs, and interior photos.

You should write down the separate test cases for each situation that is described above.

Do not forget that:

  • The verification of a profile can have a different number of steps, depending on the local traditions, legislation, etc., and
  • Both (the driver and the passenger) should be able to review each other’s profile after registration and have the ability to inform an app administrator about any incorrect information/suspicious behavior.

| Testing Tips:

  • According to the Pulsatehq review, 77% of mobile users choose to use a social login during the in-app registration. You need to test the OAuth process with all of the most popular social apps like Facebook, Google Plus, Twitter, Tumblr, etc.
  • The most popular email services have rather strict spam-filtering. Do not forget to test and optimize your e-mail confirmation process to avoid marking your domain as spam.
    • Check your domain in the top e-mail blacklists like Invaluement, Spamcop, Spamhaus, Surbl, etc.
    • Remove any unnecessary links and images from your e-mail template, otherwise it could be marked as suspicious.
    • The e-mail’s auto-message must be less than 102 Kb, otherwise it will be clipped in Gmail.
    • The user should understand that it is an auto-reply message.
    • Copyright and unsubscribe details should be contained within the email.


Request a car

The mobile app should automatically detect your current location and provide an option to change it if necessary. The next step is to select the destination place. Depending on the taxi provider, you can tap on the map directly and choose the exact address if necessary.

| Testing Tips:

All apps that are integrated with geographic information system (GIS) have 3 main characteristics that should always be kept in mind:

  • Objects search. When a user requests a car you need to be sure that all the filters are set correctly, and that the individual who made the request will receive the exact result that the specific criteria is based on.
  • Pointing on a map. All the results must be displayed with the correct geographical coordinates and personal data (object name, legend, Image, etc.).
  • OS compatibility. Each operation system has its own specifics that should be covered during app development. You must be sure the same user experience is integrated in each platform.

Take note:
The driver and the passenger must have a chance:

  • to view each other’s actual position on the map, and
  • have a clear understanding of how to change a car, cancel an order, review the counterpart’s rank etc.

These points require a strong Usability Testing approach.

| Also read: Top 5 tips to make mobile app testing successful.

Order confirmation

The app will provide you with the approximate cost of your taxi and will ask you to confirm the order. When the order is confirmed, you’ll receive the licenses plate number, car model, the driver’s name and their contact information.
| Testing Tips:
To make sure that the car information is not lost, we recommend using the free utilities provided by platform vendors: Apple Push Notification Service for iOS and Firebase Cloud Messaging for Android. Those solutions provide detailed documentation and suggestions for integrating and testing your app.

The trip (ride) itself
Getting a ride is of course the most essential part of the taxi service. The taxi mobile app will provide you with your route and will determine the amount of time it will take for you to reach your destination.

Take note:

  • App users must have access to the actual road map and be given the ability to compare it with the established route. This feature will help a customer who is unfamiliar with the surrounding area avoid being overcharged for unnecessary driving costs.
  • The information should be provided in a clear and concise way and should be oriented toward the local cultural norms. For this purpose we strongly recommend making a specific test case for each market that you plan to enter.

| Testing Tips:
In order to maximize the coverage of your testing, we recommend that you organize testing with real drivers and passengers. When you are able to test real life scenarios, you are able to obtain accurate results and find issues that would otherwise not appear in an emulator.

| Also read: Localization Testing: Your Weapon for Global Domination.


It is not necessary to keep a lot of cash with you. Not only is it safer to carry less cash, a credit card payment option provides the means for hassle free transactions for both drivers and riders. Upon completion of a trip, your credit card, which is authorized in the taxi mobile app account, will be charged.

| Testing Tips:
There are two main testing scenarios that should be tested when considering the payment process:

  1. Bank card details capturing:
    1. bank card type and number,
    2. expiration date and Card Verification Value (CVV) note/code,
    3. the Address Verification System (AVS) code, and
    4. captured card number encryption (and decryption as well).
  2. Authorization process:
    1. authorized payment amount,
    2. receipt of transaction sent via e-mail,
    3. a printing and reprinting option,
    4. displayed payment details, and
    5. a system response (cases when the verification code is approved, declined, on hold, etc.).

Taxi booking app to make an app like Uber.IMG4-Payment-systems

Take note:
The payment procedure is one of the most important elements of a taxi booking app. If you want to get the most accurate results, we recommend gathering a team of real people with real credit cards. This will help you uncover pitfalls in the beta stage and avoid situations such as credit card payments working only in your sandbox environment.

A driver and a passenger should clearly understand that the cost of the taxi, including the tip, will be transferred to and from their accounts after each ride.

Make separate test cases for:

  • payment processing, and
  • riding information encryption test.


After the ride, the mobile app will give you the option to evaluate the driver and post a testimonial. This system of checks and balances maintains a high level service and helps avoid any misunderstandings.

Take note:
A driver and a passenger should have a chance to review each other’s profiles and rankings. It will help understand both sides of the service, highlighting strengths and weaknesses. This will give you a much better basis for improving it.

Make separate test cases for:

  • negative testing to identify weak points and possible unintentional inputs,
  • fraud/scam testing,
  • feedback testing, etc.

Taxi booking app to make an app like Uber.IMG3-Ranks

Take it with you:

We have collected and put together some helpful tips from above in this checklist. Print-and-pin it in your workspace!

Taxi booking app to make an app like Uber.Ubertester

Want to get the Full HD copy? Send us your request.

Dispatcher (Admin) panel

The admin panel is a web-based service that helps make the following actions:

  • manage dispatchers,
  • manage cab drivers and passengers,
  • review and manage transactions,
  • review statistics,
  • generate reports,
  • review blacklists, temporary blocked clients and drivers,
  • manage back-end setting and so on.


The image above was taken from

Experts’ advice:

If you have a website with an admin panel, you should test everything that is related to the system’s security at least twice. A tiny backdoor opening could lead to a serious drain in user data. According to our own experience, a lot of small businesses and startups that want to launch their product do not pay much attention to this point. They are only interested in using free / inexpensive tools like Qualys, FreeScan, AsafaWeb, and SUCURI. We strongly advise against this approach. Let’s take a look at the Mobile app security testing checklist which I made for you.

The mobile app security testing checklist:

  • Client Attacks (need to be checked for normal and rooted modes):
    • Reverse engineering:
      • decompile APK,
      • malicious changes inAPK,
      • data leaks, and
      • data storage (including SD-cards).
    • Rile system checks:
      • file system testing,
      • runtime attacks, and
      • XSS attacks.
      • Network attacks:
    • Traffic analysis:
      • attack proxies,
      • wireshark, and
      • parameters manipulation.
    • Server attacks:
      • Vulnerability analysis
      • exploits,
      • SQLi, and
      • API security.


Taxi booking apps can’t function autonomously. This means that almost every one of the points mentioned from the list above is also related to the server side security testing. If you want to perform security testing for your server-side, we’d like to offer the following pieces of advice:

  • Test your apps manually. Automation testing is trending, but there is a lack of statistics that show the percentage of bugs that were found, owing strictly to automation tools alone. It is important to use automation testing tools, but from our perspective, they could give you a 20-30% reduction of critical issues found. A more effective approach is to combine automation and manual testing.
  • Add any seemingly irrelevant or unrelated ideas to your test cases. Even if you think that it is not worth your time, down the road they may prove to be valuable additions to your test cases.
  • If you don’t have the funds to pay for professional security testing tools, then try to find service providers with a good reputation. In the end, it is not as expensive as court costs and lawsuit fees.
  • Involve as many people into the testing process as it possible. They don’t necessarily have to be professional testers. Average people have the ability to find hidden, real and critical bugs.

| Also read: How many beta testers do I need to create the perfect app?

  • Security testing is just the tip of the iceberg. You can find serious issues during usability, functional, localization testing, etc. Always try to get a good understanding of the whole picture in order to detect any potential problems. To do that, follow the guidelines from the 4 points in the above the list.


Jane Brohenzon,  QA Team Lead at Shelor

To develop and test the admin panel of taxi dispatch software, and determine is user-friendliness, we recommend reviewing the following guidelines.

The fastest growing taxi apps

We all know that the Uber app has received some of the highest rankings among taxi apps in today’s market. In this section of the article we want to highlight some interesting companies that have developed apps using the Uber like model, and brush over some of the TOP 20 most popular apps.


1. Gett

Gett is the fastest growing Taxi booking app in the US, and was admitted into the “top 15 explosively growing companies” by Forbes. Gett is available in more than 60 cities worldwide.

Main Features: The services that are offeredare split into various packages: Gett Together, Standard, Deal, Premium, SUV, and the flexible payment system.

Supported platforms: iOS and Android



2. 1001 Taxis

It is a Spanish-based taxi booking app that has shown stable growth in Spain, France and Switzerland.
Main Features: Multi-apps service
Supported platforms: iOS and Android


3. Hailo

Hailo is a British-based service that is available in more than 20 cities worldwide. It was launched in November 2011, and since then has shown stable growth in Central and Northern Europe.
Main Features: Hailo Hub, Hailo electronic pay, Hailo for Business
Supported platforms: iOS and Android


4. Lyft

Lyft is a US based service that makes ride-hailing easier. The service includes three different packages: Lyft, Lyft Plus and Lyft Line. They allow users to ride individually or in a group of up to six people.
Main Features: Up to 6 people could ride at once, and includes $1M in liability insurance for its users.
Supported platforms: iOS and Android


5. OnTaxi

OnTaxi is one of the fastest growing taxi booking apps in the Eastern Europe. Different types of vehicles can be ordered and it provides the fastest way to book a car directly from users’ smartphones.
Main Features: Booking a taxi for multiple addresses, and it offers additional services to its users.
Supported platforms: iOS and Android

Experts’ advice:

While testing the application, we would like to draw your attention to the following issues

1. Lack of address information in cartographic services.

To avoid this problem, we recommend you to create your own database with the address information for each city translated into several local languages. Also, all address information is formatted according to the installed templates. In addition, we have created a hybrid system of forward and reverse geocoding. If we don’t have a certain address in our database, the servers send a request to Google.

2. A high service entry barrier.

It is important not to scare off potential customer with the requirements to indicate a large amount of personal data: the first and last name, an email address, a phone number, etc. When the application is launched for the first time without preceding acquaintance with its interface and functions, it requests only the phone number to reduce the entry barrier.

3. UX & UI specifics of riding

There are two ways of creating a route:

1) Selection of one or all route points on the map.


  • The client does not need to know the address of the route point, it is enough to “tap” it on the map;
  • Visualization of the constructed route.


  • Search complexity while finding objects or addresses without knowing the region (for example, a station, an airport, etc.)

2) All the points of the route could be added manually.

  • An explicit and unambiguous indication of the address of the route points (street, house number, etc.).


  • No visualization,
  • You always need to know all addresses.

4. Environment emulation with bad Internet coverage.

It is very important to test the application with bad mobile condition, when there is a loss of data packages, and the Internet connection is completely lost. To emulate packages loss in iOs, you could use a standard software for these purposes or request for 3-rd party testers. For testing the Android app, we recommend to use proxy + ipfw.


Denis Pokalitsyn, CEO at OnTaxi

| Also read: 4 Warning Signs that Your Beta Testing Process is in Danger.


Summary: What should be considered when testing an app like Uber?

Flow Testing

1. User/Driver registration and authentication

The registration flow is something that should be tested in every app. Make sure that it is impossible to register with an incorrect or invalid email address, and that the number of symbols does not exceed 100. Authentication tests will help prevent fraudulent users from accessing accounts and will eliminate long and unnecessary investigations into account ownership. You can read more about security testing in our article.

Test cases are required in order to examine the functionality of new user registrations:

They ensure that:

  • a new user can register by filling in the mandatory fields in the registration section, and
  • the system sends a confirmation message via email, SMS or push notification.

Check if an error message displays when:

  • a user leaves mandatory fields empty in the registration section,
  • a user provides invalid inputs in the mandatory fields of the registration section,
  • a user’s request can’t reach the system, is incorrect, etc., and
  • a user enters an invalid username and valid password in the login section, or vice versa.

If you allow a user to register with their e-mail only, you need to test the following things:

  • Check if the email text field:
    • contains an email address without the “@” symbol,
    • contains a random string instead of a real email,
    • contains the “@” symbol written in words, and
    • contains a missing dot in the email address, i.e. “.com.”
  • Check if the email text field contains:
    • “name@email-server”
    • “”
    • “name@[local-network-ID]”
    • “name@”, etc.

Registration using social networks is now the easiest way to create a user account. Your testers should keep a close eye on this feature and make sure the connection works without any delays or errors.

If you allow a user to register with a social network (OAuth) profile, then you need to test the following things:

  • Was a user password removed from API calls?
  • How to remove or block an app to protect a user’s personal data?
  • What permissions / scopes were offered?
  • Were all OAuth credentials encrypted?
  • Does the system generate verifiable customer keys?

2. GPS service

Your car booking app should use geolocation services to detect the current user’s location, caching and storing user data. It is very important that your app can interact with the device’s GPS as it, among other things, allows the app to calculate the ride distance more precisely.

Take note:
To perform a user location data test we recommend doing the following:

  1. Collect a set of real devices in a specific location (99,99% data accuracy) or use a location sensor simulator (40-65% data accuracy).
  2. Test your app with the following types of location data:
    1. live data transferring when an app is running,
    2. recorded data that shows when a user entered the test, and
    3. recorded data that shows if a user saved/booked/added.

Take note: If you want to test a GIS-based app or receive more tips about testing it, then send us your request. Our tech manager will help you find the right solution.

3. Payment procedure

Reliability and security are the most important things if your app deals with money, specifically one that requires the user to enter credit card information. When testing your car service app, please make sure you’ve chosen the right payment processor to store the user’s data and to manage the transactions. Your QA team should also pay attention to any possible vulnerabilities. It’s better if you notice them before the hackers do.

Take note:
Do not forget to check the following prerequisites before testing the payment method:

  • Credit/debit card configuration, like card range and card type (Mastercard, Visa, Visa Electron, etc.), and
  • Merchant configuration. Check the person/organization who is authorized to accept card payments.To perform security testing for a payment procedure we strongly recommend using the following checklists:
Web app security testing checklist (short):

General tests:

  • All confidential data should be submitted via secure protocol HTTPS(SSL).
  • The user password and security answer must to be masked with the input type = password.
  • Use server side validation for forms. We recommend Using “Firebug” and “TamperData” to perform these tests.

Password tests:

  • all the rules that are related to a password setting should be the same across all the modules,
  • check passwords for the combinatorics rule: it should contain characters+numbers+special characters,
  • the number of requests that a user can send to a server if they forgot their password,
  • set the expiration for the password reset link,
  • when a new password is generated an old one must expire, and
  • an old token should expire after the new one is generated.

Session Management:

  • check what information is allowed to be carried in cookies, and
  • no confidential data can be saved in cookies.

CAPTCHA testing:

  • no cycling for CAPTCHA,
  • images should not be downloaded, and
  • use to check if CAPTCHA can be recognized.

| Also read: The 8-steps security testing approach for a perfect project

Take note: we strongly recommend using real devices to execute mobile and web-app testing. If you are uncertain of the number of devices you need, use Ubertesters estimator.

4. Push notification

If your app is using push notifications, make sure they work on all the devices, otherwise the user will not get the essential information.

3 things you should keep in mind when testing your push notifications:

  • Are your push-notifications timed correctly?
  • Do they include personalization scripts? If yes, how do they perform in different regions?
  • How do your push-notifications perform in different time-zones?

5. Feedback

The feedback or testimonial system allows the user to rate the driver, and in general, maintains a high level of service. Performance tests will help you understand if all the feedback is accurate and if it is being delivered to the server in time

Types of testing you should perform

The flow testing tips that we described above are just a tiny part of the whole process. We have gathered for you a short list of testing types that you need to perform to make an app similar to Uber.

User App
  • Security testing – You must be sure that users’ data is protected and can’t leak to any 3rd parties.
  • UI/UX testing – The most essential part after the security testing. Users need to know how to book a car. They should receive information about a driver and the cost of the taxi effortlessly.
  • Localization testing – Each market has its own specifics. If you want to succeed, you should provide an app that closely relates to the local mentality.
  • Negative testing – This method is used to check the performance of the application in the case of an invalid input or unexpected user behavior.
Driver App
  • GIS testing – The app should provide accurate data about the client’s location, destination point and distance of the planned route.
  • Localization testing – It should be clear to any person who is riding how to use the app.
  • Interruption testing – An application while functioning may face several interruptions (incoming calls, messages, pop-ups, etc.), or network coverage outage and recovery. A driver should be able to use the app while incoming data is arriving.
Server Side
  • Security testing – All the data should be protected and encrypted. You should check any and all potential pitfalls and doorways before the official system launch.


|Take note:  If you want to get more details about the types of testing that you need to perform, send us your request. Our tech manager will help you find the right solution.

What are the testing alternatives?

Testing an app like Uber can be really challenging. It is not necessarily a matter of time or costs. Your cornerstone will be the end-users. Such app testing requires a huge number of beta-testers who will review your app properly and send effective feedback.

There are three main ways you can solve this issue:

1) In-house testers.

You can hire more people worldwide to control the testing processes.

  • All the data will be kept securely, and
  • you can control the entire processes.


  • There is a significant increase in costs,
  • you need to purchase mobile devices localized for a specific region (mobile device emulator provides up to 70% data accuracy),
  • you need to spend a lot of time checking, verifying and approving the right candidates, and
  • management issues.
2) Request your clients to test an app (VIP users).

The best way, if you have a lot of clients in different cities, is to offer them some discount or reward for taxi booking app testing.


  • It includes a lot of people into the testing processes with real devices.


  • Beta-testing is not secured,
  • It could cause your data to leak, and
  • It is difficult to manage such a process without the proper tools.

| Take note: When you work with a huge number of people worldwide it can be hard to manage them. We strongly recommend using good QA management tools that allow you to manage a huge number of testers from different locations, get bug and crash reports, and receive feedback (such as video recording, screenshots of issues with comments, etc.).

3) Crowd-testing services.

The best option, when you need to extend your team with skilled professionals worldwide, is to use real devices to test your taxi booking app.


  • You do not need to purchase mobile devices localized for a specific region (mobile device emulator provides up to 70% data accuracy).
  • You do not need to spend a lot of time checking, verifying and approving the right candidates. On average, it takes up to 3-5 days to gather a team of professionals.
  • You can get details about each candidate that will be managed by a dedicated manager.
  • You pay only for the results and much lower cost than hiring more QA people.
  • You get great market and device coverage with flexible testing hours.


  • Ensuring test coverage with crowdsource testing can sometimes be difficult.

Crowdsourced testing is cost effective, as the product company pays only for the actual time spent on testing. Usually the testing time is reduced, so it leads to better productivity and thus is cheaper than hiring engineers, designers, and specialists.


All in all, building a taxi booking app is not an easy task. If you want to make an app that will compete for the top seats in the market, you need to create a unique proposal that will work correctly.

Conducting accurate testing and QA is a very challenging task, especially for taxi booking apps. Geolocation services can’t rely on laboratory testing, simulations, or heavy automation. It should focus on manual testing with real testers and real devices.

Having proven expertise in the mobile and web apps testing sphere, Ubertesters’ professionals can help you test a mobile taxi-booking app that your users will love.

If you have any questions, give us a call at +1.201-203-7903 or send us a message through Ubertesters’s contact form.

Get in touch

Want to hear more on how to scale your testing?


Get in touch, fill out the form below, and an Ubertesters representative will contact you shortly to find out how we can help you.


Want to see the Ubertesters platform at work? Please fill out the form below and we'll get in touch with you as quickly as possible.

Estimate your testing costs

Fill out a quick 20 sec form to get your free quote.

Thank you for contacting us

We will get back to you within 24 hours.

Meanwhile, follow us on Facebook or LinkedIn and see what we are up to.

Sorry, an error occurred

Please try again later.