•
Drizz raises $2.7M in seed funding •
•
Featured on Forbes
•
Drizz raises $2.7M in seed funding •
•
Featured on Forbes
Logo
Schedule a demo
Blog page
>
Testing Multi-Stop and Route Optimization Flows in Logistics Apps

Testing Multi-Stop and Route Optimization Flows in Logistics Apps

Learn how to test multi-stop logistics apps with 25 real-world test cases covering route optimization, ETA, fare updates, fleet management, and Vision AI.
Author:
Jay Saadana
Posted on:
June 27, 2026
Read time:
15 Minutes

A customer books a pickup from their warehouse in Williamsburg, with drops at an office in Midtown, a residence in the Upper West Side, and a shop in SoHo. Four stops. Three packages. One driver. One booking.

The fare was 380 when they booked. After the first drop, the driver takes a different route to stop two because of traffic. The fare recalculates to 410. The ETA for the third stop shifts from 25 minutes to 40 minutes. The map redraws. The status text changes. The customer sees all of this happening live on their screen.

Now test that.

Multi-stop deliveries are the hardest feature to test in logistics apps because every stop completion changes everything: the route, the fare, the ETA, the map, the status, and the driver's next destination. A test written for the state at stop one is invalid by the time stop two completes. And the route optimization algorithm that decides the driver's path produces different results each time based on real-time traffic, driver location, and stop proximity.

This guide covers how to test multi-stop flows, route optimization, fare recalculation, fleet management, and the operational features that make logistics apps fundamentally harder to automate than food delivery.

For the complete logistics app testing checklist, see our How to Test On-Demand Logistics Apps. For real-time tracking testing, see Testing Maps, Live Tracking, and ETA Updates.

Key Takeaways

  • Multi-stop deliveries are the hardest logistics feature to test because each stop completion changes the app's entire state: route, fare, ETA, map, and status text.
  • Route optimization is non-deterministic the same stops can produce different routes based on traffic, driver position, and time of day, making static test assertions unreliable.
  • Testing multi-stop flows requires validating state transitions at each stop rather than asserting specific values. "Verify fare updated after stop completion" works; "verify fare is 410" breaks tomorrow.
  • Fleet management testing (driver assignment, vehicle matching, surge pricing, scheduling) adds an operational layer that most QA teams skip entirely.
  • Vision AI (Drizz) validates multi-stop flows visually: map route redraws, next stop address appears, fare updates on screen, status transitions correctly without depending on element IDs that change with each release.

What Makes Multi-Stop Testing So Difficult?

Each Stop Changes Everything

In a single-stop delivery (food delivery model), the app state is relatively stable after booking: one pickup, one drop, one route, one fare, one ETA. The state changes twice at pickup and at delivery.

In a multi-stop delivery, the state changes at every stop:

Event What Changes
Booking confirmed Route is calculated for all stops, the initial fare is set, and ETAs are generated for each stop.
Pickup completed Status transitions, the map focuses on the first drop location, and the pickup ETA is removed.
Stop 1 delivered Route recalculates for the remaining stops, the fare may adjust, the next stop ETA updates, and the map redraws.
Stop 2 delivered Route recalculates again, the fare adjusts again, and the final stop ETA updates.
Final stop delivered Booking is completed, the final fare is displayed, and payment is triggered.

A 4-stop booking has 5 state transitions, each one potentially changing the fare, route, map, and status. A test that asserts the state at any single point is invalid 10 minutes later.

Route Optimization Is Non-Deterministic

When a customer enters stops A, B, C, and D, the route optimization algorithm decides the order the driver visits them based on:

  • Real-time traffic conditions
  • Driver's current GPS position
  • Distance between stops
  • Time windows (if scheduled)
  • Vehicle capacity constraints

The same four stops at 10 AM might produce route A → C → B → D (because C is closest to A in current traffic). At 6 PM, it might produce A → B → D → C (because traffic patterns changed). The algorithm is correct both times. But a test that asserts "after pickup, next stop is C" fails 50% of the time.

