Skip to content

Pack Purchasing Test Plan

lucasrowe edited this page May 13, 2012 · 7 revisions

This page will keep track of any and all testing scenarios that we should run through to make sure any implementation of pack purchasing is working.

Pack Billing

As a user of Phrasecraze I want all of my packs I've purchased to be on my device so that I actually get what I pay for when I "own" a pack.

  • No Internet Connection
  • No Billing Connection
  • Billing Service In Background
    Make sure the billing service isn't running in the background when the app is not in focus
  • Purchased Packs Restore
  • Purchased Packs Restored on Second Device
  • Refunded Packs Remove
  • Refunded Packs Removed From Second Device
  • Cancelled Pack Purchase
    Verify that the pack never installs when a purchase is cancelled
  • Market Account Changed
    Verify that packs are both removed and installed when a user changes the market account

Pack Installation and Update

As a user of Phrazecraze I want all my packs installed and updated on startup when they are out of date so that the packs I own are always current.

  • Install on First Run Only
    Run the app and verify that any local packs are installed on the first time only.
  • Update on Second+ Runs
    Updates occur on the PhrasePackPurchase screen, after user's packs are removed or deleted (don't update packs that are about to be deleted).
  • Update Multiple Packs Verify that updating multiple packs at once installs all content as expected. Specifically, all words should be re-inserted into the database and the Pack version should update accordingly.
  • Installs on Purchase
  • Crashed Install
    Run the app and simulate a crash by stopping the app (Settings - Manage Applications - Phrasecraze - Force Stop). In this case the app should roll back the installation of the interrupted pack. When re-run the app should pick up at the start of the interrupted pack. When the installation is complete, all packs should be installed and the count of phrases should be correct.
  • Social Packs - Post
    Download Google+, Twitter, and Facebook packs, verifying that the install dialog doesn't trigger until after the user return
  • Social Packs - No App Attempt to download Google+, Twitter, and Facebook packs when no app to post with is installed. Verify that pack is not delivered.

Pack Maintenance Tests

As an owner of Phrasecraze I want to be able to modify, delete, and add packs on the server that will get picked up by the app so that I don't have to modify any code to change the packs people are using or can use.

  • Add a Pay Pack
    Add a pay pack to the server and verify app picks it up and user can purchase it
  • Add a Free Pack
    Add a free pack to the server and verify app picks it up and user can retrieve it
  • Add an Incomplete Pack
    Add a pack (either type) to the server without adding any phrases. Will it count as a purchase if the user buys a partially created pack?
  • Broken Packs
    Add or modify a pack to make it syntactically incorrect. Will the app crash and burn?
  • Delete a Purchased Pay Pack
    Delete a pay pack from the server and verify app removes it from the list
  • Delete an Unpurchased Pay Pack
    Delete a pay pack from the server and verify users who bought it can still use it
  • Delete a Free Pack
    Delete a free from the server and verify app removes it from the list
  • Delete an Installed Free Pack
    Delete an installed free pack from the server and verify user can still use it and app doesn't try to update it
  • Update a Pack - Modified Phrase
    Modify a phrase on the server as well as the pack version and verify that new phrase is picked up on app restart
  • Update a Pack - Remove Phrase
    Modify a pack by removing a phrase from the pack and incrementing the pack version. Verify the phrase is removed from the user's app on restart
  • Update a Pack - Add Phrase
    Modify a pack by adding a phrase to the pack and incrementing the pack version. Verify the phrase is added to the user's app on restart

Clone this wiki locally