Sample Report

What Deep Functional Testing Finds

Eleven real findings from HiNeighbour, our community app on iOS, Android and the web: a freeze, failed account deletion, duplicate emails, broken onboarding and the edge cases that only appear with real data. Every one was traced to its cause and fixed; one related fix is waiting for the next app release.

Summary

Product
HiNeighbour, our community app for residential neighbourhoods, live on iOS, Android and the web
Period
July to October 2026
Coverage
Sign up and onboarding, profiles, photo uploads, the business directory and reviews, meetups, the weekly email digest, notifications and account deletion
How we tested
Exploratory test charters on real iPhones and Android phones before each release, automated API and database tests on every change, and every resident report reproduced and traced to its cause
2 Critical
5 High
2 Medium
2 Low
All 11 fixed
1 related fix awaiting release

Because HiNeighbour is our own product, these findings go all the way to the code and the database. A client App Audit tests from the outside, the way your users do, and reports what fails, how to reproduce it and why it matters. With access to your code, a QA engagement can go as deep as this.

Findings in Detail

HN-01
Critical
iOS app

App freezes after allowing camera access

Steps to reproduce

  1. On an iPhone, open the address verification step and tap Take a photo.
  2. Allow camera access when iOS asks, or allow it in Settings and come back.
  3. Tap Take a photo again, or anything else on the screen.
Expected
The camera opens.
Actual
Nothing responds. Every tap in the app is ignored until the app is force quit.

Root cause

The app opened the photo picker in the same moment it was closing its own permission sheet. iOS presented the picker while the sheet was still animating away, so the picker never appeared, never finished, and sat invisibly over the whole app, swallowing every tap.

Business impact

Residents froze at the exact moment they were proving their address to join, with nothing on screen to explain why.

Fix

Close the sheet first, then open the picker a moment later and only once the app is active. The same pattern later froze the app when opening a link from a post, and a search of the code found one more case when sharing a meetup to a calendar. All three now go through one shared helper.

Retest

Original defect fixed, verified and released in app version 1.0.18. Related fixes for the link and calendar screens are implemented; release verification is pending until the next app build.

HN-02
Critical
Web and app

Account deletion fails for anyone who has written a review

Steps to reproduce

  1. Sign up and write a review of a local business.
  2. Go to Settings and delete the account.
Expected
The account and its data are deleted.
Actual
Deletion fails with a server error. Accounts with posts, listings or a directory profile delete normally; one review is the difference.

Root cause

A database trigger that recalculates ratings ran with the permissions of whoever caused it and called its helper by an unqualified name. Deletion requests arrive from the sign in service, which cannot resolve that name, so the trigger failed and rolled back the entire deletion. Deleting a profile directly as an admin always worked, which is why it went unnoticed. It surfaced when 489 automated test accounts piled up on staging: the cleanup step had been quietly ignoring the same error.

Business impact

Both app stores require working account deletion inside the app, and data erasure requests depend on the same path.

Fix

The trigger now runs with fixed permissions and fully qualified names, the cleanup step checks for errors, and an automated test deletes an account that has written a review on every run.

Retest

Fixed on staging and production. The automated test passes on every run.

HN-03
High
Email

Weekly digest sent twice to every resident

Steps to reproduce

  1. Start the weekly digest send.
  2. Start it again a few seconds later, as a double click or a scheduler retry would.
Expected
Each resident receives one copy of each edition.
Actual
All 89 opted in residents received two identical emails.

Root cause

The send kept no record of who had already been emailed, so nothing distinguished a second run from the first.

Business impact

A duplicate in every inbox invites unsubscribes and spam complaints, and spam complaints hurt delivery of every future email.

Fix

A send ledger for each edition and resident. Each resident is claimed before their email goes out, so a repeat run skips them, and a run cut off by a timeout can simply be started again to finish the rest.

Retest

Fixed. A repeat run now skips every resident already emailed for that edition.

HN-04
High
Android and iOS app

New residents stuck on the Welcome screen

Steps to reproduce

  1. Sign up in app version 1.0.17.
  2. On the Welcome screen, skip the "Which cluster are you in?" step.
  3. Add a photo or skills and tap Continue. The cluster sheet opens.
  4. Pick a cluster and continue.
Expected
The profile saves and onboarding moves on.
Actual
Every attempt shows "Add your name and pick your cluster so neighbours nearby can find you." The resident cannot finish onboarding.

Root cause

The cluster picked in the sheet stayed on screen but was never sent with the save, so the server kept refusing a profile without a cluster.

Business impact

New residents hit a wall in their first minute. Two reported it within a week, and most people in that position simply leave.

Fix

Every save now carries the cluster, the server no longer refuses a save over a missing cluster, and sign up asks for the cluster up front.

Retest

Fixed and released in app version 1.0.18.

HN-05
High
iOS app

iPhone library photos fail to save

Steps to reproduce

  1. On an iPhone, create a post, listing or meetup.
  2. Add a photo from the library without cropping it.
  3. Save.
Expected
It saves with the photo.
Actual
Saving fails. Profile pictures upload fine, which hid the problem.

Root cause

