top problem areas suspend/resume terminate/restart client updates network connectivity asynchronous...

Post on 19-Jan-2018

219 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 (fcheung@Microsoft.com)

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.

top related