WebExtensions/chrome.storage.sync/Testing

From MozillaWiki
Jump to: navigation, search

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

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)
  • Ethan Glasser-Camp [2]
  • Bob Silverberg [3]
QA
  • Krupa Raj [4]
  • Vasilica Mihasca [5]
  • Victor Carciu [6]

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
Full Query
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%);


Full Query
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

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

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