SOLUTION CASE STUDY · SOFTWARE TESTING AND QA

Pre-launch QA for a SaaS booking platform

Finding the failures that matter before the first real business signs up

Clickmasters · Clickmasterssoftwaredevelopmentcompany.com · October 2026

About this case study. It shows how Clickmasters plans and runs pre-launch QA for a SaaS booking platform, built from a founder's project brief: our method, test design, delivery plan and deliverables. Effort figures are estimates and outcomes are targets; it does not report results from a completed engagement.

Test charters
20+TEST-001 to TEST-020, each traced to a line in the brief
Launch-critical estimate
16–22h32 to 46 hours for full coverage, retest included

Book a free QA scoping call

Tell us about your platform. We will reply with scoping questions and a written estimate.

We reply within one working day. No marketing emails.

At a glance

The brief at a glance

Platform, users, payments, plans and effort the whole engagement summarised in one view.

Platform
Multi-tenant SaaS for appointment booking, with a public booking link for each business
Users covered
Business owners and their customers; Super Admin where access is provided
Payments
Customer deposits through Mollie, tested in Mollie's test mode
Plans
Three subscription tiers with a free trial
Devices
Desktop, mobile and tablet; Chrome and Safari; installable PWA
Engagement type
Pre-launch manual QA and release-readiness review
Estimated effort
16 to 22 hours launch-critical; 32 to 46 hours full coverage
Outputs
Defect log, UX list, tenant-separation check sheet, release summary, retest report

Part 0

Summary

A founder preparing to open a multi-tenant SaaS booking platform to its first real businesses needed an independent pass over every user journey: business owner and customer, desktop and mobile, deposits through Mollie and three subscription tiers.

This case study sets out how Clickmasters plans and runs that work. It is a risk-based manual test that starts where a launch failure would hurt most: double bookings, payment and booking statuses drifting apart, and one business seeing another's data. It ends with a reproducible defect log, a clear fix-first or go verdict, and a retest of every fix.

Summary video

Part 1

The challenge

The founder had built a multi-tenant booking platform. Each business signs up, sets its services, staff and opening hours, and shares a public booking link. Customers choose a slot and pay a deposit through Mollie. Businesses move from a free trial to one of three plan tiers, and the app can be installed on a phone as a PWA.

The product was live and in its final testing phase. Before inviting real businesses, the founder wanted an independent tester to use it end to end in both roles, as a shop owner and as a customer.

The brief was specific about what good output looks like:

  1. 01

    Every issue with a clear title, a severity from Critical to Low, steps to reproduce, expected and actual results, the device and browser, and a screenshot or recording.

  2. 02

    Bugs kept apart from UX and improvement suggestions.

  3. 03

    A short verdict on whether anything critical must be fixed before real businesses start.

  4. 04

    One retest after the developer's fixes.

It also set a boundary. No penetration test was wanted, but obvious permission and data-isolation problems found during normal use had to be reported: one business must never reach another's customers, bookings or data.

Part 2

Why booking platforms fail quietly

A crash gets noticed on day one. The costly launch defects in a booking product are quieter, and they surface only when real customers arrive.

FailureHow it shows upWhy it is easy to miss
01Double bookingTwo customers arrive for one appointmentNothing errors; both bookings look valid
02Payment and booking out of stepA deposit is paid but the booking never confirms, or a slot stays blocked after the customer abandons checkoutMollie documents seven payment statuses, and an unpaid payment expires only after a method-specific window: 15 minutes for iDEAL, 30 minutes for cards
03Cross-tenant data accessOne business opens another's customer or booking by changing a linkIn normal use each business only sees its own screens. OWASP ranks broken access control first in its Top 10:2025.
04Device-specific faultsThe app will not install, or a form is unusable on one phoneOn iOS a web app installs only from the Share menu, with no install prompt (MDN), so desktop testing alone misses it
4 rows3 columns

Part 3

Our approach

We test risk first. The first hours go to the three capabilities a launch cannot survive without, and everything else is covered around them.

Bookings without conflicts

We compare the slots offered with the configured opening hours and staff availability, submit the same slot from two devices within seconds, mix manual and online bookings, and check which slots reschedules and cancellations free up. Edge cases include midnight, same-day past slots and the repeated hour when clocks go back in October.

Deposits and statuses in step

Mollie's test mode lets a tester choose the outcome of each payment without moving money (Mollie: Testing). For paid, failed, cancelled and expired we check the booking status, whether the slot is held or released, and which emails go out. After each session we reconcile three counts: bookings created, payments shown and emails received.

Tenant separation

We set up two test businesses. Logged in as one, we try to open the other's customers, bookings, services and staff through ordinary links and by changing record identifiers in the address bar. Any exposure goes to the founder privately the same working day.

Around that core we cover sign-up, email verification, password reset, onboarding and trial, plan limits, every transactional email, responsive layout and the installable app.

