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
- Developers
- QA
- Anthony Hughes (:ashughes) (Lead)
- Management
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
- What are the coverage requirements (platforms, devices, etc)?
- David Anderson
- Machines that have (1) Windows 7 with the Platform Update, or Windows 8 and higher, and (2) Direct3D 11 compositing before the GPU process, should now be using a Direct3D 11 in the compositor GPU process.
- We don't really care about machines on Windows 7 w/o PU or lower, or machines that don't get D3D11. They should not be using the GPU process. [ashughes: we should probably test for this]
- What are the release criteria for each milestone and how will this criteria be measured?
- David Anderson
- I might be missing some things here, but we should have evidence that UI crashes on covered systems have moved to the GPU process. Of course, we should also know that we have not regressed acceleration coverage, performance/startup time or rendering quality.
- At this point there's only one real milestone and it's "ride the trains for 53".
- What are the use cases that need to be covered?
- What can/should be covered by automation vs manual testing and what test infrastructure will be used?
- David Anderson
- Automated testing has done a good job making sure haven't had any obvious regressions. A big open problem is that we don't have any testing for when the GPU process crashes. We have no testing that we recover properly. Currently I'm doing this by hand. I have a patch that I send to try about twice a day that simulates random GPU crashes. I then sort through all the columns and see what failures come up.
- Having some way to automate this would be amazing. Having at least some deterministic tests on infrastructure would be great too. I hope to work on the latter soon now that current manual testing is looking good.
- Another area we lack in testing is device resets. I don't know how to approach this yet, but it's hard to do on try.
- There is one testing hole that will be patched up soon: after a device reset we can wind up with a software compositor in the GPU process. I requested a new reftest column to test this condition on TreeHerder (it'll run on Windows 7 machines by forcing the GPU process on).
- What are the specific things we want to test with Telemetry Experiments vs System Addons?
- What are the areas of risk? As an example, are there things that Apple/Google/Microsoft, AMD/Intel/NVIDIA, or other third-party vendors could do that would impact the release criteria and/or schedule?
- David Anderson
- We've gotten an upset user complaining about Skia fonts in the UI now. I don't know how to evaluate that risk. I guess the biggest risk is we mess up and a lot of users stop getting D3D11, but we haven't seen that yet.
- One thing I'm not too concerned about, to an extent, is whether moving to the GPU process *causes* more acceleration crashes. Unless it's a horrific amount of extra crashes, that's a fine result.
Test Coverage
Environments
- Platforms: Windows, Mac, Linux, Android, iOS versions
- Devices: AMD/Intel/NVIDIA/etc; Single/Multi/Hybrid/etc; Internal/External; Current/Beta/Legacy drivers
- Other: 3rd-party software (Antivirus, Security, WindowsBlinds, etc), Preference changes
- Channel Specific: Nightly, Aurora, Beta, Release
Risks
- High-risk Assumptions
- High-risk Bugs
- Other Areas of Risk
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
| Test Areas | Covered | Details |
|---|---|---|
| Private Window | ||
| Multi-Process Enabled | ||
| Multi-process Disabled | ||
| Theme (high contrast) | ||
| UI | ||
| Mouse-only operation | ||
| Keyboard-only operation | ||
| Display (HiDPI) | ||
| Interraction (scroll, zoom) | ||
| Usable with a screen reader | e.g. with NVDA | |
| Usability and/or discoverability testing | Is this feature user friendly | |
| 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. | |
| 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? | ||
| Comprehensive API testing | ||
| Permissions | ||
| Testing with existing/popular addons | ||
| 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 | ||
| Interaction of this feature with third-party software (Antivirus, Security, Games, Theming, etc) |
Test Suites
Full Test suite - Link with the gdoc, follow the format from link Smoke Test suite - Link with the gdoc, follow the format from link Regression Test suite - Link with the gdoc - if available/needed.
Links for the tests run
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 | In Development | 2016-11-28 | 2016-12-12 |
| A/B test media.gpu-process-decoder in Nightly 53 | Anthony Hughes (:ashughes) |
Nightly 53 A/B Test
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:
Bugs
65 Total; 8 Open (12.31%); 55 Resolved (84.62%); 2 Verified (3.08%);
Sign off
Nightly
| 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/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 - Beta Migration | Email to be sent | |
| QA Signoff - Verify Beta Release Notes | Email to be sent |
Beta
| 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 - Beta 1..n | Email to be sent | |
| QA Signoff - Release Migration | Email to be sent |
Release
| 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 Release | Email to be sent | |
| QA Signoff - Verify Release Notes | Email to be sent |
References
- List and links for available specs - documents, user stories, specifications
- Meta bug: bug 1264543
- https://public.etherpad-mozilla.org/p/GPU_Process_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 |
|---|---|---|---|
| 2016-11-02 | 1.0 | Anthony Hughes | Created first draft |