iPhones store photos as HEIC by default. An uncropped library pick returned the original HEIC file, and storage accepts only JPEG, PNG, WebP and GIF. Profile pictures are always cropped, and cropping converts the image, so they slipped through.

Business impact

Posts, listings, meetups, business logos and portfolios could not use iPhone library photos, and the error only appeared at the very end, at Save.

Fix

The picker now asks iOS for a compatible JPEG, and a refused file gets a plain explanation instead of a technical error. On the web, HEIC profile pictures that browsers cannot show fall back to initials.

Retest

Fixed and verified on iOS: a full profile with library photos saves, with every photo stored as JPEG.

HN-06
High
Web and app

Older profiles could not be saved at all

Steps to reproduce

  1. Open a profile created before the five skill limit, holding seven skills.
  2. Change anything, for example add a showcase item.
  3. Save.
Expected
The change saves, or the app explains the new limit.
Actual
"Pick up to 5 skills" appears on an unrelated step, and nothing saves.

Root cause

The new limit only stopped people adding a sixth skill. Profiles already over it were refused on every save, whatever was being changed.

Business impact

Five early members could not update their profiles, and the error pointed them at the wrong step.

Fix

Both editors now check first and take the person to the skills step: "The limit is now 5 skills and you have 7. Untick 2 to save."

Retest

Fixed on the web and in the app.

HN-07
High
Web and app

A business vanished after a category rename

Steps to reproduce

  1. List a business under Car Wash & Services.
  2. Ship a release that renames the category to Car Services & Sales.
  3. Browse Find Help on the web or in the app.
Expected
The business appears under the renamed category.
Actual
It is missing from every section on both. It still appears in the admin list, and its page opens from a direct link.

Root cause

The rename shipped with a data update that was never run on production, so the listing kept the old category name. Both browse screens build their sections from the current category names, so an unknown name meant no section and no listing.

Business impact

A local business was invisible to residents for more than five weeks, with nothing to warn anyone.

Fix

Corrected the data on production. Listings with an unrecognised category now appear under Other Services, so a mismatch can never hide a business again.

Retest

The listing reappeared at once. The fallback is live on the web and in the app.

HN-08
Medium
Web and app

New reviews never counted on business cards

Steps to reproduce

  1. As a resident, leave a five star review for a business.
  2. Open the business card in the directory.
Expected
The card shows 5.0 from 1 review.
Actual
The card says "No reviews yet", while the review shows on the business page.

Root cause

The routine that updates review counts ran with the reviewer's permissions, which cannot change someone else's business record, so the update silently changed nothing. An earlier patch only seemed to work because its one time correction ran with admin rights; every review written afterwards was missed again.

Business impact

Businesses lost the ratings they had earned, and reviewers saw their reviews apparently ignored.

Fix

The routine now runs with its own permissions, and every business's count was recalculated.

Retest

Verified on production: the affected businesses now show their ratings.

HN-09
Medium
Web and app

Returning members wait for a code that never comes

Steps to reproduce

  1. Sign up with an email address that already has a confirmed account.
  2. Wait for the confirmation code, then tap Resend.
Expected
The app says there is already an account and offers Sign in and Forgot password.
Actual
The code screen waits. No email arrives, and Resend does nothing.

Root cause

The sign in service deliberately sends nothing for an existing address, so sign up cannot be used to check who is a member. The app did not recognise that silent answer, and the symptom looked like an email delivery fault, which sent the first investigation the wrong way.

Business impact

Returning residents concluded the app was broken.

Fix

The app now recognises the already registered answer. The website shows "You already have an account" with Sign in and Forgot password, and the app opens sign in with the address filled in. An automated test pins the sign in service's behaviour.

Retest

Fixed on the web and in the app. The automated test passes on every run.

HN-10
Low
Web

Meetups accepted a date in the year 209820

Steps to reproduce

  1. Create a meetup on the website.
  2. Type the year 209820 into the date.
  3. Save.
Expected
A friendly error asking for a real date.
Actual
The meetup saves with that year.

Root cause

The form checked that a date was present, not that it was a real date in a sensible range.

Business impact

Broken sorting and odd listings for everyone browsing meetups.

Fix

Dates must now be real calendar dates from one year ago to two years ahead, with friendly errors. The database also refuses impossible years, as a second line of defence.

Retest

Fixed in the app code and in the database.

HN-11
Low
iOS app

Test notifications from staging reached a real phone

Steps to reproduce

  1. Install a staging build on an iPhone, then replace it with the store app.
  2. Run the automated tests on staging.
Expected
The store app receives nothing from staging.
Actual
The phone showed staging notifications such as "New meetup: New meetup: Rooftop Yoga Morning".

Root cause

Staging and store builds share one app identifier, so the phone's old staging registration kept routing staging notifications to whichever build was installed. The doubled "New meetup:" came from the title being added twice.

Business impact

No residents were affected, but the same gap could put test content in front of real people.

Fix

Removed the stale registration, stopped notifications from test accounts, and removed the doubled prefix.

Retest

Fixed.

In a client report, every finding also links to its screenshots, screen recordings, logs and the session charter it came from. Here the evidence is described in words, because the originals show residents' personal details.

Want This Depth for Your Product?

Start with a fixed price audit of one website or app, or talk to us about ongoing QA with access to your code.