Mobile Proctoring Plan 7 Sprints

Mobile Proctoring Plan 7 Sprints

Problem. Candidates already take proctored assessments on desktop. We now need to support proctoring on mobile. A mobile app, built by another team, will open the assessment in a mobile webview and proctor the candidate. Our application must be ready for this: assessments must run properly inside the webview, candidates must reach the app through deep links, and the app team must get support when needed.

Mobile App Proctoring Support: Development and Testing Plan (7 Sprints)
Effort in person-days | Team: 2 Developers + 1 QA | 7 sprints of 2 weeks (14 weeks) | Status: Draft for review
1. Summary
Plan on a page. 7 sprints of 2 weeks (14 weeks, about one quarter). Development 106 days + QA 56 days = 162 person-days; with contingency (Dev 15%, QA 10%) 184 person-days. Utilisation: developers 87%, QA 89%. To fit, about 8.5 dev days and 3 QA days of lower-priority work are deferred to the next phase (section 4).
SectionDev (days)QA (days)Total (days)ShareCovers
A. Analysis, Design and Planning83.511.57%Analysis, contract, design, test strategy, environments
B. Mobile WebView Support (Criterion a)36155131%Criterion a: assessments on mobile webview
C. Deep Linking (Criterion b)209.529.518%Criterion b: deep links for Android and iOS
D. Non-Functional Requirements (NFR)18.51230.519%NFR: security, performance, reliability, compatibility
E. Integrated Testing and Release (QA led, spans all features)13.514.52817%End to end testing, regression, defects, UAT, release
F. Adhoc Support and Documentation (Criterion c)101.511.57%Criterion c: adhoc support and documentation
Subtotal10656162100%
Contingency (Dev 15%, QA 10%)16622Legacy code unknowns and app team dependencies
Grand total12262184

Why 7 sprints. The earlier full-scope estimate (Dev 139.5, QA 77 with contingency) needs 8 sprints. Fitting a quarter means choosing the sprint count and the scope together:

OptionDev / QA capacity (days)What fitsAssessment
6 sprints (12 weeks)120 / 60About 105 dev and 53 QA days of work fit at 88% load. Needs roughly 17 dev and 9 QA days more scope deferred (for example reporting, in-app browser handling, observability) and thinner testing.Not recommended: test depth and defect time are too thin for a proctored product
7 sprints (14 weeks)140 / 70Planned scope in this document: 122 dev and 62 QA days with contingency.Recommended. Slightly over a 13 week calendar quarter, so start 1 week early or accept Sprint 7 closing in the first week of next quarter
8 sprints (16 weeks)160 / 80Full scope from the earlier estimate: 139.5 dev and 77 QA days with contingency, including deferred items.Lowest scope risk, but QA runs near 96% load and the plan extends beyond the quarter
2. Scope, Assumptions and Dependencies
In scope (this quarter)Out of scope
  • Changes in our assessment application and backend to run inside the mobile webview
  • Launch token, session, attempt and proctoring handshake APIs
  • Deep link creation, validation, hosted verification files and fallbacks
  • NFR changes listed in section D
  • Testing of all of the above, including end to end with the app team build
  • Adhoc support for the app team and documentation
  • Development or changes in the mobile webview shell (another team)
  • Development or changes in the mobile app, including its proctoring logic (another team)
  • App side deep link handling: intent filters, associated domains, entitlements
  • Publishing the app to Play Store or App Store
  • Changes to the desktop proctoring experience, apart from regression protection
  • Items deferred to the next phase (section 4)

Assumptions

  • Dev 1 mainly covers backend, security and integration. Dev 2 mainly covers web pages, deep link routing and compatibility. Days are person-days of focused work. Task effort includes unit tests.
  • The app team agrees the launch contract by the end of Sprint 1 and provides a working test build (TestFlight and Android internal track) from the start of Sprint 2.
  • Only the assessment-taking pages need mobile changes. Admin and reporting screens change only where B9 requires it.
  • Real Android and iOS devices (at least 6 across OS versions) or a device farm are available to QA from Sprint 1.
  • A domain we control is available for deep links, with HTTPS and the ability to host verification files at the root.
  • Each sprint has 10 working days per person: capacity 20 dev days and 10 QA days. Leave and holidays are absorbed by the headroom in section 6.
  • The NFR targets in section 5 are proposals; business confirms them by the end of Sprint 1.
  • Each task is built and tested in the sprint shown in the Sprint column; QA tests items as soon as they are delivered.
