Windows Store app test cases
[ This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation ]
Here's a set of test cases that you can use to test your app before you submit it to the Windows Store. Use these cases along with the guidance in Debugging and testing either to supplement your existing test process or to develop a new one.
Note These test cases support app functionality that meets the latest Windows and Windows Phone Store Policies. Make sure to align any of your own test cases to those requirements whenever possible.
Use the links in the panel to the right to jump to the feature area that's relevant to your app. Identify the test cases that best apply to your app based on how it uses specific features, and then use the provided examples and resources to develop your own test routines.
A quick note on additional UX design testing
A complete functional review to check for critical bugs is an important step in completing the development of your app; you can't close the book on all user-experience (UX) concerns during the design phase. You have to implement some elements of your app design before you can see how they contribute to the user experience.
For examples of what to test for, see App UX test cases, a companion to the UX design checklist.
Store certification
Test case | Details |
---|---|
Your app meets Windows Store app certification requirements. |
Review the Windows and Windows Phone Store Policies and see if your app meets all applicable criteria prior to its final submission to the Windows Store. |
Your app passes self-testing using the Windows App Certification Kit . |
First, download the Windows App Certification Kit for the appropriate platform version (Windows 8 or Windows RT). Next, test your app using the kit as described in Using the Windows App Certification Kit. |
Your app starts within five seconds. |
Your app can display a splash image while loading at Start, but the first app screen should still render within five seconds to support a responsive user experience. Example test
|
Functionality and core scenarios
Test case | Details |
---|---|
Your app fully implements all advertised features and functionality. |
Example test
|
Your app supports primary orientation scenarios. |
The behavior of your app should be consistent when responding to orientation changes. Your app should not display a blank screen, blank tiles, or empty white rectangles. Your app should maintain context. For example, your app should be in same state as it was in when the screen was locked and device orientation was changed. If the user was watching a video when the orientation changed, playback should continue after the change. Example test
For more info, see Guidelines for layouts. |
Your app uses the correct navigation UI element to move from any page back to the app homepage. |
The primary method of navigation back to the app home page should be accomplished using the provided app bar button. Example test
For more info, see Navigation patterns. |
User input
Test case | Details |
---|---|
Your app does not hide user input controls when the on-screen keyboard is in use, or as a result of changes to page dimensions after switching between portrait and landscape orientation. |
User input, such as buttons or other text boxes, should not be obscured by the on-screen keyboard or as a result of orientation changes. Example test
For more info, see Guidelines for layouts. |
Your app is fully functional using all supported input types. |
The user experience should be consistent in quality across primary control methods supported by Windows 8. Example test
Responding to user interaction (JavaScript and HTML or C#/VB/C++ and XAML) |
Your app disables a user-input element until the last interaction with that element has been processed. |
After the user interacts with a UI element (for example, a button), that element should be disabled if the operation that it initiates requires completion before another call is made (for instance, a sign-in to a remote service). Example test
Responding to user interaction (JavaScript and HTML or C#/VB/C++ and XAML) |
Your app implements the provided app bars correctly. |
If commands on the app bar are vital to the screen or further navigation, they should appear on the canvas. Example test
Note
Your app should not display the app bar programmatically.
Note
Your app should not display app bar if there is nothing to show in it. For more info, see Guidelines and checklist for app bars (JavaScript and HTML or C#/VB/C++ and XAML) |
Connectivity
Test case | Details |
---|---|
Your app behaves normally in environments where network connectivity isn't reliable. |
Your app provides a relevant connectivity error message to the user when a connection is lost or reestablished. Example test
Note
One option for scenarios where connections aren't available is for your app to operate in an offline mode without alerting the user. |
Your app behaves normally in airplane mode. |
Example test
|
Content interaction
Test case | Details |
---|---|
Your app uses appropriate list-box interactions. |
Items in a list-box element should change text color, but should not be active if there are no actions currently associated with the selection. Example test
|
Your app does not trigger an action while a scrolling control is in use. |
Ensure that items within a grid or scroll viewer are not triggered accidentally by events on their container controls. Example test
For more info, see Guidelines for panning. |
Your app does not trigger an action if the user moves across a scrolling control grid populated with thumbnails. |
When using touch to swipe left and right (to browse through thumbnails presented on a grid), the content moves left or right without activating a thumbnail. Example test
For more info, see Guidelines for panning. |
Your app supports hover feedback (a mouse scenario). |
When the mouse cursor is placed over an item in a list or grid, the item shows a highlight. Example test
|
Your app items are not selected automatically. |
Go through all pages in your app and verify that each item, especially the first item on a page, is not selected by default when the page loads or when page contents are refreshed by clicking the Refresh button on the app bar. Example test
|
Performance and stability
Test case | Details |
---|---|
Your app successfully resumes from a suspended state. |
The app should resume from the suspended state successfully. Your app must not crash on resume, and user must be able to continue using your app. We recommend that your app resume at the same page it was on before the app was suspended, and with its UI in a similar state. For example, text entered by a user before app suspension is still present after the app resumes. Example test
Note
If your run the app from Microsoft Visual Studio, app suspend and app termination can be achieved via buttons on the app bar. The suspend the application command from Visual Studio can also be used with any Windows 8 app by attaching to the process from Visual Studio via the Debug->Attach to process menu command. For more info, see Guidelines for app suspend and resume. |
Your app demonstrates smooth and fluid page transitions. |
Verify that animations and transitions are smooth and fluid. This includes things like page animations or object animations. The overall quality of this experience is most important in highly visible areas like the app home page and any other page where a user is most likely spend a lot of time using the app. For more info, see Animating your UI with the Animation Library and Stand out with styling and animation in your Windows Store app. |
Your app provides clear and concise process feedback to the user. |
Your app must appear responsive at all times. If content is slow to load, the app should indicate to the user that the action is in progress by displaying progress notifications via UI elements. Example test
Note
Some pages may rely on online content that takes time to load. The best practice is to navigate quickly to the page, then display a progress control as the content loads. |
Your app does not crash. |
Record in detail any crashes you encounter during app testing and resolve them before you submit the app to the Windows Store. Example test
|
Your app manages memory consumption effectively. |
If memory usage continues to increase as your app is being used, and doesn't show indications of a decrease, there is a chance that there is a memory leak. Example test
|
Your app uses an appropriate amount of CPU resources while idle. |
When idle your app shouldn't consume an inappropriate amount of CPU resources. You can use Task Manager (preferably tm.exe to taskmgr.exe) to test CPU usage. Example test
Note
Ideally, when an app is idle, it consumes 0% of CPU resources. |
Your app uses appropriate methods of data caching. |
Your app should use app data caching appropriately to avoid delays in loading content or excessive use of a network connection. |
Games
Test case | Details |
---|---|
Your game app can save the current game state if the app is suspended. |
Game-state info should persist through app suspension. This includes info like the screen state, the score, level progress, and number of lives. Example test
For more info, see Application lifecycle. |
Your game makes global settings available through the Settings charm. |
Games often have interactive controls for global settings on the canvas and this is acceptable as long as the same commands are also in the Settings charm. Example test
For more info, see Guidelines for app settings. |
Your game app's audio effects and music don't play while the app is in the background. |
The game's sound effects and media aren't playing while the game is in the background. Example test
For more info, see Playing and previewing audio and video. |
Your game app allows music from an app in the background to play in place of the game music. |
You can play the game and listen to music from an app in the background. The GameEffects sounds are heard, but the GameMedia sounds are not. Example test
Note
Reinforce this behavior by adding the correct msAudioCategory tag to your audio element. For more info, see Playing and previewing audio and video. |
Contracts and extensions
Test case | Details |
---|---|
Your app uses the Share contract correctly. |
If your app is a Share source, the content that it shares should be both meaningful and relevant. If your app is a Share target, the content preview should be rich and accurate. Example test
For more info, see App contracts and extensions. |
Your app uses the Search contract correctly. |
If your app offers search, it should provide accurate search results that closely match results expected by the user for the initial query. If necessary, your app should provide additional methods of result filtering. If no results are returned, the Search panel should display a clear and concise message. Example test
For more info, see App contracts and extensions. |
Contracts and extensions |
Your app should provide contract functionality such as Search and Share only where appropriate. Example test
Note
Avoid declaring contracts and extensions that enable functionality that your app doesn't actually implement. For more info, see App contracts and extensions. |
Your app uses the Settings charm correctly. |
Your app should provide the capability to adjust settings specific to the app using the Settings charm.
Example test
Note
Handle the beforeshow and afterhide events to do control initialization and state serialization. For more info, see Guidelines for app settings. |
Your app provides users with control over the behavior of web-based file transfers created using the background transfer feature. |
Confirm that control of a background transfer operation and indication of its progress are being relayed to the user. Example test
|
Your app uses push notifications correctly to keep the user informed. |
Your app should use push notifications where appropriate. A push notification demonstrates itself to user via a toast notification or a tile change (in text, a number, or a picture) in the Windows 8 Start experience. Example test
For more info, see Push notifications. |
Your app provides a way to manage scheduled notifications. |
Example test
Note
This test applies only to apps that use Scheduled Notifications. (for example, alarms or reminders). For more info, see Scheduled Notifications. |
Language and localization
Test case | Details |
---|---|
Your app displays accurate info for all regional setting requirements. |
Regional info displayed by your app should align to the regional formatting selected by the current user. Example test
|
Your app provides error messages that are contextual, user friendly, and not generic. |
Error messages should very clearly define what the error was and what next steps are required. Make sure that your app does not display empty pages. In situations where content is not available to display on a page, provide appropriate error or help text to the user. Example test
Note
Error messages must not contain any code details or stack traces. |
Your app provides accurate platform and app descriptors where applicable. |
Any references to the platform should correctly reference Windows 8, and the app should reference itself accurately. Example test
|
Your app is fully localized to all languages it claims to support. |
Verify that all strings have changed (are localized) and no hard-coded strings are present in the app. Confirm that all strings are completely visible and are not truncated. Example test
|
Your app UI uses appropriate font types and sizes. |
To make your app readable and appear consistent with broader Windows 8 design principles, confirm the use of the following font types and sizes:
For more info, see Guidelines for fonts. |
Audio and video
Test case | Details |
---|---|
Your app continues music playback while in the background. |
If you develop a music app, it should enable users to listen to music while they work in other apps on the device. Example test
For more info, see Playing and previewing audio and video. |
Your app correctly adjusts music playback volume for the duration of a voice call. |
If your music app is capable of playback while in the background, it should decrease playback volume, or pause music playback, for the duration of a voice call started in another app. Example test
Note
Reinforce this behavior by adding the correct msAudioCategory tag to your audio element. For more info, see Playing and previewing audio and video. |
Your Voice over IP (VoIP)-enabled app maintains normal volume levels for the duration of a voice call. |
This test case example is specific to the playback volume of a voice call when an app in the background is playing music. While the app in the background needs to lower the music playback volume, your Voice over IP (VoIP)-enabled app keeps audio levels normal during voice calls. Example test
Note
Reinforce this behavior by adding the correct msAudioCategory tag to your audio element. For more info, see Playing and previewing audio and video. |
Your app enables the user to adjust audio playback volume using the volume control. |
Your app should provide audio controls that allow the user to affect playback progress and volume levels. However, if the app doesn't support this functionality, the buttons should be disabled. Example test
For more info, see Playing and previewing audio and video. |