WebExtensions/chrome.storage.sync/Testing
Revision History
This section describes the modifications that have been made to this wiki page. A new row has been completed each time the content of this document is updated (small corrections for typographical errors do not need to be recorded). The description of the modification contains the differences from the prior version, in terms of what sections were updated and to what extent.
Date | Version | Author | Description |
---|---|---|---|
11/21/2016 | 1.0 | Krupa Raj | Created first draft |
01/20/2017 | 1.1 | Vasilica Mihasca | Updates |
03/28/2017 | 1.2 | Vasilica Mihasca | Updated Builds and Test Execution Schedule sections |
Contents
Overview
Storage is a Javascript API that enables WebExtensions to store and retrieve data, and listen for changes to stored items. storage has three properties - storage.sync,storage.local and storage.managed. These properties represent the different types of available storage area.
storage.sync represents the sync storage area. Items in sync storage are synced by the browser, and are available across all instances of that browser that the user is logged into, across different devices.
This testplan is exclusively to test the property chrome.storage.sync
Purpose
Detail the purpose of this document. For example:
- The test scope, focus areas and objectives
- The test responsibilities
- The test strategy for the levels and types of test for this release
- The entry and exit criteria
- The basis of the test estimates
- Any risks, issues, assumptions and test dependencies
- The test schedule and major milestones
- The test deliverables
Scope
The goal is to identify areas of concerns and potential risk and to be able to give a recommendation when chrome.storage.sync will be pushed to a wider audience (release). The goal of the current wiki page is to list the strategy around testing this feature and to list known risks and assumptions. It defines the overall testing requirements and provides an integrated view of the test activities.
Ownership
Dev Manager
- Andrew McKay [1]
Developer(s)
QA
Testing summary
Scope of Testing
In Scope
- Accessing data stored via the extension across multiple devices
- Storing data using new and existing sync accounts
- Proper error messaging when service is down
Out of Scope
- Testing other storage related properties like storage.local and storage.managed
- Password masking and how other sensitive data is handled by the extensions while using storage.sync
Requirements for testing
Environments
- Desktop: Windows 7 x64, Windows 10 x64, Ubuntu 16.04 x86, Mac 10.11.5, Mac 10.12.1
- Android
Channel dependent settings (configs) and environment setups
Config settings to enable sync.storage is listed here
Test Strategy
Test Objectives
This section details the progression test objectives that will be covered. Please note that this is at a high level. For large projects, a suite of test cases would be created which would reference directly back to this master. This could be documented in bullet form or in a table similar to the one below.
Ref | Function | Test Objective | Test Type | Owners |
---|---|---|---|---|
TO-1 | New Firefox Account | To verify that there are no errors and the recently saved data is successfully synced | Manual | Add-ons QA Team |
TO-2 | Old Firefox Account | To verify that there are no errors and the recently saved data is successfully synced | Manual | Add-ons QA Team |
TO-3 | Resetting a Firefox Account password | To verify the data behavior after resetting the password according to FxA state | Manual | Add-ons QA Team |
TO-4 | Removing/Disabling a webextension | To verify that there are no errors after removing/disabling the webextension | Manual | Add-ons QA Team |
TO-5 | Upgrading Firefox | To verify that the browse is updated and the data is available | Manual | Add-ons QA Team |
TO-6 | Kinto/FxA server down | To verify that all the data saved during the server was down is successfully synced after resetting the connection | Manual | Add-ons QA Team |
TO-7 | Preferences | To verify the preference - on/off | Manual | Add-ons QA Team |
TO-8 | Localization | To verify that Fxa pages are served in the right locale | Manual | Add-ons QA Team |
Builds
This section should contain links for builds with the feature -
Bug Management
All new bugs related to chrome.storage will be tracked in Bugzilla and will block the tracker bug
All kinto service related issues will be maintained at https://github.com/Kinto/kinto
Test Execution Schedule
The following table identifies the anticipated testing period available for test execution.
Project phase | Start Date | End Date |
---|---|---|
Start project | ||
Study documentation/specs received from developers | ||
QA - Test plan creation | 11/21/2016 | |
QA - Test cases/Env preparation | 11/15/2016 | |
QA - Nightly Testing | ||
QA - Aurora Testing | 11/18/2016 | |
QA - Beta Testing | 03/28/2017 | |
Release Date |
Testing Tools
Detail the tools to be used for testing, for example see the following table:
Process | Tool |
---|---|
Test plan creation | Mozilla wiki |
Test case creation | TestRail/ Google docs |
Test case execution | TestRail/ Google docs |
Bugs management | Bugzilla |
Status
Overview
Track the dates and build number where feature was released to Nightly Track the dates and build number where feature was merged to Aurora Track the dates and build number where feature was merged to Release/Beta
Risk analysis
- Risk: Data is stored based on profiles and not Sync accounts. So, if the user uses two Sync accounts on the same profile, the stored data will get merged.
- Risk mitigation: This behavior is similar to how Sync works now and is being tracked at bug 1273570. Security team has been appraised of this limitation.
- Risk: We have no control as to how the webextension developer will implement storage of sensitive data
- Risk mitigation: All data stored is encrypted but testing the health of the extension itself is out-of-scope for us.
- Risk: Even if the user uninstalls the extension, the data store stored using storage.sync is not purged.
- Risk mitigation: This is part-feature/part-bug. This means that the user can reinstall the add-on and have all the data available. The risk is slightly mitigated by the fact that all data is encrypted.
- Risk: If the user resets their password on an existing Sync account on a new profile or device, they lose access to all the data stored by the extension.
- Risk mitigation:This is actually a security recommendation. See Bug 1276933 for more details.
References
- List and links for specs
https://public.etherpad-mozilla.org/p/chrome.storage.sync https://wiki.mozilla.org/index.php?title=WebExtensions/chrome.storage.sync
- bug 1220494 - [tracking] Implement chrome.storage.sync
ID | Priority | Component | Assigned to | Summary | Status | Target milestone |
---|---|---|---|---|---|---|
1253740 | P2 | General | Ethan Glasser-Camp (:glasserc) | [kinto] Implement storage.sync | RESOLVED | mozilla52 |
1253741 | P2 | Untriaged | Ethan Glasser-Camp (:glasserc) | [kinto] Hook up Firefox Accounts | RESOLVED | --- |
1253744 | P2 | Untriaged | [kinto] Put chrome.storage.sync behind a feature flag | RESOLVED | --- | |
1253746 | P3 | General | [kinto] Mock out server calls so that tests can run | RESOLVED | --- | |
1311507 | P2 | General | Jason Thomas [:jason] | ensure chrome.storage.sync production stack is in place and functional on server | RESOLVED | --- |
1311510 | P3 | Storage | chrome.storage.sync: performance test of production stack for chrome.storage.sync | NEW | --- | |
1317447 | -- | General | Kris Maglione [:kmag] | parentMessageManager is null error | VERIFIED | mozilla53 |
1331467 | -- | General | Ethan Glasser-Camp (:glasserc) | Turn on chrome.storage.sync by default | RESOLVED | mozilla53 |
8 Total; 1 Open (12.5%); 6 Resolved (75%); 1 Verified (12.5%);
- bug 1253740 - [kinto] Implement storage.sync
ID | Priority | Component | Assigned to | Summary | Status | Target milestone |
---|---|---|---|---|---|---|
1282109 | P2 | Untriaged | Ethan Glasser-Camp (:glasserc) | update version of kinto.js client to 3.1.2 (and kinto-http.js to 2.0.0) | RESOLVED | mozilla50 |
1290440 | -- | Untriaged | Ethan Glasser-Camp (:glasserc) | UX for chrome.storage.sync | RESOLVED | --- |
1298106 | P3 | Untriaged | Ethan Glasser-Camp (:glasserc) | update version of kinto.js client to 4.0.2 | RESOLVED | mozilla51 |
1319742 | P1 | Untriaged | Ethan Glasser-Camp (:glasserc) | Webextensions without id cause the sync icon to spin forever | VERIFIED | mozilla53 |
1320324 | P3 | Untriaged | Ethan Glasser-Camp (:glasserc) | Sync error while resetting the add-on to its default values | VERIFIED | mozilla53 |
5 Total; 0 Open (0%); 3 Resolved (60%); 2 Verified (40%);
Testcases
Overview
*Summary of testing scenarios: - Sign in using new fxa account - Create some browsing data using a new fxa account - Sign in using an existing account - Reset the password while being logged into a Firefox account. - Resset the passwor while being loged out from Firefox account. - Add data before sync happens - Add data before logging into a new account - Add data before logging into an existing account - Sync data wich contains special characters - Resetting the add-on to its default values - Localized FxA loggin page - No errors occur after removing the add-on - Force a sync after removing the add-on - Force a sync after disabling the add-on - Updating the Firefox - FxA server is down - Kinto server is down
Test Areas
Test Areas | Covered | Details |
---|---|---|
Private Window | Yes | chrome.storage.sync should work in Private window as well |
Multi-Process Enabled | Yes | By default |
Multi-process Disabled | Yes | chrome.storage.sync should be verified on non-e10s |
Theme (high contrast) | No | Not in scope |
UI | ||
Mouse-only operation | No | Not in scope |
Keyboard-only operation | No | Not in scope |
Display (HiDPI) | No | Not in scope |
Interraction (scroll, zoom) | No | Not in scope |
Usable with a screen reader | No | Not in scope |
Usability and/or discoverability testing | Is this feature user friendly | |
RTL build testing | No | Not in scope |
Help/Support | ||
Help/support interface required | Make sure link to support/help page exist and is easy reachable. | |
Support documents planned(written) | Make sure support documents are written and are correct. | |
Install/Upgrade | ||
Feature upgrades/downgrades data as expected | Yes | the browser should be upgraded without errors |
Does sync work across upgrades | Yes | recently saved data should be available |
Requires install testing | separate feature/application installation needed (not only Firefox) | |
Affects first-run or onboarding | No | Not applicable. |
Does this affect partner builds? Partner build testing | yes/no options, add comment with details about who will lead testing | |
Enterprise | Raise up the topic to developers to see if they are expecting to work different on ESR builds | |
Enterprise administration | ||
Network proxies/autoconfig | ||
ESR behavior changes | ||
Locked preferences | ||
Data Monitoring | ||
Temporary or permanent telemetry monitoring | List of error conditions to monitor | |
Telemetry correctness testing | ||
Server integration testing | ||
Offline and server failure testing | ||
Load testing | ||
Add-ons | If add-ons are available for testing feature, or is current feature will affect some add-ons, then API testing should be done for the add-on. | |
Addon API required? | Yes | chrome.storage.sync should work as expected |
Comprehensive API testing | ||
Permissions | ||
Testing with existing/popular addons | Yes | all popular add-ons which use chrome.storage.sync should work as expected |
Security | Security is in charge of Matt Wobensmith. We should contact his team to see if security testing is necessary for current feature. | |
3rd-party security review | ||
Privilege escalation testing | ||
Fuzzing | ||
Web Compatibility | depends on the feature | |
Testing against target sites | ||
Survey of many sites for compatibility | ||
Interoperability | depends on the feature | |
Common protocol/data format with other software: specification available. Interop testing with other common clients or servers. | ||
Coordinated testing/interop across the Firefoxes: Desktop, Android, iOS | ||
Interaction of this feature with other browser features |
Test suite
- Initial test planning at https://public.etherpad-mozilla.org/p/chrome.storage.sync
- Link for the tests run Full Test suite
Bug Work
Tracking bug – bug 1253740
Bug fix verification
[Verified] Bug 1315863 - Flickering sync icon in menu
- ↳ 2016-11-24: verified fixed on 53.0a1, 52.0a2 across platforms
[Verified] Bug 1319742 - Webextensions without id cause the sync icon to spin forever
- ↳ 2016-12-27: verified fixed on 53.0a1, 52.0a2 across platforms
[Verified] Bug 1323228 - Dchrome.storage.sync should throw an exception if using a temporary addon ID
- ↳ 2016-12-29: verified fixed on 53.0a1 across platforms
Logged bugs
Bug 1320324 - Sync error while resetting the add-on to its default values
Bug 1322214 - Firefox account is not automatically logged in after resetting the password in private window
Bug 1319742 - Webextensions without id cause the sync icon to spin forever
Bug 1329172 - FxA pages are not served in the right language for several locales
Sign off
Criteria
Check list
- All test cases should be executed
- Has sufficient automated test coverage (as measured by code coverage tools) - coordinate with RelMan
- All blockers, criticals must be fixed and verified or have an agreed-upon timeline for being fixed (as determined by engineering/RelMan/QA)
Results
- Initial test planning at https://public.etherpad-mozilla.org/p/chrome.storage.sync
- Link for the tests run [Full Test suite https://docs.google.com/spreadsheets/d/1J77BlmwWZB-hmh2-DxzXbAERZPGQcGe7QVT3sfu6a-4/edit#gid=858345460 FTE]
Checklist
Exit Criteria | Status | Notes/Details |
---|---|---|
Testing Prerequisites (specs, use cases) | ||
Testing Infrastructure setup | ||
Test Plan Creation | ||
Test Cases Creation | ||
Full Functional Tests Execution | ||
Automation Coverage | ||
Performance Testing | ||
All Defects Logged | ||
Critical/Blockers Fixed and Verified | ||
Metrics/Telemetry | ||
QA Signoff - Nightly Release | Email to be sent | |
QA Aurora - Full Testing | ||
QA Signoff - Aurora Release | Email to be sent | |
QA Beta - Full Testing | ||
QA Signoff - Beta Release | Email to be sent |