3. Sprint Plan (7 sprints x 2 weeks)
SprintWeeksFocus and milestoneTasksDev planned / capacityQA planned / capacityDev headroomQA headroom
Sprint 11-2Foundation. Contract frozen, environments ready, launch token and link design doneA1, A2, A3, A4, A5, B1, C1, F115 / 205.6 / 1054.4
Sprint 23-4Core launch and handshake. First launch from the app test build into the webview; proctoring handshake working in devB2, B3, B4, C2, F117 / 207.1 / 1032.9
Sprint 35-6Events, deep link routing and automation. Deep link opens the app on both Android and iOS; API automation running in the pipelineB6, B8, B10, C3, C4, C5, D5, E1, E4, F117.2 / 208.8 / 102.81.2
Sprint 47-8Mobile pages, resume and security. A full assessment can be completed in the webview, including resume after interruptionB5, B7, C6, D1, E4, F118.1 / 207.9 / 101.92.1
Sprint 59-10Links, reporting, reliability and compatibility. Feature complete; invitations carry deep links; device matrix executedB9, C7, C8, D3, D4, E4, F116.4 / 209 / 103.61
Sprint 611-12Performance, in-app browsers and E2E cycle 1. Load targets met; end to end and first regression on real devices; code freeze except defectsC9, D2, E2, E3, E4, F1, F211.3 / 209.7 / 108.70.3
Sprint 713-14E2E cycle 2, UAT and release. Second regression, UAT sign-off, rollout and go-liveD6, D7, E2, E3, E4, E5, E6, F1, F211 / 207.6 / 1092.4
Total106 / 14056 / 703414

The headroom (34 dev days, 14 QA days) covers contingency (16 dev, 6 QA) plus leave, holidays and meetings. Sprints 6 and 7 deliberately carry less planned feature work so defects, UAT and rework can land there. Dev planned effort includes defect fixing (E4) and adhoc support (F1), spread across sprints.

4. Deferred to the Next Phase

These items were in the earlier 17-week estimate. They are not part of this quarter’s plan. Deferring them is what lets the plan fit in 7 sprints with a realistic load.

Deferred itemReasonDev (days)QA (days)
Deep link click and open tracking (created, clicked, opened app, fell back to store)Useful for support and reporting; not needed for launch1.50.5
Accessibility and small screen usability checks (font scaling, zoom, contrast, tap targets)Basic responsive fixes remain in B5; the formal accessibility pass moves out1.51
Full reviewer and export enhancements for mobile attemptsB9 keeps data capture and basic view; exports and richer reports move out1.50.5
Hypercare after go-live (first 2 weeks): monitoring, triage, hotfixesFalls after the quarter; plan as support effort in the next phase41
Total deferred8.53

What changed compared with the 17-week estimate

SectionEarlier (Dev + QA)Now (Dev + QA)ChangeMain reason
A. Analysis, Design and Planning12.511.5-1Test strategy and environment effort trimmed
B. Mobile WebView Support (Criterion a)5651-5Reporting scope reduced; test effort trimmed on lower-risk items
C. Deep Linking (Criterion b)3529.5-5.5Click tracking deferred; test effort trimmed
D. Non-Functional Requirements (NFR)4030.5-9.5Accessibility deferred; scalability merged into performance; desktop compatibility moved into regression
E. Integrated Testing and Release (QA led, spans all features)30.528-2.5Defect fixing trimmed to about 7 percent; regression and UAT scoped tighter
F. Adhoc Support and Documentation (Criterion c)17.511.5-6Hypercare moved after the quarter
Subtotal (before contingency)191.5162-29.5
Trade-off to be aware of. Part of the saving comes from thinner test effort on lower-risk items, not only from removed scope. Test depth on the high-risk areas (launch token, proctoring handshake, resume, deep links, security, end to end on devices) is kept.
5. Detailed Estimates by Functionality

