280 likes | 378 Views
Testing your C#-based Windows Store app: Top 10 areas to look for bugs. Francis Cheung (patterns & practices) Senior Software Development Engineer 3-133. Agenda. Background Top Problem Areas Demos Q&A. Background. Developed and tested Windows Store app: AdventureWorks Shopper
E N D
Testing your C#-based Windows Store app: Top 10 areas to look for bugs • Francis Cheung (patterns & practices) • Senior Software Development Engineer • 3-133
Agenda • Background • Top Problem Areas • Demos • Q&A
Background • Developed and tested Windows Store app: AdventureWorks Shopper • Harvest learnings • Harvest reusable library (Prism for Windows Runtime)
Suspend/resume & Terminate/relaunch • Validate app behavior when app resumes • Updated server data • Sensors • Use Visual Studio debugger to suspend/resume or terminate/relaunch every state of app
Client updates • Simulate update with old settings and data • Copy old data into Local/Temporary folder • Detect data serialized in old format • Convert data to new format • Think about versioning of data!
Network connectivity • Test no/slow connectivity • Unplug/Disconnect • Fiddler • Metered connections
Asynchronous code cancellation • Stephen Toub’s session (3-301): Async'ingYour Way to a Successful App with .NET • Test re-entering a page multiple times which starts multiple asynccalls
Asynchronous code • Exception when tapping submit button repeatedly? • Test behavior when app starts async operations • Disable buttons • Control order of tasks
Async Interleaving • Exception when updating deleted item? • Initiate multiple async operations • Don’t know when operations will complete. • If operations are related/dependent, strange things can happen
Asynchronous code • Test your app with random delays in asynccalls • Use Fiddler to delay service calls public async Task<Customer> GetCustomerAsync(customerId) {#if DEBUG await Task.Delay(new Random().Next(500,2000)); #endif return await dataAccess.GetCustomerAsync(customerId);}
Resolutions and orientations • Use simulator to test all resolutions and orientations • App should be functional in as many orientations and window sizes as possible
Device testing • Local Machine • Simulator • ARM (Surface) • x64 and x86
Localizability • Pseudo-localization • Use the Multilingual App Toolkit to generate pseudo translations • Add English (qps-ploc) from Control Panel > Language > 'Add a language'
Accessibility • Try to use the app with eyes closed and Narrator turned on • Accessible visual experience • High contrast (black/white) • Text contrast (WAT-C Contrast Analyser) • Verify keyboard accessibility • Onscreen & physical keyboard Don’t forget about me!
Test against UX guidelines • Index of UX guidelines for Windows Store apps • Modal pop-up versus flyouts versus full page • When testing the app, review UX guidelines for: • App bars • Flyouts • Navigation • Layout • Animation
Links • AdventureWorks Shopper reference implementation: • http://msdn.microsoft.com/en-us/library/windows/apps/xx130643.aspx • Francis Cheung (fcheung@Microsoft.com)
Required Slide *delete this box when your slide is finalized Your MS Tag will be inserted here during the final scrub. Evaluate this session • Scan this QR codeto evaluate this session and be automatically entered in a drawing to win a prize!