The booking and deposit flow under test

Booking and deposit flow: 3 steps, 4 payment outcomes

Figure 1. Booking and deposit flow: 3 steps, 4 payment outcomes

The paid path is checked by TEST-008. The three unpaid endings are checked by TEST-009, where a held slot that never frees is the main risk.

Part 4

What we test

Coverage map

AreaWhat we checkPriority
01Account and onboardingSign-up, email verification, login and logout, password reset, onboarding to a bookable state, trialHigh
02Business setupServices, staff, opening hours, staff availability, customer records, booking rules, deposit settingsHigh
03Booking enginePublic booking link, slot generation, manual bookings, reschedule, cancel, completed and no-show, double-booking preventionCritical
04Payments and subscriptionsDeposit journey for each payment outcome, status sync, plan limits, upgrades and downgrades, trial endCritical
05EmailsConfirmations, reschedules, cancellations, reminders and account emails: recipient, content, links, timing, duplicatesHigh
06Devices and PWADesktop, mobile and tablet in Chrome and Safari; install and relaunch of the PWAMedium
07Tenant separationCross-business access to customers, bookings, services and staff; plan-gated pages by direct URLCritical
08Admin and Super AdminAgreed admin functions, where access is providedAgreed at kickoff
8 rows3 columns

Payment status mapping

The first column is Mollie's published list of statuses. The expected states are agreed with the founder before testing starts, because the founder's intended behaviour is the reference.

Mollie statusExpected booking stateExpected slotReachable in test mode
01paidConfirmedHeldYes
02open, customer left checkoutAwaiting paymentHeld until expiry, then releasedYes
03canceledNot confirmedReleased, or held if retry is offeredYes
04failedNot confirmedReleased, or held if retry is offeredYes
05expiredCancelledReleasedYes, by selection on the test screen
06pending, authorizedDepends on the payment methods enabledTo confirmOnly if those methods are enabled
6 rows4 columns

Tenant-separation checks

These checks use no scanners, scripts or attack payloads. They find obvious isolation faults through normal use and are not a penetration test.

CheckHowPass condition
01Cross-business recordsLogged in as business B, open business A's record links and change record identifiers for customers, bookings, services and staffAccess denied and nothing shown
02Public booking linksChange the booking reference in a customer's booking-management linkOnly the customer's own booking is shown
03Session and reset handlingLog out then press back; reuse a reset link; use an old link after a password changeSession ended; link rejected
04Plan-gated featuresOpen higher-plan features by direct URL on a lower plan; exceed a plan limitBlocked with a clear message
4 rows3 columns

Part 5

Test design

Twenty test charters cover the brief. Each traces to a line in the brief and is executed manually; TEST-008, TEST-009 and TEST-011 are the strongest candidates for later automation.

Test charters

IDCharterKey checks, including negative and boundary casesExpected outcome
01TEST-001Sign-up, verification, login, logoutValid sign-up; duplicate email; unverified login; logout then backAccount usable only after verification; session ends on logout
02TEST-002Forgot and reset passwordReset by link; reuse the link; old password; unknown emailOnly the newest link works, once
03TEST-003Onboarding and trialComplete; abandon and resume; trial banner and datesBusiness reaches a bookable state; trial matches the intended rule
04TEST-004Services and staffRequired fields; zero and very long durations; zero and decimal prices; edit or delete with future bookingsValid data saved and shown publicly; invalid data rejected with a message
05TEST-005Hours and availability to slotsOpening versus staff hours; closed day; last slot before closing; service longer than the time leftOffered slots equal the configured window
06TEST-006Customer managementCreate, search, edit; duplicate email or phone; customer created by a bookingRecords correct; duplicates follow the intended rule
07TEST-007Booking rules and depositsLead time; furthest advance date; cancellation cut-off; fixed and percentage deposit; roundingEach rule holds at its boundary
08TEST-008Public booking with deposit, happy pathBook on each primary device; choose paid; return to the siteConfirmed booking, paid status, slot removed, emails sent
09TEST-009Payment not completedFailed; cancelled; expired; tab closed at checkout; retry; double click on payAgreed status mapping holds; no paid payment without a booking
10TEST-010Manual booking, reschedule, cancel, outcomesManual booking; reschedule and cancel by both roles; completed; no-show; status changed twiceStatus, calendar and slot agree after each action
11TEST-011Double booking and concurrencyTwo devices submit one slot; manual versus online; two tabs; overlapping services for one staff memberExactly one confirmed booking per staff member and time
12TEST-012Availability edge casesMidnight; today's past slots; the repeated hour in October; day off added after a bookingNo slot outside availability; times display consistently
13TEST-013Subscription, trial and plan limitsLimits per tier; upgrade; downgrade; gated feature by URL; trial end if it can be triggeredFeatures match the plan; blocked items say why
14TEST-014Email matrixEach trigger; recipient; content; links; time shown; duplicates; reminder timingOne correct email per trigger
15TEST-015Responsive and cross-browser sweepCritical screens per device; rotation; long names; keyboard over forms; date and time pickersNo broken layout or unusable control
16TEST-016PWA install and useInstall on Android Chrome and iOS Safari; icon and name; relaunch stays logged in; return from checkoutInstalls and runs, or the gap is documented
17TEST-017Tenant separationThe tenant-separation checks in section 4 across customers, bookings, services and staffNo cross-tenant read or write
18TEST-018Admin and Super AdminFunctions agreed with the founderAs agreed
19TEST-019Retest and smoke regressionRe-run the steps of each fixed defect; re-run sign-up, booking and rescheduleEach fix Verified or Reopened; smoke passes
20TEST-020Report quality reviewMandatory fields on every record; bugs and UX notes on separate lists; summary traces to the log100% complete
20 rows4 columns