Each table shows the task, owner, sprint, development effort, the matching QA activity and the QA effort. All figures are person-days. S1 to S7 are sprint numbers.

A. Analysis, Design and Planning

Understand what the current desktop assessment and proctoring flow assumes, agree the contract with the app team, and prepare the test approach and environments.

IDTask and scopeOwnerSprintDev (days)QA activityQA (days)Total (days)
A1Gap analysis of the current assessment flow for mobile webview: login, session, timers, question types, uploads, proctoring hooks and desktop-only assumptionsDev 1 + Dev 2S12Review findings and identify test scenarios0.52.5
A2Define the launch contract with the app team: launch URL and parameters, token format, mode flag, events and callbacks, error codes, versioningDev 1S13Review contract and derive contract tests0.53.5
A3High level and low level design for launch, proctoring handshake and deep link service; design review with the app teamDev 1 + Dev 2S12Not applicable02
A4Test strategy, test plan and scenario matrix (functional, deep link, NFR, regression), traceable to requirementsQAS10Prepare and review with team1.51.5
A5Set up Dev, QA and UAT environments, test data, test candidates and assessments, emulators and real device pool, domain for deep linksDev 2 + QAS11Verify environments and arrange devices12
Section total83.511.5
B. Mobile WebView Support (Criterion a)

Changes in our assessment application so that a proctored assessment runs correctly inside the mobile webview. The webview shell and the mobile app are built by another team and are not in this estimate.

IDTask and scopeOwnerSprintDev (days)QA activityQA (days)Total (days)
B1Webview launch mode and secure launch token: accept a one-time, short-lived token from the app, validate it, create the candidate session without a second login, reject replaysDev 1S14Valid, expired, reused and tampered token scenarios; API tests1.55.5
B2Session and cookie handling inside the webview: SameSite and third-party cookie rules, storage fallback, session timeout, keep-alive when the app is in the backgroundDev 1S23Session persistence, timeout and background/foreground tests on Android and iOS14
B3Proctoring mode switch: when launched from the app, turn off browser based proctoring (camera, mic, screen, full-screen and tab-switch checks) so it does not clash with app proctoring; avoid duplicate permission promptsDev 2S24Browser proctoring off in app mode and still on for desktop; no extra prompts26
B4Proctoring handshake APIs: receive start, pause, resume, violation and end events from the app; block assessment start until app proctoring is confirmed active; pause the assessment if proctoring dropsDev 1S25State machine tests: start gating, drop, resume, duplicate and out-of-order events27
B5Assessment pages fit for mobile webview: responsive layout, touch input, viewport and keyboard behaviour, orientation and timer display for every question type (MCQ, text, code, upload, video). Our assessment pages onlyDev 2S46Visual and functional pass for each question type and screen size2.58.5
B6Events back to the app: completion, exit, timeout, error and session expiry callbacks (JS bridge or redirect scheme as agreed in the contract)Dev 2S33Each event fires once with the right payload; contract tests14
B7Resume and reconnect: network drop, app killed or relaunched; same attempt continues with answers and remaining time preserved; autosaveDev 1S44Kill app, switch networks, airplane mode, low battery; check answers and timer26
B8Attempt lock: only one active device per attempt; block a parallel desktop or second mobile session with a clear messageDev 1S33Concurrent session tests, desktop versus mobile and two phones14
B9Data model and basic reporting: record the source (mobile app), app proctoring events and violations against the attempt; show them in the existing reviewer view (export changes deferred)Dev 1S52.5Data stored correctly; reviewer view shows mobile attempts1.54
B10Feature flag and configuration per tenant and assessment to enable mobile app proctoring; safe default is offDev 2S31.5Flag on and off; tenant isolation0.52
Section total361551
C. Deep Linking (Criterion b)

Create links that open the installed mobile app on Android and iOS. Our side covers link creation, validation, hosted verification files and fallbacks. The app side of link handling belongs to the app team.

