QA/Platform/Graphics/Features/GPU Process
Overview
Purpose
The purpose of this document is to describe the GPU Process feature from a testing perspective, including the following details:
- Scope, focus areas and objectives of testing
- Owners and points of contact for areas of responsibility
- Strategy and types of testing
- 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
Ownership
| Responsibility | Role | Person |
|---|---|---|
| Accountable | Engineering Manager | Milan Sreckovic (:milan) |
| Responsible | Tech Lead | David Anderson (:dvander) |
| Responsible | QA Lead | Anthony Hughes (:ashughes) |
| Supporting | Engineer | George Wright (:gw280) |
| Supporting | Engineer | Ryan Hunt (:rhunt) |
Scope
The following is in scope from a testing perspective for the project team.
- GPU process startup time
- Page load time
- GPU process restart time (in case of process kill)
- Real world performance with various common usecases (webgl, canvas2d, flash).
- Plugin startup time
- Antivirus conflicts
- Memory footprint
- Shutdown time
- Overall product stability
- Scrolling performance and correctness
The following is not in scope from a testing perspective for the project team.
- to be determined
Schedule
| Project phase | Date Started | Date Completed |
|---|---|---|
| Planning | ||
|
||
|
||
| Development | ||
|
||
|
||
|
||
| QA | ||
|
||
|
||
|
||
|
||
| Release |
Outstanding Questions
Test Coverage
Environments
| Coverage | In Scope for MVP | Out of Scope for MVP |
|---|---|---|
| Platforms | Windows 7 Platform Update and later | Windows 7 without Platform Update and earlier, Mac OS, Linux, Android, iOS |
| Devices | AMD, Intel, and NVIDIA hardware with Direct3D 11 and later support | AMD, Intel, and NVIDIA hardware with Direct3D 10 and earlier support |
| Configurations | TBD - Single/Multi/Hybrid/etc, Internal/External, Current/Beta/Legacy drivers | TBD - Single/Multi/Hybrid/etc, Internal/External, Current/Beta/Legacy drivers |
| Other | TBD - 3rd-party software (Antivirus, Security, WindowsBlinds, etc), Preference changes | TBD - 3rd-party software (Antivirus, Security, WindowsBlinds, etc), Preference changes |
| Channel Specific | TBD - Unique coverage requirements for Nightly, Aurora, Beta, Release | TBD - Unique coverage requirements for Nightly, Aurora, Beta, Release |
Risks
Be sure we have test coverage to ensure:
- GPU Process does not to regress acceleration coverage, performance, startup time, rendering quality, and correctness for platforms without GPU Process and platforms with GPU Process where GPU Process is disabled.
- GPU Process recovers more gracefully from a crash than legacy
- GPU Process handles device resets more gracefully than legacy
- GPU Process returns with hardware (not software) compositor following device reset
- GPU Process does not regress font rendering in chrome and content (eg. Skia fonts)
- GPU Process does not fail in some way that results in a lot of users not getting Direct3D11 acceleration
- GPU Process does not break existing "new" technologies (eg. WebVR, WebGL2)
- GPU Process does not break legacy behaviours (eg. PDF viewing, Printing, Video playback, WebGL1, UI controls, about pages, etc)
- Legacy behavior/quality/performance (GPU Process disabled) remains on-par with the Release prior to GPU Process shipping
Acceptable Risks:
- GPU Process causes a moderate spike in acceleration crashes [specific number for acceptable spike to be determined]
Builds
This section should contain links for builds with the feature
- Links for Nightly builds
- Links for Aurora builds
- Links for Beta builds
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 |
| Automated test execution | Talos, etc...? |
| Bugs management | Bugzilla |
| Experimentation | Telemetry Experiments |
Use Cases
| Use Cases | Smoketest Coverage | BFT Coverage | FFT Coverage | Notes |
|---|---|---|---|---|
| The following need to be verified with GPU Process enabled, GPU Process disabled, and across a process reset | ||||
| Printing | Verify previewing and printing various content types is not regressed by GPU Process | |||
| Private Window | Verify browser usage inside a Private Browsing window | |||
| Multi-Process Enabled | Verify GPU process is created when multi-process is enabled | |||
| Multi-process Disabled | Verify no GPU process is created when multi-process is disabled | |||
| Single-process Window | Verify no GPU process when using a non-e10s window | |||
| Offline Content | Verify accelerated content continues to render when in Offline mode | |||
| Video | Verify HTML5 and Flash video playback acceleration | |||
| Tab/Window Management | Verify arranging and management of tabs/windows | |||
| Theme Management | Verify management of various Firefox and system-level themes | |||
| WebVR | Verify WebVR demos continue to work at parity with the current Release | |||
| WebGL | Verify WebGL demos continue to work at parity with the current Release | |||
| Dev Tools | Verify Developer Tools continue to work at parity with the current Release | |||
| Custom fonts | Verify content rendering, printing, scrolling, etc with common font customizations | |||
| 2D Canvas | Verify content rendering and performance with 2D Canvas and SVG demos | |||
| Accessibility | ||||
| Mouse-only operation | ||||
| Keyboard-only operation | ||||
| Display (HiDPI) | ||||
| Interraction (scroll, zoom) | ||||
| Usable with a screen reader | ||||
| Usability and/or discoverability testing | ||||
| RTL build testing | ||||
| 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 | ||||
| Does sync work across upgrades | ||||
| Requires install testing | Separate feature/application installation needed (not only Firefox) | |||
| Affects first-run or onboarding | Florin/Lawrence are investigating if there is a dedicated QA for this, or we should test? Should be an yes/no and if is yes should add in detail column the team/person assigned. | |||
| Partner build testing | Does this affect partner builds? 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? | ||||
| Comprehensive API testing | ||||
| Permissions | ||||
| Testing with existing/popular addons | ||||
| Security
Contact Matt Wobensmith to see if security testing is necessary for current feature | ||||
| 3rd-party security review | ||||
| Privilege escalation testing | ||||
| Fuzzing | ||||
| Web Compatibility | ||||
| Testing against target sites | ||||
| Survey of many sites for compatibility | ||||
| Interoperability | ||||
| 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 | ||||
| Interaction of this feature with third-party software (Antivirus, Security, Games, Theming, etc) | ||||
Experiments
| Experiment | Contact | Tracking Bug | Status | Start Date | End Date |
|---|---|---|---|---|---|
| A/B test layers.gpu-process.dev.enabled in Nightly 53 | Anthony Hughes (:ashughes) | bug 1319206 | Done [1] | ||
| A/B test media.gpu-process-decoder in Nightly 53 | Anthony Hughes (:ashughes) |
Nightly 53 A/B Test layers.gpu-process.dev.enabled
Purpose:
- Compare crash rates for users with GPU process enabled vs users with GPU process disabled
Dependencies:
- How do we deal with the fact that the pref is set early during startup? (emailed felipeg)
- Telemetry probes to measure crash rates
- Telemetry probe to measure proportion of users in each cohort
Measurements:
- Evolution for GPU_PROCESS_LAUNCH_TIME
- Histogram for GPU_PROCESS_LAUNCH_TIME
- Crash Stats
- MOZ30726-MINI#psd-gpu-process-nightly53 (see :ashughes to request access)
- SQL Telemetry
Bugs
65 Total; 8 Open (12.31%); 55 Resolved (84.62%); 2 Verified (3.08%);
Sign off
Nightly
- Metrics:
- Overall crash volume for graphics related issues is unchanged
- Testing:
- [MISSED] Testrail regression tests passed by Softvision [2]
- Automation:
- Areas of Risk
- Automation: No unit or functional test coverage
| Category | Criteria | Status |
|---|---|---|
| Metrics | GPU_PROCESS_LAUNCH_TIME_MS_2 is ... | pending review
5th Percentile: 0.192s
25th Percentile: 0.296s
Median: 0.462s
75th Percentile: 0.914s
95th Percentile: 3.440s
|
| GPU_PROCESS_LAUNCH_TIME_MS_2 Histogram is ... | Pending developer review | |
| MG: Main/Content/Plugin/GPU crashes [3] | ||
| GPU Process crash rate | ||
| SIMPLE_MEASURES_FIRSTPAINT does not regress | ||
| Experiments | A/B stability does not regress | -4% crashes overall, +5% plugin crashes (needs investigation) [4] |
| Testrail | Regression test suite passed on all platforms | Pending review |
| Automation | TBD | |
| Bugzilla | 0 blocking regressions | tracked for 53 |
| Socorro | 0 blocking signatures | |
| Migration | Okay to merge to Aurora | |
| Aurora migration verified | ||
| Aurora release notes verified | ||
| Risks | Description | Mitigation |
| Automation | No unit/function test coverage beyond a process startup test | Manual testing of functionality and process termination/recovery |
| 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 - Okay to Merge | Email to be sent | |
| QA Signoff - Aurora Migration | Email to be sent | |
| QA Signoff - Verify Aurora Release Notes | Email to be sent |
Aurora
| Criteria | Status | Notes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Testing | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Manual Test Coverage | [DONE] |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Automated Test Coverage | [DONE] | Coverage limited to process instantiation. Risks to be mitigated via manual testing. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Performance Test Coverage | [SKIPPED] |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Bug Reports | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| No unresolved blocker bugs No untriaged bugs blocking Fx53 |
[DONE] | Bugs pending Firefox 53 status review: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| No unverified fixed bugs | [DONE] | Bugs pending Firefox 53 status review:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OKRs & Metrics | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GPU_PROCESS_LAUNCH_TIME_MS_2 distribution <= 3s | [DONE] | Note: A value larger than 3s likely represents users failing to get GPU Process
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GPU_PROCESS_LAUNCH_TIME_MS_2 evolution doesn't regress | [DONE] | Note: A value larger than 3s likely represents users failing to get GPU Process
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Telemetry graphics crash count/rate largely unchanged | [DONE] |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| No unresolved topcrashes correlated to GPU Process | [DONE] |
GPU crashes rank 5th overall @ 0.82% with a combined 1071 reports | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Telemetry Experiment reveals no regressions in A/B testing | [SKIPPED] |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Percentage of users w/GPU Process and hardware profiles | [SKIPPED] |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Insignificant change in hardware acceleration distribution | [DONE] |
GPU Process Status: Date Available Unavailable Failed Blocked 2017-02-23 71.2% 28.4% 0.3% 0.1% 2017-03-06 71.1% 28.5% 0.3% 0.1% D3D11 Status: Date Available Unavailable Failed Blocked Blacklisted 2017-02-23 67.4% 12.2% 4.3% 1.5% 14.6% 2017-03-06 67.5% 12.3% 4.3% 1.4% 14.5% Media Decoder Status: Date DXVA D3D9 DXVA D3D11 WMF Software 2017-02-23 25.3% 15.0% 59.7% 2017-03-06 25.2% 14.3% 60.5% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SIMPLE_MEASURES_FIRSTPAINT does not regress more than 5% | [DONE] |
Median Improvement Aurora 53 2.760s n/a Aurora 52 3.040s - 9.21% Aurora 51 2.880s - 4.17% Aurora 50 3.100s -10.97% Note: even if it does regress it'll be hard to prove that it's GPU Process related and not some other change(s) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| QA Signoffs | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Okay to Merge to Beta | [DONE] | Signed off by Softvision on March 3, 2017 (report) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beta migration signed-off | [DONE] | Signed off by Softvision on March 8, 2017 (report) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beta release notes signed-off | [DONE] | Signed off by Softvision on March 8, 2017 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beta
| Criteria | Status | Notes |
|---|---|---|
| Testing | ||
| Manual Test Coverage | [DONE] |
|
| Automated Test Coverage | [DONE] | Coverage limited to process instantiation. Risks to be mitigated via manual testing. |
| Performance Test Coverage | [DONE] |
|
| Bug Reports | ||
| No unresolved blocker bugs No untriaged bugs blocking Fx53 |
[DONE] | Bugs pending Firefox 53 status review: |
| No unverified fixed bugs | [DONE] | Bugs pending Firefox 53 status review:
|
| Metrics | ||
| GPU_PROCESS_LAUNCH_TIME_MS_2 distribution <= 3s | [DONE] | Note: A value larger than 3s likely represents users failing to get GPU Process
|
| GPU_PROCESS_LAUNCH_TIME_MS_2 evolution doesn't regress | [DONE] | Note: A value larger than 3s likely represents users failing to get GPU Process
|
| Telemetry graphics crash count/rate largely unchanged | [DONE] |
|
| No unresolved topcrashes correlated to GPU Process | [DONE] |
GPU crashes rank 13th overall @ 0.34% with a combined 2,295 reports |
| Telemetry Experiment reveals no regressions in A/B testing | [DONE] | DONE - https://ashughes.com/?p=426
|
| Insignificant change in hardware acceleration distribution | [DONE] |
GPU Process Status:
D3D11 Status:
Media Decoder Status:
|
| SIMPLE_MEASURES_FIRSTPAINT does not regress more than 5% | [DONE] |
Note: even if it does regress it'll be hard to prove that it's GPU Process related and not some other change(s) |
| QA Signoffs | ||
| Okay to Merge to Release | [DONE] | DONE |
| Release migration signed-off | [DONE] | DONE |
| Release notes signed-off | [DONE] | DONE |
Release
- Verify release notes
- Verify feature enabled in Release
- Verify updating gives GPU Process
- Check for bugs during throttle period