Severity scale

The scale is agreed at kickoff so priorities are never disputed later.

SeverityDefinitionIllustration
01CriticalBlocks a core journey for all users, loses or exposes data, or takes money wronglyTwo customers confirmed in one slot
02HighA core function fails for some users, or works only with a costly workaroundConfirmation email missing for bookings made in one browser
03MediumA secondary function fails, or a core one misbehaves with an easy workaroundEdited staff hours appear only after a reload
04LowCosmetic or wording issue with no functional effectButton misaligned on tablet
4 rows3 columns

Device and browser matrix

DeviceBrowserCoverage
01Windows or macOS desktopChrome, current stableLaunch-critical and full
02macOS desktopSafari, currentSpot check, then full
03iPhoneSafariLaunch-critical and full
04Android phoneChromeLaunch-critical and full
05iPad or Android tabletSafari or ChromeSpot check, then full
06iPhone and Android phoneInstalled PWA, launched from the home screenFull coverage
6 rows3 columns

Exact OS and browser versions are recorded on every report.

How we document a bug

This is a format sample with synthetic data, not a finding.

  • — 01

    Title: Booking: slot stays blocked after the deposit payment expires

  • — 02

    Type and severity: Bug, High

  • — 03

    Device and browser: iPhone, Safari; exact versions recorded per session

  • — 04

    Expected result: the booking shows as cancelled and 10:00 is offered again.

  • — 05

    Actual result: 10:00 is not offered; the dashboard shows the booking as awaiting payment.

  • — 06

    Evidence: screen recording and two screenshots; reproduced 3 of 3 attempts.

Steps to reproduce:

  1. 01

    Open the public booking link of TEST Salon A.

  2. 02

    Choose service TEST Cut 30, staff TEST Staff 1, tomorrow at 10:00.

  3. 03

    Enter customer details and continue to payment.

  4. 04

    On the Mollie test screen choose Expired and continue.

  5. 05

    Reopen the booking link and look at tomorrow at 10:00.

Release advice

  • — 01

    Entry gate. Testing starts when access works, two test businesses exist, the scope is agreed and the severity scale is accepted.

  • — 02

    Verdict. The summary says fix first if any Critical is open, or any High in booking, deposits or tenant separation. Otherwise it says go, with the listed known issues.

  • — 03

    Decision owner. The founder decides whether to launch. We advise; we do not certify the platform.

Part 6

Engineering decisions and trade-offs

DecisionWhyTrade-off
01Risk-based sessions with short checklists, not fully scripted casesNo written specification existed, and session testing finds launch blockers soonerLess repeatable than scripts; a written list of what was not tested makes coverage explicit
02Synthetic test businesses onlyKeeps real personal data out of the engagementSet-up time for test accounts and inboxes
03Real devices for sign-off; emulation only for triageInstall and Safari behaviour differ by platformDepends on device availability; cloud real devices fill gaps
04One issue per record, bugs and UX notes on separate listsThe developer can reproduce and fix without follow-up questionsA little more writing time per issue
05Non-intrusive security checks onlyPenetration testing was out of scope and the system was liveConfirms obvious isolation faults only; gives no security assurance
06Mollie test mode onlyNo real money or card data is touchedLive-mode behaviour is not covered; we advise one low-value live booking by the founder before launch
6 rows3 columns

Part 7

Delivery plan

The engagement runs in six phases with four gates. Hours are estimates, confirmed after a first look at the platform.

Delivery roadmap: 6 phases, 4 gates

Figure 2. Delivery roadmap: 6 phases, 4 gates

Each diamond is a gate: work moves to the next phase only when its condition holds.