IDTask and scopeOwnerSprintDev (days)QA activityQA (days)Total (days)
C1Deep link design: URL format, parameters, signing, expiry, Universal Links (iOS) and App Links (Android) domain, fallback rules; agree with the app teamDev 2S12Review design; define test matrix (OS, browser, mail client)0.52.5
C2Deep link generation service and API: create a signed, expiring link per candidate and assessment; regenerate and revokeDev 1S24API tests: create, expire, revoke, tamper, authorisation26
C3Device detection and routing landing page: Android and iOS open the installed app; desktop shows the web flow or a clear message; unknown devices fall back safelyDev 2S33Routing tests on Android, iOS, tablet and desktop14
C4iOS Universal Links: host the apple-app-site-association file, configure paths, align app ID with the app teamDev 2S31Link opens the app from Safari, Mail, Notes and Messages0.51.5
C5Android App Links: host assetlinks.json, configure paths and certificate fingerprints, domain verification with the app teamDev 2S31Link opens the app from Chrome, Gmail and SMS; verified link status0.51.5
C6App not installed fallback: send the candidate to Play Store or App Store and keep the link usable after install so they land on their assessmentDev 2S42Fresh install flow on both platforms; link still valid after install13
C7Use the deep link in invitation emails, SMS and the candidate portal: template changes, desktop link versus mobile linkDev 1S53Check rendered emails, SMS and portal for each channel and locale14
C8Link validation when the app opens: verify token, expiry, reuse and candidate status; friendly error messages and a way to request a new linkDev 1S53Expired, used, revoked, wrong candidate and already completed cases14
C9In-app browser handling: links opened inside WhatsApp, Gmail, LinkedIn or Facebook browsers; add an ‘open in app or browser’ stepDev 2S61Test across messaging and mail apps and several OS versions23
Section total209.529.5
D. Non-Functional Requirements (NFR)

Security, performance, reliability and other qualities needed for a proctored, high-stakes assessment on mobile. Proposed targets are in section 5 and need business agreement.

IDTask and scopeOwnerSprintDev (days)QA activityQA (days)Total (days)
D1Security hardening: signed links, token replay protection, rate limiting, brute force protection, CSP and headers for webview, secrets handling, threat reviewDev 1S44Security tests: token abuse, link forwarding, injection, OWASP checks26
D2Performance and scalability: fast token exchange and link redirect, smaller page payloads, caching, autoscaling and indexes for the exam start spikeDev 1 + Dev 2S64Load, stress and spike tests on launch, link service and autosave37
D3Reliability on weak networks: retries, offline answer queue, idempotent submissions, server-side authoritative timerDev 1S53.5Throttled and flaky network tests; no lost or duplicated answers25.5
D4Compatibility: supported Android WebView and iOS WKWebView versions, device and OS matrix, fixes for version specific issuesDev 2S52Run the device and OS matrix (real devices plus emulators)35
D5Observability: structured logs, correlation ID shared with the app, dashboards and alerts for launch failures and proctoring eventsDev 1S32.5Verify logs, traces and alerts fire as expected13.5
D6Privacy and compliance: consent for camera and mic on mobile, retention of proctoring data per region, no personal data in logsDev 1S71.5Consent flow and data retention checks0.52
D7Rollout and rollback: feature flag rollout plan, migration rollback, runbook, monitoring during releaseDev 1S71Rollback rehearsal in UAT0.51.5
Section total18.51230.5
E. Integrated Testing and Release (QA led, spans all features)

Testing that cuts across features: automation, end to end testing with the app on real devices, regression (including the desktop flow), defect fixing, UAT and release readiness. Feature level test effort is already in sections A to D.

