Web Apps integration/TestPlan: Difference between revisions

 
(30 intermediate revisions by the same user not shown)
Line 26: Line 26:
Users can then go to this store to install this application to their native machine. Note that installable applications can be paid or free. For paid applications, users will have to pay for the application through Paypal. Upon making the application payment, a user's machine receives a receipt to prove that the application is paid for. Then a user can install this paid application to their machine on Win XP+ or Mac OS X. See the [https://github.com/michaelrhanson/mozilla-central/blob/master/webapprt/README.md native installation flow] to understand how native applications are installed a user's machine on Windows XP+ and Mac OS X. After a user selects to install an application, a confirmation should appear asking the user to confirm installation of the application to a particular file location on the user's machine. Then, upon confirmation, the application should be installed to the user's machine. At this point, the user should understand where the application was installed on their machine.
Users can then go to this store to install this application to their native machine. Note that installable applications can be paid or free. For paid applications, users will have to pay for the application through Paypal. Upon making the application payment, a user's machine receives a receipt to prove that the application is paid for. Then a user can install this paid application to their machine on Win XP+ or Mac OS X. See the [https://github.com/michaelrhanson/mozilla-central/blob/master/webapprt/README.md native installation flow] to understand how native applications are installed a user's machine on Windows XP+ and Mac OS X. After a user selects to install an application, a confirmation should appear asking the user to confirm installation of the application to a particular file location on the user's machine. Then, upon confirmation, the application should be installed to the user's machine. At this point, the user should understand where the application was installed on their machine.


After applications are installed, users can run these applications in their native environment in a chromeless shell both online and offline. If the application is paid, validation will need to take place using the receipt for the application to ensure that the user paid for the application. On windows, applications are typically ran as shortcuts from the desktop, but may also be ran from the start menu in executables. On Mac OS X, applications are ran through the ~/Applications directory typically. When an application is launched, a chromeless window starts using Firefox's webapp mode under the hood with the web application running in the shell. In the task manager in Windows, you would see that the application is process running on the system under the name of the web application. Within the shell, users can take actions within the application, such as logging in, clicking links within the origin of the application, playing a game, and more. Within the shell itself, users have a menu to allow basic application actions such as quitting, cut/copy, and more. When a user is done using the application, they can quit using the application.
After applications are installed, users can run these applications in their native environment in a chromeless shell both online and offline. If the application is paid, validation will need to take place using the receipt for the application to ensure that the user paid for the application. On windows, applications are typically ran as shortcuts from the desktop, but may also be ran from the start menu in executables. On Mac OS X, applications are ran through the /Applications directory typically. When an application is launched, a chromeless window starts using Firefox's webapp mode under the hood with the web application running in the shell. In the task manager in Windows, you would see that the application is process running on the system under the name of the web application. Within the shell, users can take actions within the application, such as logging in, clicking links within the origin of the application, playing a game, and more. Within the shell itself, users have a menu to allow basic application actions such as quitting, cut/copy, and more. When a user is done using the application, they can quit using the application.


If the user no longer wants the application installed on their machine, they can uninstall the application from their machine. For windows, uninstalling can take place either directly in the directory location of the application or through add and remove programs. On Mac OS X, uninstalling occurs by moving the application to trash and deleting the application from the trash bin. Upon uninstalling an application, all locally stored app data that previously created during installation should be cleared.
If the user no longer wants the application installed on their machine, they can uninstall the application from their machine. For windows, uninstalling can take place either directly in the directory location of the application or through add and remove programs. On Mac OS X, uninstalling occurs by moving the application to trash and deleting the application from the trash bin. Upon uninstalling an application, all locally stored app data that previously created during installation should be cleared.
Line 44: Line 44:
== Software Qualities ==
== Software Qualities ==


The following software qualities that need to be analyzed are (ordered by priority):
* Security
 
* Resilience
# Security
* Localization
# Availability & Resilience
* Performance
# Internationalization
# Location
# Performance & Scalability


== Edge Cases ==
== Edge Cases ==
The following special edge cases need to be taken into account when testing the major parts of this feature:


* Browser crashes
* Browser crashes
Line 67: Line 62:
The following testing approaches shall be used to assess the scope of testing stated above:
The following testing approaches shall be used to assess the scope of testing stated above:


'''Development of Manual Test Cases:''' Manual test cases shall be created to test the major portions of features in the testing scope. Each test case shall specify release quality requirement specifying which test cases need to pass within Firefox Aurora, Beta, or Release respectively. Test cases that are applicable to changes made in mozilla central shall be re-tested on each minor release in the Firefox release cycle (e.g. Beta 1, Beta 2). Note that running these test cases should be optimally be done on vanilla installations of the supported operating systems. Upon finishing manual testing, bugs shall be logged for functional issues.
'''Development of Manual Test Cases:''' Manual test cases shall be created to test the major portions of features in the testing scope. Each test case shall specify a quality requirement (smoke or feature signoff). Applicable sets of these test cases (smoke and feature signoff) should be ran each beta release that are value-added to run to capture bugs.


'''Exploratory Testing of Tier 1 Apps:''' Exploratory testing of using tier 1 native applications shall be conducted to ensure that our highest priority applications are supported on our platform. When exploratory testing these applications, a checklist shall be used to test major features we would expect from these applications such as account management, migrating off the origin of the application, and more. Upon finishing exploratory testing of these applications, bugs shall be logged for functional issues and new manual and scenario tier 1 app test cases shall be developed. Also, if the bug logged affects the functionality of a top app, a whiteboard marker of '[topapps]' should be specified. Additionally, if problems with the app itself are found, then evangelism bugs shall be filed for those issues.
'''Exploratory Testing of Marketplace Top Apps:''' Exploratory testing of using top native applications shall be conducted to ensure that our highest priority applications are supported on our platform. When exploratory testing these applications, a checklist below will help guide the direction of exploratory testing:


'''Development of Value-Added Automation:''' Automation shall be developed for manual test cases that carry the highest value add in comparison to the overhead to the build the automation. To determine the value added versus the overhead, an approach for automation shall be documented next to each manual test case to determine if the payoff to build the automation exceeds the overhead cost. Technologies that shall be used will likely be either Mochitest or Mozmill, but this could change based on what manual test cases exist for this feature.
* Does the application avoid using engine specific content?
* Does the application show out of origin content?
* Does clicking out of origin links that are not authentication go to the browser?
* Does application pop-ups and platform integration work as expected?
* Does flash and experimental features work as expected?


