Most of the people in the software industry know about “Software as a Service (SaaS)”, “Service Oriented Architecture (SOA)”, Web Services etc. When you as a tester need to work on a project which involves building a SaaS product then what kind of work you can expect to do on such projects?
SaaS product development generally involves having a continuous integration development model. The product development may happen in an agile environment (Scrum, Extreme Programming etc.). So during product development, most of the testing strategies which are adopted on agile projects e.g. unit testing, integration testing, system testing, regression testing etc. will be followed.
Testers working on SaaS projects are also required to work on production instances of the software products. These instances are the implemented SaaS products which are in operation mode and are being used by actual users. Production instances are tested for sanity, security or performance to ensure that actual users do not suffer due to changes in environment, operating conditions or external internet attacks or viruses etc. (SaaS products are always offered as a subscription service over the internet and thus they are prone to same kind of risks and threats as any internet website can face). It is where; the fun part in the life of testers begin.
Strategy for testing production instances is very different compared to what testers are used to on development projects. Here they need to take many precautions because if they mess up with the production instance, actual users of the software will suffer. This happens because the actual users and the testers need to use same database and same software production instance. Some of the messing up can happen:
- Testing data gets used by actual users (creating wrong transactions, resulting in loss of revenue, legal implications etc.)
- Accidently deleting or changing user data while testing
- Performance issues (too many testers using the instance simultaneously or too many transactions being performed by them results in slower performance of the software for actual users)
- Locking out end users (if the software product has a limited number of seats to be used and the testers have occupied too many seats)
There could also be problems related to security, data loss etc. due to many reasons which may not be directly related to testing activities.
What could be strategies to deal with these unique challenges when testing is to be done on production instances?
We will discuss these strategies in part 2 of this article.