Comments highlighted by section:
Could you point to the spec of the "download" API ? I think I am
unfamiliar ?
* Update hosted app, hosted app with appcache, packaged app
<--- updated hosted app, is just caused by updating the end point,
updating of appcache is really an html5 feature, not necessarily an
apps based feature so i don't believe this is in scope.
Drilling at the specifics appcache isn't important for this, but
ensuring the integration into the download API definitely is. That's a
fundamental piece of the download portion of the API. So that's
definitely in scope. If that breaks (which it has in the past), we're
in trouble - including potentially breaking partner apps in the process.
*** Generally the mechanism that is in place is that you call
app.checkForUpdate() and if the downloadAvailable flag has been set,
then you would call navigator.mozApps.install.
If you were attempting to write automation, it doesn't really make
sense to test the "Update" failure scenario as you are suggesting, as
this is the same as the install Failure.
**I understand the scenario you are suggesting, but I think if you
treat the update as being, checkForUpdate(), then that makes more
sense. *
*The general failure scenarios are all covered in the install Failure
scenarios which I listed below as being important. **
*
* Fail to update hosted app, hosted app with appcache, packaged app
<-- unsure what failure to update hosted app means?
Failure to update means you couldn't complete the update due to an
error. The download API on failure to update needs to fail gracefully,
not cause data loss, and fail when you expect it to fail. An example
test case would be ensuring that trying to update a hosted app with an
app type of web --> certified should fail during download.
*** Unsure what the download api is. *
<-- failure to update a hosted app with appcache should be covered by
appcache testing.
Actually, there's integration points in the download API that directly
integrates with appcache logic. So appcache testing doesn't cover this
entirely. You need to ensure that the download API integrates
correctly with appcache. The specifics of appcache is out of scope
though.
<-- failure to update a packaged app is reasonable, but would be
considered a P3. The failure scenario to update a packaged app, would
be to have a bad packaged app / diretory structure.
I don't think all error cases are low priority, especially because
this plays a fundamental piece of the download API and certain error
cases can have severe implications if those test cases don't fail
correctly. Other example failure cases such as:
*** General Expected functionality would be the primary goal, next
iteration would be to re-review / prioritize. *
*** Is the anticipation such that apps will be poorly signed ? There
are plenty of things that could go wrong, and I'm in agreement that
those tests need to be worked on. However first goal is to make sure
we have good general coverage across all areas.*
*
*
* Network connection loss
* Bad signing
* Incorrect app type on update (web --> privileged for hosted, web
--> certified for hosted/packaged)
* etc. (for the many things that can incorrectly happen on an update)
Some of these bad updates have put us into a bad state in certain
cases in the past. A key characteristic of the download API is being
able to ensure that you know when you fail and expect a failure when
you should get one, have an ability to recover from a restart, and not
suffer from data loss. Error cases are actually quite common with
packaged apps given it's complexity. If we don't fail when we should
fail, that could be quite bad in certain cases - especially in the
case if say, I allowed an update of a hosted app with an app type of
web to certified. Or another example would be trying to update a
signed privileged packaged app to another packaged app without a
proper signature. There's security holes that open up if that ends up
not failing.
* Restart update of hosted app, hosted app with appcache, packaged app
<-- unsure what an update of a hosted app means, are you saying a
manifest update, or content update ?
** Some of this I agree with, however this is handled by permissions
testing / david chan should be able to speak to this. But I imagine
that is where this would fall. Would love to hear what he is doing in
this regard as well.
* [general hosted app case] Updating a hosted app without appcache
means changing the app manifest
* [appcache involved for hosted app] Updating the appcache for a
hosted app preloading appcache
(This doesn't look to be in scope for this round )
* Other more higher level areas of analysis could focus on:
* Webapp manifest analysis
* Drilling at the specifics of the download API
* Mini-manifest analysis
I wouldn't necessarily throw this out without analyzing this. The
automation here drills at the gecko API level, which if it doesn't
work correctly, will cause end up affecting Gaia negatively by caveat
with the many bugs we've seen. However, there's certainly areas of the
API that end-users aren't necessarily affected by as much. The
manifest pieces (webapp manifest & mini-manifest) additionally play an
important role in how you install and update an app, so those flows
are important to analyze (example really bad bug that happened - we
had a bug where a certain app update that changed a web activity in
the manifest on an update caused the phone to fail to startup). I'd
still apply perspectives on these pieces to see what's needed here.
Sincerely,
** Agreed with you here. But this test case does seem more of an edge
case, than a target for automation.
Jason Smith
Desktop QA Engineer
Mozilla Corporation https://quality.mozilla.com On 5/25/2013 12:37 AM,
David Clarke wrote:
Jason,
Great list, went through and organized things somewhat into the
areas outlined before.
Areas that I was unsure as to the meaning of the test I left out. I
believe Fernando is working on
https://bugzilla.mozilla.org/show_bug.cgi?id=821589 , so adding him
directly to the thread.
Packaged Apps:
* Install/launch/uninstall packaged app
* Install failure for packaged app not signed with type privileged
* Install failure for packaged app with type certified
* Download failure for packaged app for running out of space (P3)
* Cancel download of packaged app
* Restart download of packaged app
* Download failure for packaged app for having a bad packaged app zip (P3)
* Install/launch/uninstall/update signed privileged packaged app
Updated Apps:
* Updated Manifest
* Updated Manifest with preloaded appcache
* Updated packaged app install
Preloaded Appcache:
Appcache:
* Install/launch/uninstall hosted app with appcache
* Download failure for hosted app with appcache for running out of
space (P3)
* Restart download of hosted app with appcache
Hosted Apps:
* Install/launch/uninstall hosted app
* Install failure for hosted app with type as privileged or certified
* Cancel download of hosted app with appcache
* Download failure for hosted app with appcache for having a bad
appcache manifest (P3)
Notifications:
* Verification that notification of installs / upgrades / pause /
cancel / restart events are propagated correctly
Permissions:
-------------------------
Areas where I feel where we need more clarity before we add it tot he
list.
* Update hosted app, hosted app with appcache, packaged app
<--- updated hosted app, is just caused by updating the end point,
updating of appcache is really an html5 feature, not necessarily an
apps based feature so i don't believe this is in scope.
* Fail to update hosted app, hosted app with appcache, packaged app
<-- unsure what failure to update hosted app means?
<-- failure to update a hosted app with appcache should be covered by
appcache testing.
<-- failure to update a packaged app is reasonable, but would be
considered a P3. The failure scenario to update a packaged app, would
be to have a bad packaged app / diretory structure.
* Restart update of hosted app, hosted app with appcache, packaged app
<-- unsure what an update of a hosted app means, are you saying a
manifest update, or content update ?
(This doesn't look to be in scope for this round )
* Other more higher level areas of analysis could focus on:
* Webapp manifest analysis
* Drilling at the specifics of the download API
* Mini-manifest analysis
--David
------------------------------------------------------------------------
From: "Jason Smith" <[email protected]> To: "David Clarke"
<[email protected]> Cc: "Fabrice Desre" <[email protected]> ,
"Andrew McKay" <[email protected]> , "Gregor Wagner"
<[email protected]> , "Fernando Jiménez" <[email protected]> ,
"dev-b2g" <[email protected]> , "Julien Wajsberg"
<[email protected]> Sent: Thursday, May 23, 2013 6:26:29 PM
Subject: Re: Platfrom Apps Automation Testing
My comments in summary:
* I'm in agreement with your approach you are suggesting in #1
* I'd suggest getting feedback from Julien on how Gaia integrates
with the gecko layers to restart and cancel workflows. I'd suggest
simulating what he does there. We should aim for sanity tests here, as
the restart case (especially with packaged apps) is actually quite
common (many problems can happen to cause a download to fail)
* David Chan is already focusing on app permissions, so I'd keep
that out of scope for now
* The next step in analysis that I think would be helpful to get
is to take the end to end analysis you've done and apply a gecko
perspective on it referencing the underlying APIs involved
* We need signed privileged packaged app test cases in this list
(e.g. install a privileged app)
* Mostly in agreement with the theme of the priorities. My
comments specifically would suggest that these themes are important to
consider in comparing with your list:
* Install/launch/uninstall hosted app
* Install failure for hosted app with type as privileged or
certified
* Install/launch/uninstall packaged app
* Install failure for packaged app not signed with type
privileged
* Install failure for packaged app with type certified
* Install/launch/uninstall hosted app with appcache
* Download failure for packaged app for running out of space
* Download failure for hosted app with appcache for running
out of space
* Cancel download of hosted app with appcache
* Cancel download of packaged app
* Restart download of hosted app with appcache
* Restart download of packaged app
* Download failure for packaged app for having a bad packaged
app zip
* Download failure for hosted app with appcache for having a
bad appcache manifest
* Update hosted app, hosted app with appcache, packaged app
* Fail to update hosted app, hosted app with appcache,
packaged app
* Restart update of hosted app, hosted app with appcache,
packaged app
* Install/launch/uninstall/update signed privileged packaged app
* Other more higher level areas of analysis could focus on:
* Webapp manifest analysis
* Drilling at the specifics of the download API
* Mini-manifest analysis
Sincerely,
Jason Smith
Desktop QA Engineer
Mozilla Corporation https://quality.mozilla.com On 5/23/2013 3:08 PM,
Jason Smith wrote:
==> Moving to dev-b2g (don't think there's anything confidential here).
+Fernando
+Julien
Sincerely,
Jason Smith
Desktop QA Engineer
Mozilla Corporation https://quality.mozilla.com On 5/23/2013 2:26 PM,
David Clarke wrote:
Navigator.mozApps Developers:
I have been reviewing the automation suites that are currently in
place, and wanted to propose a plan for organizing test cases going
forward, and preparing for 1.1 / 1.2 features.
#1 Cleanup / Stabilization:
- http://mzl.la/Ywh6rL .There are currently some amount of tests which
are failing intermittently of the current mozApps chrome test suite.
The current mozApps test suite is not run on B2G Emulator as it is a
mochitest-chrome based set of tests.
My proposal would be to move the current mozApps test suite to a
mochitest-plain based test suite, and use
SpecialPowers.autoConfirmAppInstall, which was not available
at the writing of the chrome based test.
The double benefit here is that we will remove one area of
intermittent failure, and also allow us to run the test suite on the
B2G emulator.
(imho this is the main cause of the test timeouts you are seeing in
the above link )
#2 Extend coverage:
- Identify areas of coverage that are needed and high priority, and
attempt to write test cases for them.
- http://bit.ly/16aGkPS I have imported the manual test cases into the
above google spreadsheet and attempted to rank by both priority /
difficulty to get some sense of what test cases will be both easy / a
high priority to test.
- Good news is that packagedApp test cases are on the way, but there
are lots of test cases that are not on the automation roadmap.
Example:.... stop / cancel and restart packaged app installs.
It would be good to separate the test cases listed above and discuss
from a feasibility standpoint what is capable of being supported, and
then make sure the hooks are in the platform that will allow for the
automation to be written.
The general priority listings I have organized around:
P1: refers to Primary User Flows
P2: Secondary user flows, a little further from the beaten path
P3: Edge Cases, Error conditions, that are not explicitly part of a
user story.
I am only considering P1 issues for this round, but what I would like
to do is to start breaking down the list further, and seeing what
would be beneficial for gecko automation.
If there are specific areas that we can agree on for automation, then
we can focus around those specific use cases / test cases. The main
areas for apps testing are listed below, please feel free to update
with any thoughts or specific test cases that you think are relevant.
You can also edit the google spreadsheet that is linked to from above,
and add comments wherever necessary.
Packaged Apps:
Updated Apps:
Preloaded Appcache:
Appcache:
Hosted Apps:
Notifications:
Permissions:
Thanks all,
--David
_______________________________________________
b2g-internal mailing list [email protected]
https://mail.mozilla.org/listinfo/b2g-internal