Testing your C#-based Windows Store app: Top 10 areas to look for bugs
description
Transcript of Testing your C#-based Windows Store app: Top 10 areas to look for bugs
Francis Cheung (patterns & practices)Senior Software Development Engineer3-133
Testing your C#-based Windows Store app: Top 10 areas to look for bugs
BackgroundTop Problem AreasDemosQ&A
Agenda
• Developed and tested Windows Store app: AdventureWorks Shopper
• Harvest learnings• Harvest reusable library
(Prism for Windows Runtime)
Background
Top Problem AreasTop Problem AreasSuspend/resumeTerminate/restartClient updatesNetwork connectivityAsynchronous codeResolutions and orientationDevice testingLocalizabilityAccessibilityReview against user experience (UX) guidelines
• Validate app behavior when app resumes• Updated server data• Sensors
• Use Visual Studio debugger to suspend/resume or terminate/relaunch every state of app
Suspend/resume & Terminate/relaunch
Demo: Suspend/resume and Terminate/relaunch with Navigation
Client updatesSimulate 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!
Demo: Client update issues
Network connectivity• Test no/slow connectivity• Unplug/Disconnect• Fiddler
• Metered connections
Demo: Network connectivity issues and Metered connections
Asynchronous code cancellation
Stephen Toub’s session (3-301): Async'ing Your Way to a Successful App with .NET
Test re-entering a page multiple times which starts multiple async calls
Asynchronous code
Exception when tapping submit button repeatedly?
Test behavior when app starts async operations• Disable buttons• Control order of tasks
Async InterleavingException 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 async calls
• 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);}
Demo: Async interleaving
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'
Demo: Pseudo-localization
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 keyboardDon’t forget about me!
Demo: Narrator & High Contrast / Black and White
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
Top Problem AreasTop Problem AreasSuspend/resumeTerminate/restartClient updatesNetwork connectivityAsynchronous codeResolutions and orientationDevice testingLocalizabilityAccessibilityReview against user experience (UX) guidelines
LinksAdventureWorks Shopper reference implementation:http://msdn.microsoft.com/en-us/library/windows/apps/xx130643.aspx
Francis Cheung ([email protected])
Q&A
Evaluate this session
Scan this QR code to evaluate this session and be automatically entered in a drawing to win a prize!
© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.