PhaseDeliverablesExit gateLaunch-critical (h)Full (h)
011. Kickoff and accessScoping answers, logins, scope agreed in writingAccess works and scope is agreed11 to 2
022. Test design and dataCoverage matrix, test fixtures, agreed severity scaleTwo test businesses exist1.5 to 22 to 3
033. Core journey passTEST-001 to TEST-013; first defect batchCore charters executed; any Critical reported the same day7 to 915 to 21
044. Cross-cutting passTEST-014 to TEST-018Committed devices covered3.5 to 59 to 13
055. Reporting and summaryFinal defect log, UX list, release summary, not-tested listReport quality check passed1.5 to 2.53 to 4
066. RetestRetest reportEvery fix marked Verified or Reopened1.5 to 2.52 to 3
6 rows5 columns

Two scope options

The launch-critical option, an estimated 16 to 22 hours, covers the three priority areas end to end, sign-up and onboarding, the core emails, one plan tier in depth with spot checks on the others, and desktop Chrome, iPhone Safari and Android Chrome, with the retest included.

The full coverage option, an estimated 32 to 46 hours, adds every rule and status, all payment methods offered, every plan tier, reminders, the complete device matrix and the installed PWA.

Either way, the founder receives a written list of anything not covered, so nothing is skipped silently.

Part 8

What the founder receives

  • — 01

    A defect log in the founder's own tracker or a shared sheet, one issue per record, with every field the brief asked for.

  • — 02

    A separate list of UX and improvement suggestions.

  • — 03

    A tenant-separation check sheet showing what was attempted and the result.

  • — 04

    An evidence pack of screenshots and recordings, named by defect ID.

  • — 05

    A one-page release summary with the fix-first or go verdict, traced to the logged issues.

  • — 06

    A list of what was not tested and why.

  • — 07

    A retest report covering every fix, plus a smoke re-run of the core journeys.

Working rhythm. A progress note each testing day; any Critical defect reported privately the same working day; the retest started within two working days of the developer reporting fixes. All test data carries a TEST prefix so it can be purged at close, and the tester's access is removed when the work ends.

Part 9

Target outcomes

Targets are set before testing and measured during the engagement.

MeasureHow it is calculatedTarget
01Coverage of the agreed scopeIn-scope requirements with at least one executed test, divided by in-scope requirements100%
02Report completenessReports with every mandatory field, divided by all reports100%
03First-attempt reproducibilityDefects the developer reproduces at the first attempt, divided by defects reported90% or more
04Device coverageCommitted device and browser combinations executed, divided by those committed100%
05Fix verificationFixed defects verified at retest, divided by fixes retestedReported, not targeted: it measures the fixes
5 rows3 columns

We do not forecast a bug count. A clean result would show the tested journeys work; it would not prove the platform secure or scalable.

Part 10

Risks we plan for

RiskHow we manage it
01Scope wider than the time available, so thin coverage is read as completeTwo scope options and a written not-tested list
02Testing on a live instance reaches real usersTEST-prefixed businesses, test inboxes only, purge at close
03No written expected behaviour, so bug versus intended is disputedA Question status for unclear items; plan limits and rules requested at kickoff
04Test-mode payments differ from live set-upLimitation stated; one low-value live booking by the founder advised before launch
05Reminders, trial end and renewals cannot be triggered in the test windowDeveloper asked to shorten timers; otherwise marked Blocked and listed in the summary
06A real cross-tenant exposure is foundRelated checks paused and the founder told privately the same working day
07A clean report is read as security or performance assuranceExclusions stated plainly in the summary, with specialist tests recommended
7 rows2 columns

Part 11

What this engagement does not cover

Load and performance testing, penetration testing, accessibility conformance audits and legal or regulatory compliance reviews sit outside this scope, and live-mode payments are not exercised. The release summary says so plainly. Where they matter, we recommend them as follow-on work: an automated smoke suite for the booking and payment paths, an email sender-authentication review, an accessibility review, a load test and a specialist penetration test.

Part 12

About Clickmasters

Clickmasters is a software house and digital agency with 13 years in business, serving clients across Pakistan, the GCC, the UK, Europe, the USA and Malaysia. Its software practice covers custom software and SaaS development, API integration, QA and DevOps.

Next step. Preparing to onboard your first customers onto a booking, scheduling or subscription product? Contact Clickmasters through Clickmasterssoftwaredevelopmentcompany.com with a short description of your platform. We will reply with scoping questions and a written estimate for both scope options.

Sources

Checked on 5 October 2026.

  • — 01

    Testing, Mollie documentation.

  • — 02

    Handling payment status, Mollie documentation.

  • — 03

    OWASP Top 10:2025, Introduction, OWASP.

  • — 04

    Making PWAs installable, MDN Web Docs.

Preparing to onboard your first customers?

Contact Clickmasters with a short description of your platform. We will reply with scoping questions and a written estimate for both scope options. The launch-critical option covers the three priority areas end to end; the full coverage option adds every rule, status, plan tier and device.

Software testing and QA · SaaS development · API integration · QA and DevOps