DEV Community

Roronoa
Roronoa

Posted on

A Voice AI Feature Needs a Permission-Loss Test Plan

A voice bot demo usually starts with permission already granted, a quiet room, a stable network, and the app in the foreground. Mobile users get phone calls, Bluetooth switches, revoked permissions, process death, and tunnels.

Voice correctness is a lifecycle contract.

Declare the test envelope

device: Pixel 9
os: Android 16
app_version: 1.4.0
audio_route: bluetooth-headset
network: cellular-shaped-3g
microphone_permission: granted
server_region: singapore
task: 12-second weather request
Enter fullscreen mode Exit fullscreen mode

Record speech-recognition mode, voice provider/model version, whether audio leaves the device, and retention policy. Without these, latency and privacy observations cannot be reproduced.

Test transitions

Starting state Event Expected outcome
recording permission revoked stop capture, discard or preserve per visible policy, explain recovery
recording incoming call release audio focus, preserve draft safely
uploading network lost show bounded retry or explicit failure; no duplicate request
speaking Bluetooth disconnects pause or switch route visibly; never blast private audio unexpectedly
backgrounded OS kills process recover authoritative task state without replaying submission
processing user cancels stop playback and mark server cancellation state separately

Measure permission-to-record time, end-of-speech to transcript, transcript to first response, total completion, uploaded bytes, retry count, and battery/thermal state. Report medians and tail latency across repeated runs, not the best attempt.

Privacy copy should answer what is recorded, where it is processed, how long audio and transcripts remain, who can access them, and how deletion works. Permission denial must leave a usable text path. Do not repeatedly prompt users who declined.

Test with VoiceOver or TalkBack, large text, hearing devices where available, noisy rooms, accents represented in your target population, silence, accidental activation, and a user correcting the transcript before submission.

The public MonkeyCode repository documents native mobile support and server-side AI task execution. Voice could be one input mode for that category, but this protocol was not run against MonkeyCode and does not claim a voice feature.

Disclosure: I contribute to the MonkeyCode project. Product context comes from public documentation; no device benchmark or voice integration is claimed.

The happy path proves audio can move. Permission-loss and lifecycle tests prove the feature can be trusted on a phone.

Top comments (0)