I get asked this question all the time. Let's go over different types of testing and where cloud-based testing fits in.
Some current types of testing companies use to ensure their application is working correctly are as follows:
- Unit testing
- Integration testing
- Acceptance testing
- Load testing
- Regressing testing
- Uptime testing
Unit testing is testing the individual components that build up your system.
Generally people unit test during deployment and try to use test coverage as their source of truth for if their application is working as expected.
Integration testing is testing the system as a whole to make sure from entry point of the software to exit point everything is returning correctly.
Generally, people integration test as part of their deployment as well. One key note about integration testing is it does not require the testing to be done on the deployed code.
Acceptance testing is testing based on the end user. A common understanding of what is being tested and an acceptable state is agreed on before starting.
Generally, people do acceptance testing during staging or after deployment of new code to make sure it is to the quality and expected standards of the end user.
Load testing is testing the load threshold that a system can safely handle in different code paths
Generally, people load test either before feature release to ensure they can handle the expected load or before releasing to a wider audence then currently handling. Load testing is not often a part of deployment process and generally only done periodically.
Regression testing is testing for any degradation or broken code after new deployment.
Generally, people consider the combination of their integration testing + performance monitoring software regression testing.
Uptime testing is testing for the availability of services
Generally, people call it uptime monitoring and use a third party system in order to gain insight.
Cloud testing is having external infrastructure periodically test your public facing application
I think part of the reason cloud testing is so ambiguous is that for the last couple years people seem to use the word cloud for anything and everything
So that's a little vague, what does it really mean?
Think about the upside to running your integration tests periodically against your production API in order to test for regression and uptime constantly.
Imagine for a second that one of your endpoints calls out to a third party API that is returning unexpected data now. No form of testing above would warn you about this. Your uptime monitoring would only notify you on when your service went down. Your regression testing only happens on deployment.
The aim for cloud-based testing is to know about any and all issue before your end users tell you.
AppDoctor is a new player in this fast-growing space but provides a bunch of features at an affordable price. From now till july you can use the discount code 'month-free' to unlock all the features and see if it works for you.
We hope that people start seeing cloud testing as a requirement for enterprise level software as compared to an afterthought.