IDTask and scopeOwnerSprintDev (days)QA activityQA (days)Total (days)
E1Support API test automation for new endpoints (token, handshake, link service); provide test hooks and dataDev 1S30.5Build and run the API automation suite in the pipeline33.5
E2End to end integration with the app team build on real Android and iOS devices; fix integration defectsDev 1 + Dev 2S6-S73Execute end to end scenarios: link, launch, app proctoring, assessment, submit4.57.5
E3Regression cycles on desktop and mobile flows (two cycles plus a desktop smoke test with every build)Dev 1S6-S70.5Run and report two regression cycles33.5
E4Defect fixing across the project (about 7 percent of build effort)Dev 1 + Dev 2S3-S77Retest fixes and verify closure29
E5UAT support: environment, data, triage and fixes during UATDev 1 + Dev 2S72Assist UAT users; triage defects1.53.5
E6Release readiness: build verification, release notes, go or no-go inputDev 1S70.5Test summary report and sign-off0.51
Section total13.514.528
F. Adhoc Support and Documentation (Criterion c)

Time reserved to support the app team whenever needed, and documentation. Adhoc support is a planned buffer so it does not eat into feature work. Post go-live hypercare sits outside this quarter (see section 4).

IDTask and scopeOwnerSprintDev (days)QA activityQA (days)Total (days)
F1Adhoc support for the app team: questions, debugging sessions, log analysis, test endpoints and environment issues (about 0.25 day per week per developer, reviewed every sprint)Dev 1 + Dev 2S1-S77Reproduce and verify issues raised by the app team18
F2Documentation: API specification, launch and deep link integration guide, runbook, known issuesDev 1 + Dev 2S6-S73Review test documentation and the integration guide0.53.5
Section total101.511.5
6. NFR Targets (proposed, to be agreed)
QualityProposed targetTask
Launch token exchangep95 < 500 msD2
Deep link redirectp95 < 300 msD2
Assessment page load on 4Gp95 < 3 secondsD2, B5
Availability of launch and link services99.9% during exam windowsD2, D7
Answer autosaveNo more than 1 answer or 30 seconds of data lost after a network drop or app killD3, B7
Peak concurrencyAssumed 2 times the current desktop peak; confirm number with businessD2
Supported platformsLatest 3 major Android and iOS versions; confirm with app teamD4
Link validityShort expiry, one-time use for launch tokens; expiry value to be confirmedD1, C8
SecurityNo critical or high findings open at releaseD1
Desktop regressionZero new defects in the desktop flowE3
7. NFR Issues to Be Addressed

Known problems that commonly appear when assessments run inside a mobile webview. Each one is mapped to a task above.

