Dan Granahan Saagar Patel Shen Li Rob Williams Test Cases Create a framework with which users can stream media (live and static) to a handheld Two way communication flushed out Stream switching functioning Pause/Resume stream functioning Device Boot ○ Device launches application, attempts to contact server ○ Server waits for contact from device, spawns service thread Device Shutdown ○ Device sends termination message to server, kills processes ○ Server kills service thread, waits for new clients User Toggles Input Source ○ Device sends request to server Server feeds new source into stream User Pauses Stream ○ Device sends request to server Server pauses stream (buffering new data) Communication Failure ○ Server kills service thread, client attempts to re-establish communication Device / Server Side Failure ○ ○ If server is widowed Kill service thread, wait for new clients If client is widowed Display error, attempt to reconnect Performance Tests Source toggle to display Initial contact to display Failure/Brief outage to recovery Some streams are relatively time-sensitive (e.g. baby monitor) Some streams are extremely time-sensitive (e.g. “24”) Some users are impatient (e.g. everyone I’ve ever met ever) Run “source-toggle” script on the device to trigger N source swaps, measure total time, divide by N Create and tear-down connection from device to server, measure time from initial contact to feed display in each (then average) Simulate failures from either end by intentionally dropping messages, losing connections, & killing streams Testing Process Integrate software “hooks” into device and server side software Write scripts that link into these hooks, each one exercising a set of test cases (and a certain classification of test) ○ Device drops network data ○ Device toggles desired source ○ Server ignores device requests ○ Server pauses feed ○ Server “loses” feed ○ etc. Most tests do not require a user-generated workload ○ Many require users to verify/validate Looking Ahead Interfacing with a TV tuner Switching inputs quickly (from a user’s perspective) Separating independent variables Campus network has arbitrary dead spots in buildings Flushing server-side buffers is a good idea