Fare Recalculation Is Continuous

Multi-stop fares aren't fixed at booking. They recalculate based on:

  • Actual distance driven (vs estimated distance)
  • Actual time taken (vs estimated time)
  • Route changes due to traffic or driver decisions
  • Wait time at each stop (if the recipient isn't ready)
  • Additional stops added mid-trip

A test asserting "fare is 380" at any point after booking is fragile. The fare is a moving number that settles only when the final stop is delivered.

Map State Is Complex

The map in a multi-stop booking shows:

  • Driver's current position (moving)
  • Completed stops (greyed out or checked)
  • Current destination (highlighted)
  • Remaining stops (queued)
  • Route line to current destination
  • ETA to current destination

After each stop completion, the map must: remove the completed stop from the active route, highlight the next stop, redraw the route line, and update the ETA. Testing this visually is the only way to confirm the map actually reflects the current state.

How to Test Multi-Stop Flows: 15 Test Cases

Booking and Route Setup (TC-01 to TC-05)

TC-01: Create a multi-stop booking

1. Enter the pickup address "Bommanahalli"
2. Enter the first drop address "MG Road"
3. Tap "Add Stop"
4. Enter the second drop address "Indiranagar"
5. Tap "Add Stop"
6. Enter the third drop address "Koramangala"
7. Verify all three drop addresses are listed in the correct order
8. Verify the fare estimate is displayed

TC-02: Reorder stops before confirmation

1. Open the booking screen with three configured stops
2. Drag Stop 2 above Stop 1 (or use the reorder control)
3. Verify the stop order is updated
4. Verify the fare estimate is recalculated
5. Verify the route preview on the map updates to reflect the new stop order

TC-03: Remove a stop before confirmation

1. Open the booking screen with three configured stops
2. Tap the remove option for Stop 2
3. Verify Stop 2 is removed from the list
4. Verify the remaining stops are renumbered correctly
5. Verify the fare estimate decreases

TC-04: Add stop after booking confirmed (mid-trip addition)

1. After the booking is confirmed and a driver is assigned
2. Tap "Add Stop" or "Edit Trip"
3. Enter the new drop address "BTM Layout"
4. Verify the new stop appears in the stop list
5. Verify the fare estimate updates to include the additional stop
6. Verify the driver receives the updated route

TC-05: Maximum stop limit

1. Add stops until the platform limit is reached
2. Verify the message "Maximum stops reached" appears
3. Verify the "Add Stop" button is disabled

Stop Completion and State Transitions (TC-06 to TC-10)

TC-06: First stop delivered  state transition

1. After the driver completes delivery at Stop 1 (via the test API)
2. Verify Stop 1 displays the "Delivered" status with a checkmark
3. Verify the map route redraws to show the path to Stop 2
4. Verify the ETA updates for Stop 2
5. Verify the fare display updates if a recalculation occurred
6. Verify the status text changes to "En route to Stop 2"

TC-07: Intermediate stop delivered cumulative state

1. After Stop 2 is delivered (via the test API)
2. Verify both Stop 1 and Stop 2 display the "Delivered" status
3. Verify Stop 3 is now the active destination
4. Verify the map displays the route only to Stop 3
5. Verify the ETA displays the remaining time to Stop 3 only

TC-08: Final stop delivered  booking complete

1. After the final stop is delivered (via the test API)
2. Verify all stops display the "Delivered" status
3. Verify the "Trip Completed" or "All Deliveries Done" message is displayed
4. Verify the final fare is displayed
5. Verify the payment screen or receipt is displayed

TC-09: Stop delivery with OTP verification

1. When the driver arrives at a stop
2. Verify the OTP for that specific stop is displayed
3. Verify the OTP is different from the previous stop's OTP
4. After the OTP is verified (via the test API)
5. Verify the stop is marked as "Delivered"

TC-10: Partial delivery one stop fails

1. After Stop 1 is delivered successfully
2. Trigger a failed delivery at Stop 2 (recipient unavailable via the test API)
3. Verify Stop 2 displays the "Failed" or "Undelivered" status
4. Verify the driver continues to Stop 3
5. Verify the fare is adjusted appropriately for the failed stop (return handling or partial refund)
6. Verify the customer is presented with resolution options for the failed stop

Fare and ETA Recalculation (TC-11 to TC-13)

TC-11: Fare updates after each stop

1. Note the fare displayed after the booking is confirmed
2. After Stop 1 is completed, read the updated fare
3. Verify the fare has changed or explicitly displays "No Change"
4. After Stop 2 is completed, read the updated fare again
5. Verify a fare breakdown for each stop is accessible

TC-12: ETA recalculates per remaining stop

1. Read the ETA for Stop 1 on the tracking screen
2. After Stop 1 is delivered, read the ETA for Stop 2
3. Verify the ETA is specific to Stop 2 and is not a cumulative ETA
4. Verify the total remaining trip time is updated

TC-13: Wait time surcharge

1. Trigger the driver arriving at Stop 1 (via the test API)
2. Simulate a 10-minute wait (via the test API advancing time)
3. After the delivery is completed, verify a wait time charge appears in the fare breakdown
4. Verify the total fare includes the wait time surcharge

Map and Route Validation (TC-14 to TC-15)

TC-14: Map route redraws after each stop

1. On the tracking screen, verify the map shows the route to Stop 1
2. After Stop 1 is delivered, verify the map route redraws to Stop 2
3. Verify the completed Stop 1 marker changes appearance (greyed out or shows a checkmark)
4. Verify the active Stop 2 marker is highlighted

TC-15: Route changes due to traffic (non-deterministic)

1. On the tracking screen, note the displayed route
2. Wait 60 seconds
3. Verify the route is still displayed (it has not disappeared or entered an error state)
4. Verify the ETA continues to update
5. Note: Do not assert the exact route path, as it may change dynamically based on traffic conditions

How to Test Fleet Management Features

Multi-stop is the customer-facing complexity. Fleet management is the operational complexity behind it.

Driver Assignment Across Vehicle Types

1. Book a shipment requiring a Mini Truck (heavy items)
2. Verify only Mini Truck drivers are included in the driver matching process
3. Verify bike and auto-rickshaw drivers are not assigned
4. After a driver is assigned
5. Verify the assigned vehicle details match a Mini Truck
1. Book a document delivery eligible for a Bike
2. Verify bike drivers are prioritized in the matching results (fastest or lowest-cost option)
3. Verify options to upgrade to an Auto or Mini Truck are available

Surge Pricing for High-Demand Slots

1. During a known surge period (via the test environment configuration), create a booking
2. Verify the fare estimate displays a surge multiplier or surcharge
3. Verify a surge pricing indicator is visible on the booking screen
4. Create the same booking during an off-peak period
5. Verify the off-peak fare is lower than the surge period fare

Scheduled Future Pickups

1. Schedule a pickup for tomorrow at 10:00 AM
2. Verify the booking confirmation displays the scheduled date and time
3. Verify the booking appears in the "Scheduled" section of the order history
4. On the scheduled day, verify driver assignment is triggered at the scheduled time
5. Verify the customer receives a notification when a driver is assigned

Corporate Account with Multiple Cost Centers

1. Log in with a corporate account
2. On the booking screen, verify a Cost Center or Department selector is available
3. Select "Marketing Department" as the cost center
4. Complete the booking
5. Verify the receipt displays "Marketing Department" as the billing entity
6. Verify the booking appears under Marketing in the corporate dashboard
7. Verify the monthly invoice groups the booking under the correct cost center

Why Vision AI Is Built for Multi-Stop Testing

Multi-stop flows are where the gap between selector-based tools and Vision AI is widest:

State transitions are visual: When Stop 1 completes, the screen changes: status text updates, map redraws, fare number changes, next stop highlights. Appium can check individual element values but can't confirm the full visual transition happened coherently. Drizz sees the entire screen state change at once the same way the customer does.

Non-deterministic routes need structural validation: A Vision AI test says "verify map shows a route line between driver and next stop" this passes regardless of which specific route the algorithm chose. An Appium test that asserts specific coordinates or route waypoints fails whenever the algorithm changes its mind.

Fare is a visual number, not a static value: "Verify fare is displayed and has changed since last check" is a visual observation that works regardless of the specific amount. Appium asserting fare_text == "410" breaks when actual fare is 415 due to a 5-minute wait charge.

Completed stop markers are visual.:A greyed-out pin, a checkmark overlay, a crossed-out address these are visual indicators that Appium can't reliably validate through element properties. Drizz sees the visual difference between an active stop and a completed one.

Map redraws are only visible on screen: When the route line changes from "driver → Stop 1" to "driver → Stop 2," that change is rendered on the map canvas. Appium sees one MapView element before and after. Drizz sees the route line has changed direction.

Watch Drizz testing a delivery app for an example of Vision AI navigating dynamic, state-changing flows visually.

Conclusion

Multi-stop logistics is where testing complexity peaks. Every stop completion cascades state changes across the fare, route, map, ETA, and status. Route optimization is non-deterministic. Fare is a moving target. The map redraws constantly.

The teams that test this successfully don't assert specific values. They validate patterns: "fare updated," "route changed," "next stop highlighted," "ETA decreased." That structural approach survives the non-determinism that breaks every static assertion.

Vision AI is architecturally suited for this because it validates what the user sees after each state change not what the element tree reports. The map redrew. The fare number changed. The next stop is highlighted. The completed stop is greyed out. All visual observations. All testable without selectors.

For logistics apps scaling to 50+ cities with 5-stop bookings, this is the difference between a test suite that works and one that generates more noise than signal.

Get started with Drizz

Frequently Asked Questions

How do you test route optimization when the route changes every time?

Test structurally, not specifically. Instead of asserting a specific route path, verify: a route line exists on the map between driver and next stop, the route changes when a stop is completed, and the ETA corresponds to the displayed route. The specific path doesn't matter for QA what matters is that the app correctly displays whatever route the algorithm chose.

Can you test fare recalculation without completing real deliveries?

Yes. Use a test API that advances order state: trigger stop completions, simulate wait times, and inject route changes. Vision AI observes the visual result of each state change (fare number updated, breakdown displayed) without depending on actual deliveries.

How many multi-stop test cases does a logistics app need?

A production logistics app typically needs 15-25 multi-stop-specific test cases covering: booking with 2-5 stops, stop reordering, stop removal, mid-trip stop addition, each stop's delivery completion, partial delivery failure, fare recalculation per stop, ETA updates, map route changes, OTP per stop, and final trip completion with payment.

What about testing when a customer adds a stop mid-trip?

This is one of the highest-risk flows. Test: customer taps "Add Stop" while driver is en route, new stop appears in the list, fare recalculates with the additional stop, driver receives the updated route, and the map redraws to include the new destination. Vision AI validates the visual result of the mid-trip addition without needing to know the internal state management logic.

How do you handle different vehicle types in multi-stop testing?

Each vehicle type may have different stop limits, weight limits, and pricing structures. Test each vehicle category separately: verify a bike booking limits to 2 stops, a mini-truck allows 5+ stops, fare calculation differs by vehicle, and the booking screen enforces vehicle-specific constraints visually.

About the Author:

Jay Saadana
DevRel & Technical Writer
DevRel professional and tech community strategist with experience scaling developer ecosystems, open-source programs, and technical outreach initiatives.
Schedule a demo