IssueWhy it mattersProposed handlingTaskSeverity
Session lost in webviewThird-party and SameSite cookie rules in WKWebView and Android WebView can drop the session mid-assessment.Token based session, storage fallback, keep-aliveB2High
Camera and mic conflictThe app already holds the camera for proctoring; the web page asking again can fail or show a second prompt.Turn off browser proctoring in app modeB3High
App goes to backgroundPhone call, notification or app switch can suspend the webview; timers drift and answers may be lost.Server-side authoritative timer, autosave, resumeB7, D3High
Link shared with someone elseA forwarded link could let another person start the candidate’s attempt.Signed one-time token, bound to the candidate, attempt lockD1, C8, B8High
Token replay and brute forceReused or guessed tokens could start a session.Short expiry, single use, rate limitingD1High
Exam start spikeEveryone opens the link at the same time and overloads launch and link services.Load and spike test, autoscaling, cachingD2High
Universal and App Links do not open the appLinks typed in the address bar, opened from the same domain, or with an unverified domain open in the browser instead.Correct verification files, landing page fallbackC3, C4, C5Medium
In-app browsers capture the linkWhatsApp, Gmail and social apps open links in their own browser, so the app never opens.‘Open in app or browser’ stepC9Medium
App not installed or outdatedCandidate lands on the web with no way to be proctored.Store fallback and clear error messageC6, C8Medium
Weak mobile networkSlow or dropping data connections break uploads and submissions.Retries, idempotent submit, smaller payloadsD2, D3Medium
Webview version fragmentationOld Android System WebView and iOS versions behave differently.Agreed support matrix and device testingD4Medium
Device clock differencesWrong device time can distort timers and expiry checks.Use server time everywhereD3Medium
Privacy and consent on mobileCamera and mic data and retention rules vary by region.Consent flow, retention settings, no personal data in logsD6Medium
Support is hard without shared logsIssues between the app and our backend cannot be traced.Shared correlation ID and dashboardsD5, F1Medium
Desktop regressionShared code changes could break the working desktop flow.Feature flag, desktop smoke test per build, regression cyclesB10, D7, E3Medium
Small screens and accessibilityZoom, large fonts and small tap targets make questions hard to answer.Basic responsive fixes now; formal accessibility pass deferredB5, deferredLow
8. Capacity Check
RolePeopleCapacity over 14 weeksPlanned with contingencyUtilisationNote
Developers2140 days122 days87%Remaining 18 days cover leave, holidays and meetings
QA170 days62 days89%High for one person. A single QA is the main bottleneck (risk R3)
9. Test Approach
Test typeWhat is coveredWhoWhere in estimate
FunctionalEach task in sections B and C, including negative casesQA, in the same sprint as developmentB, C
API and contractToken, handshake, link service and events; contract tests against the agreed launch contractQA with Dev supportB1, B4, B6, C2, E1
Deep link matrixAndroid and iOS, installed and not installed, browser, mail, SMS and messaging appsQAC3 to C9
End to end on real devicesLink, launch, app proctoring, assessment, submit, with the app team buildQA with Dev and app teamE2
SecurityToken abuse, link forwarding, injection, headers, rate limitsQA with Dev 1D1
Performance and loadLaunch, link and autosave under peak load; exam start spikeQA with Dev 1 and Dev 2D2
CompatibilityDevice and OS matrix, WebView versions, screen sizesQAD4
RegressionDesktop and mobile flows: two full cycles plus a desktop smoke test with every buildQAE3
UATBusiness users on UAT with mobile devicesBusiness, QA supportE5
Entry criteria. Contract frozen, environment and test data ready, build deployed with release notes.
Exit criteria. No open critical or high defects, all planned scenarios executed with at least 95% passing, NFR targets met or formally accepted, regression clean, UAT signed off.
10. Risks and Mitigations
IDRiskImpactMitigation
R1App team changes the launch contract late, causing rework in B and CHighFreeze the contract by the end of Sprint 1, version it, review changes in sprint planning
R2Legacy assessment pages need more rework than B5 estimatesHighUse A1 findings to re-estimate at the end of Sprint 1; Dev contingency of 15% held; defer lower-priority items first
R3Single QA is a bottleneck or absent for some daysHighDevelopers write unit and API tests and run smoke tests; consider part-time QA support for Sprints 6 and 7
R4Plan has little slack: 7 sprints is slightly over a 13 week calendar quarter and scope was already trimmedHighStart 1 week before quarter start, or accept Sprint 7 closing in the first week of the next quarter; if risks hit, defer C9 and B9 next
R5Real device or device farm access is lateMediumRaise in week 1; start with emulators and use the farm for the matrix in Sprint 5
R6App team’s deep link setup (entitlements, certificate fingerprints) arrives late, blocking C4 and C5 testingMediumAgree dates in Sprint 1; test the hosted files independently first
R7Proctoring event meaning is unclear (what counts as a violation or pause)MediumDocument in the contract and review with product in Sprint 1
R8App builds depend on store review cyclesMediumUse TestFlight and Android internal tracks for test builds
R9NFR numbers are not agreed by businessMediumUse the proposed targets in section 6; confirm by the end of Sprint 1
11. Open Questions
  • Are the deferred items in section 4 acceptable for this quarter?
  • What is the agreed way to start the webview: token in URL, POST, or a JS bridge? (affects B1, B6)
  • Which events must the app send to us, and what must we do when proctoring drops mid-assessment? (affects B4)
  • Should the same candidate be allowed to continue on desktop after starting on mobile? (affects B8)
  • Which Android and iOS versions and which devices must be supported? (affects D4)
  • What is the expected peak number of concurrent mobile candidates? (affects D2)
  • Which domain will host the deep links and verification files, and who manages DNS and certificates? (affects C1, C4, C5)
  • Where do proctoring recordings and violation data live, and for how long are they kept per region? (affects B9, D6)

How to use in Confluence: open this file in a browser, select all, copy, and paste into a Confluence page in edit mode. Colours and tables are kept; if a colour is lost, reapply it with the table cell background option.