'''Tier 1 App Scenario Tests:''' Scenario tests shall be used on this desktop feature to simulate real-use of the application. Examples being considered for scenario tests follow the model shown at the bottom of the [https://docs.google.com/document/d/1tQnFGl7cKNtG3JgAR7MkOm8X4anwPT6lk_SPlRknCtY/edit MWC Pod Demo Script]. Similar to the manual test cases, each test case shall specify a release quality requirement (e.g. Aurora, Beta, Release). Scenario test cases that are applicable to changes made in mozilla central shall be re-tested on each minor release in the Firefox release cycle (e.g. Beta 1, Beta 2). Upon finishing scenario testing, bugs shall be logged for functional issues with the whiteboard marker of '[topapps].'
For problems discovered that involves a top app, a whiteboard marker of '[topapps]' shall be specified. Any problems with the app itself shall have evangelism bugs logged if the app is a top app.


TODO: Add test strategies to address software quality requirements.
'''Development of Value-Added Automation:''' Automation shall be developed for smoke test cases that carry the highest value add in comparison to the overhead to the build the automation. See the automation section for more details.


= Sign Off Criteria =
= Sign Off Criteria =
Line 81: Line 80:
== Aurora ==
== Aurora ==


* No bugs found with flagged as aurora blockers from aurora test cases
* All Desktop WebRT blockers are fixed
* Aurora-level functional test cases pass
* Smoke tests should pass on Win XP, Vista, 7 (32/64 bit), OS X 10.5 - 10.7 with no major issues
* Aurora-level tier 1 app scenario test cases pass
* No significant regressions in Desktop Firefox (e.g. crashes due to this implementation)
* No unresolved bugs with aurora blockers that cause aurora-level test failures
* TODO: Add software quality requirements


== Beta ==
== Beta ==


* Tier 1 app scenario aurora and beta test cases all pass
* Flagged polish issues are fixed
* Aurora and beta level functional test cases pass
* Smoke and important feature signoff tests should pass on Win XP, Vista, 7 (32/64 bit), OS X 10.5 - 10.7 with no major issues
** Windows XP+ and Mac OS X 10.5+ OS-specific aurora and beta test cases pass
* No significant regressions in Firefox due to this implementation
* No unresolved bugs with a severity level of major or higher that cause aurora or beta test cases to fail
* No regressions in Firefox linked to the feature's code changes detected with a severity of major or higher
* TODO: Add software quality requirements


== Release ==
== Release ==


* No bugs found with a severity level of major or higher in test cases
* Same as Beta
* All major functional test cases pass
** Windows XP+ and Mac OS X 10.5+ OS-specific test cases pass
* Tier 1 app scenario test cases pass
* No unresolved bugs with a severity level of major or higher that cause test cases to fail
* TODO: Add software quality requirements


= Infrastructure Requirements =
= Infrastructure Requirements =
Line 109: Line 98:
mozqa.com's [http://mozqa.com/data/firefox/ firefox] test cases section shall need to be turned into a web app to allow for testing the underlying platform when using apps with desktop. If new test cases for platform are necessary, then they will need to be uploaded as test cases to the mozqa.com test server.
mozqa.com's [http://mozqa.com/data/firefox/ firefox] test cases section shall need to be turned into a web app to allow for testing the underlying platform when using apps with desktop. If new test cases for platform are necessary, then they will need to be uploaded as test cases to the mozqa.com test server.


A test cases app directory will be need to be setup and hosted on a mozilla-based server. Each app in this app directory represents a test case application that is used during the testing of using a particular application. Currently, a [https://wiki.mozilla.org/Apps/QA/Dashboard#Apps_Test_Server apps test server] can be hosted locally for app test cases. This same test server will need to be deployed to some mozilla-based server.
For testing the manifests with the apps lifecycle, testmanifest.com shall be used to do this. Manifests shall be attached to test cases. Then, the tester shall have to copy and paste the manifest into an applicable testmanifest.com URL, save it, and install the application. From there, other test cases can be done as needed for the apps lifecycle (e.g. uninstall application).
 
= Test Cases and Results  =


== Test Cases ==
= Test Case Management  =


* Manual test cases and automation approach can be found in the Spreadsheet: [https://docs.google.com/spreadsheet/ccc?key=0AiZoGR-iOAlUdDdfMHo5aTI2WjVIeWxnNWxvV0ZVOWc#gid=0 Google Spreadsheet]
Test cases for this feature shall be tracked in [https://moztrap.mozilla.org MozTrap]. In MozTrap, they will be flagged as a Desktop Firefox 15 feature in the product version tag. Additionally, smoke tests will be flagged with the "smoke" tag. Feature signoff test cases will be flagged with the "feature signoff" tag. Each of these test cases are broken up into categories such as functional, security, resilience, localization, and performance and are tagged as such.
* Exploratory test cases of tier 1 apps can be found in the Spreadsheet: <insert link here>
* Tier 1 app scenario tests can be found in the Spreadsheet: <insert link here>


== Test Results ==
'''Note:''' Ideas for test cases are documented [https://docs.google.com/spreadsheet/ccc?key=0AiZoGR-iOAlUdDdfMHo5aTI2WjVIeWxnNWxvV0ZVOWc#gid=0 here]


* Manual test case results shall be tracked in this spreadsheet: <insert link here>
= Automation =
* Exploratory test results of tier 1 apps shall be tracked in this spreadsheet: <insert link here>
* Tier 1 app scenario test results shall be tracked in this spreadsheet: <insert link here>
* Marketplace Beta Test Run Results are [https://docs.google.com/spreadsheet/ccc?key=0AiZoGR-iOAlUdGRRX09NalpVNlhGTDhZR25HU01Ec1E#gid=2 Here]


= Bugs =
Automation for this feature shall intend to target smoke tests that touch the apps lifecycle (e.g. install, uninstall) and the use of the application (e.g. can I open a pop-up?). Since add-ons are not intended to be supported in the web runtime, this automation then shall be built using Marionette. This framework is necessary to use as Marionette does not rely on add-ons to run, where as other frameworks such as Mozmill do rely on add-ons to operate correctly. In addition to Marionette, we will need to build a python library that allows common operating system interaction in OS X and Windows to analyze major parts of the apps lifecycle (e.g. was a webapp.json file created, was the webapprt exe file created). For launching this automation, the following process has been suggested:


== Summary ==
# mozrunner (mozprocess) launch the process
# marionette communicates with the process, tests
# (there is also the python-side of the tests)
# mozrunner/mozprocess terminates process
## (as a backup, the CI system kills processes and reboots the system - might require improving mozrunner for this need)


=== Open Bugs by Priority ===
First steps to getting this setup will require ensuring that marionette can be built with firefox, as this has not been tested yet. Upon completing the desktop integration with marionette, we will need to write a python library for common OS interactions. Upon completion on the python library, we will then need to build a proof of concept automated test utilizing marionette with the python library. This test should target the basic apps lifecycle steps (e.g. install app, launch app, use app, uninstall app). Following completion of the proof of concept, further automated tests can be continued to be built as needed to get automated coverage of smoke tests with desktop web apps.


<bugzilla type="count" display="bar">
= Bugs =
    {
        "blocks": "731054",
        "resolution": "---",
        "x_axis_field": "priority"
    }
</bugzilla>


=== Bugs Needing Verification by Severity ===
A summary of the current bugs in the system are found [https://wiki.mozilla.org/Apps/Status#Bug_Metrics here]. The below lists summarizes the bugs that need to be verified:


<bugzilla type="count" display="bar">
<bugzilla>
     {
     {
         "blocks": "731054",
         "product": "Firefox",
         "status": "RESOLVED",
         "component": "Web Apps",
         "resolution": "FIXED",
         "whiteboard": "[qa+]",
         "x_axis_field": "priority"
         "resolution": "FIXED"
     }
     }
</bugzilla>
</bugzilla>
== Top Functional Bugs ==
== Top App Bugs ==
== Other Bugs ==


<bugzilla>
<bugzilla>
     {
     {
         "id": "732280,725533"
         "product": "Firefox",
        "component": "Webapp Runtime",
        "whiteboard": "[qa+]",
        "resolution": "FIXED"
     }
     }
</bugzilla>
</bugzilla>
Line 166: Line 143:


* [https://wiki.mozilla.org/Web_Apps_integration Feature wiki page] - Specification for the Web Apps Integration feature
* [https://wiki.mozilla.org/Web_Apps_integration Feature wiki page] - Specification for the Web Apps Integration feature
* [https://wiki.mozilla.org/Web_Apps_integration/TestPlan/CommunityTasks Community Tasks] - QA tasks where community members can come help with testing
* [https://apps.mozillalabs.com/appdir/ App Directory] - Sample apps to install for testing
* [https://apps.mozillalabs.com/appdir/ App Directory] - Sample apps to install for testing
* [https://wiki.mozilla.org/Apps/QA/OWA_Extension Past OWA Extension Documentation] - QA documentation for desktop testing of the OWA extension, may be applicable to testing this feature
* [https://docs.google.com/spreadsheet/ccc?key=0AmwBbtTVVjHsdDh2RG1HQ2p5R1pmLUliWDVwS3dPWWc&hl=en_US#gid=0 Past OWA Test Cases] - QA documentation for past test cases used for the OWA extension, may be applicable to this feature
* [http://bit.ly/wXUodR OWA Extension Bugs] - Bugs for the OWA Extension, which may become bugs under this feature in the future
* [https://github.com/mozilla/openwebapps Open Web Apps GItHub Repository] - Open Web Apps code used before mozilla-central
* [https://bugzilla.mozilla.org/show_bug.cgi?id=733631 Test Infrastructure Tracking bug] - Tracking bug for build out test infrastructure for this feature
* [https://bugzilla.mozilla.org/show_bug.cgi?id=731054 Feature Tracking Bug] - Tracking bug for the web apps integration feature
* [https://docs.google.com/spreadsheet/ccc?key=0AiZoGR-iOAlUdEJwelZRMW01LWN1RUFpT1hsWkt0Rnc March 1st Extension Test Results] - Last test run against the OWA extension
* [https://wiki.mozilla.org/Apps Apps Wiki] - The apps team wiki page
* [https://wiki.mozilla.org/Apps Apps Wiki] - The apps team wiki page
* [https://wiki.mozilla.org/Apps/Overview Apps Overview] - The vision of the apps project
* [https://wiki.mozilla.org/Apps/Overview Apps Overview] - The vision of the apps project
Line 182: Line 151:
* [https://github.com/mozilla/openwebapps-flickr-connector Flickr Connector Web App] - Example web app
* [https://github.com/mozilla/openwebapps-flickr-connector Flickr Connector Web App] - Example web app
* [https://github.com/mozilla/openwebapps-photosite-connector Photosite Connector Web App] - Example web app
* [https://github.com/mozilla/openwebapps-photosite-connector Photosite Connector Web App] - Example web app
* [https://docs.google.com/spreadsheet/ccc?key=0AiZoGR-iOAlUdGRRX09NalpVNlhGTDhZR25HU01Ec1E#gid=2 Marketplace Beta Test Run Results] - Results from Test Run for Marketplace Beta Signoff


= Open Questions =
= Open Questions =

Latest revision as of 04:29, 22 May 2012

Overview

Feature Release Target Dev Lead QA Lead Dev Status QA Status Health
Web Apps Integration Firefox 15 Felipe Gomes Jason Smith Landed In Progress OK

Feature Summary

This feature focuses on being able to find web applications to install on Firefox through the home tab and installing and uninstalling these applications natively different operating systems. These installable web applications are essentially websites built in web technologies (e.g. HTML, CSS, JavaScript) that users can interact with through a chromeless shell in a native environment. These web applications intend to act exactly like native applications on the operating system. For a website to become a web application, a developer creates an app manifest for their website and hosts it on an origin (e.g. www.yourhost.com) where the website is located. Then, the app developer adds this manifest to a store (e.g. Firefox store) to allow the app to be installed to users' machines.

Users can then go to this store to install this application to their native machine. Note that installable applications can be paid or free. For paid applications, users will have to pay for the application through Paypal. Upon making the application payment, a user's machine receives a receipt to prove that the application is paid for. Then a user can install this paid application to their machine on Win XP+ or Mac OS X. See the native installation flow to understand how native applications are installed a user's machine on Windows XP+ and Mac OS X. After a user selects to install an application, a confirmation should appear asking the user to confirm installation of the application to a particular file location on the user's machine. Then, upon confirmation, the application should be installed to the user's machine. At this point, the user should understand where the application was installed on their machine.

After applications are installed, users can run these applications in their native environment in a chromeless shell both online and offline. If the application is paid, validation will need to take place using the receipt for the application to ensure that the user paid for the application. On windows, applications are typically ran as shortcuts from the desktop, but may also be ran from the start menu in executables. On Mac OS X, applications are ran through the /Applications directory typically. When an application is launched, a chromeless window starts using Firefox's webapp mode under the hood with the web application running in the shell. In the task manager in Windows, you would see that the application is process running on the system under the name of the web application. Within the shell, users can take actions within the application, such as logging in, clicking links within the origin of the application, playing a game, and more. Within the shell itself, users have a menu to allow basic application actions such as quitting, cut/copy, and more. When a user is done using the application, they can quit using the application.

If the user no longer wants the application installed on their machine, they can uninstall the application from their machine. For windows, uninstalling can take place either directly in the directory location of the application or through add and remove programs. On Mac OS X, uninstalling occurs by moving the application to trash and deleting the application from the trash bin. Upon uninstalling an application, all locally stored app data that previously created during installation should be cleared.

Testing Scope

Major Features

The scope of testing of this feature focuses on the following major features:

  • Home tab web apps integration
  • Installing native applications
  • Launching native applications
  • Using native applications
  • Uninstalling native applications

Software Qualities

  • Security
  • Resilience
  • Localization
  • Performance

Edge Cases

  • Browser crashes
  • Loss of internet connection (e.g. offline mode)
  • App state changes (i.e. free to paid, paid to free)
  • Invalid or no receipts for paid apps
  • Local vs. roaming windows profiles
  • System restore

Testing Strategy

The following testing approaches shall be used to assess the scope of testing stated above:

Development of Manual Test Cases: Manual test cases shall be created to test the major portions of features in the testing scope. Each test case shall specify a quality requirement (smoke or feature signoff). Applicable sets of these test cases (smoke and feature signoff) should be ran each beta release that are value-added to run to capture bugs.

Exploratory Testing of Marketplace Top Apps: Exploratory testing of using top native applications shall be conducted to ensure that our highest priority applications are supported on our platform. When exploratory testing these applications, a checklist below will help guide the direction of exploratory testing:

  • Does the application avoid using engine specific content?
  • Does the application show out of origin content?
  • Does clicking out of origin links that are not authentication go to the browser?
  • Does application pop-ups and platform integration work as expected?
  • Does flash and experimental features work as expected?

For problems discovered that involves a top app, a whiteboard marker of '[topapps]' shall be specified. Any problems with the app itself shall have evangelism bugs logged if the app is a top app.

Development of Value-Added Automation: Automation shall be developed for smoke test cases that carry the highest value add in comparison to the overhead to the build the automation. See the automation section for more details.

Sign Off Criteria

Aurora

  • All Desktop WebRT blockers are fixed
  • Smoke tests should pass on Win XP, Vista, 7 (32/64 bit), OS X 10.5 - 10.7 with no major issues
  • No significant regressions in Desktop Firefox (e.g. crashes due to this implementation)

Beta

  • Flagged polish issues are fixed
  • Smoke and important feature signoff tests should pass on Win XP, Vista, 7 (32/64 bit), OS X 10.5 - 10.7 with no major issues
  • No significant regressions in Firefox due to this implementation

Release

  • Same as Beta

Infrastructure Requirements

mozqa.com's firefox test cases section shall need to be turned into a web app to allow for testing the underlying platform when using apps with desktop. If new test cases for platform are necessary, then they will need to be uploaded as test cases to the mozqa.com test server.

For testing the manifests with the apps lifecycle, testmanifest.com shall be used to do this. Manifests shall be attached to test cases. Then, the tester shall have to copy and paste the manifest into an applicable testmanifest.com URL, save it, and install the application. From there, other test cases can be done as needed for the apps lifecycle (e.g. uninstall application).

Test Case Management

Test cases for this feature shall be tracked in MozTrap. In MozTrap, they will be flagged as a Desktop Firefox 15 feature in the product version tag. Additionally, smoke tests will be flagged with the "smoke" tag. Feature signoff test cases will be flagged with the "feature signoff" tag. Each of these test cases are broken up into categories such as functional, security, resilience, localization, and performance and are tagged as such.

Note: Ideas for test cases are documented here

Automation

Automation for this feature shall intend to target smoke tests that touch the apps lifecycle (e.g. install, uninstall) and the use of the application (e.g. can I open a pop-up?). Since add-ons are not intended to be supported in the web runtime, this automation then shall be built using Marionette. This framework is necessary to use as Marionette does not rely on add-ons to run, where as other frameworks such as Mozmill do rely on add-ons to operate correctly. In addition to Marionette, we will need to build a python library that allows common operating system interaction in OS X and Windows to analyze major parts of the apps lifecycle (e.g. was a webapp.json file created, was the webapprt exe file created). For launching this automation, the following process has been suggested:

  1. mozrunner (mozprocess) launch the process
  2. marionette communicates with the process, tests
  3. (there is also the python-side of the tests)
  4. mozrunner/mozprocess terminates process
    1. (as a backup, the CI system kills processes and reboots the system - might require improving mozrunner for this need)

First steps to getting this setup will require ensuring that marionette can be built with firefox, as this has not been tested yet. Upon completing the desktop integration with marionette, we will need to write a python library for common OS interactions. Upon completion on the python library, we will then need to build a proof of concept automated test utilizing marionette with the python library. This test should target the basic apps lifecycle steps (e.g. install app, launch app, use app, uninstall app). Following completion of the proof of concept, further automated tests can be continued to be built as needed to get automated coverage of smoke tests with desktop web apps.

Bugs

A summary of the current bugs in the system are found here. The below lists summarizes the bugs that need to be verified:

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Important References

Open Questions

Reinstallation of Paid Apps with a Different Account Question

(jsmith) What's the difference with a different account when reinstalling the same paid app?

Install App on Two Different Firefox Profiles

(jsmith) What is the expected behavior if I install an app on two different firefox profiles? Will one app overwrite the other entirely? Partly?