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

28

Upload: stanley-banks

Post on 19-Jan-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing
Page 2: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Francis Cheung (patterns & practices)Senior Software Development Engineer3-133

Testing your C#-based Windows Store app: Top 10 areas to look for bugs

Page 3: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

BackgroundTop Problem AreasDemosQ&A

Agenda

Page 4: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

• Developed and tested Windows Store app: AdventureWorks Shopper

• Harvest learnings• Harvest reusable library

(Prism for Windows Runtime)

Background

Page 5: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Top Problem AreasTop Problem AreasSuspend/resumeTerminate/restartClient updatesNetwork connectivityAsynchronous codeResolutions and orientationDevice testingLocalizabilityAccessibilityReview against user experience (UX) guidelines

Page 6: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

• 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

Page 7: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Demo: Suspend/resume and Terminate/relaunch with Navigation

Page 8: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

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!

Page 9: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Demo: Client update issues

Page 10: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Network connectivity• Test no/slow connectivity• Unplug/Disconnect• Fiddler

• Metered connections

Page 11: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Demo: Network connectivity issues and Metered connections

Page 12: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

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

Page 13: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Asynchronous code

Exception when tapping submit button repeatedly?

Test behavior when app starts async operations• Disable buttons• Control order of tasks

Page 14: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

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

Page 15: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

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);}

Page 16: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Demo: Async interleaving

Page 17: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Resolutions and orientations• Use simulator to test all resolutions and

orientations• App should be functional in as many orientations

and window sizes as possible

Page 18: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Device testing• Local Machine• Simulator• ARM (Surface)• x64 and x86

Page 19: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Localizability• Pseudo-localization

– Use the Multilingual App Toolkit to generate pseudo translations– Add English (qps-ploc) from Control Panel > Language > 'Add a language'

Page 20: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Demo: Pseudo-localization

Page 21: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

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!

Page 22: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Demo: Narrator & High Contrast / Black and White

Page 23: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

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

Page 24: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Top Problem AreasTop Problem AreasSuspend/resumeTerminate/restartClient updatesNetwork connectivityAsynchronous codeResolutions and orientationDevice testingLocalizabilityAccessibilityReview against user experience (UX) guidelines

Page 26: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Q&A

Page 27: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

Evaluate this session

Scan this QR code to evaluate this session and be automatically entered in a drawing to win a prize!

Page 28: Top Problem Areas Suspend/resume Terminate/restart Client updates Network connectivity Asynchronous code Resolutions and orientation Device testing

© 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.