Every team wants their code working all the time. To produce a working configuration to production all the time, we test the code continuously.

SO, writing and executing automated test scripts to get immediate feedback on business risks associated with the product when new code is integrated is called Continuous Testing.

The concept of continuous testing is replacing AGILE methodology rapidly. Continuous testing doesn’t mean to execute the system test every time a unit or component level test is executed. You can execute all of the tests every time but one system test at a time.

We test the applications against the business risk(s) not just the functional flaws. There is no point in waiting for a tester to report a crash appeared on first navigation, just saying. Developers cater this crash on their end before a tester reports this behavior.

Continuous testing runs in parallel with continuous integration. Automation is essential for continuous testing since you can’t put a lot of manual effort on testing the same thing again and gain instead you execute some code and get the business flow validated against acceptance criteria.

There is a difference in automation testing and continuous testing. Automation test fail indicates a functional defect of any priority or severity but continuous automation test fail indicates the existence of a major business risk.

WHY we need continuous Testing? Is the question might be rising in your head right now. The world is moving towards continuous delivery which is causing problems at testing side.

Testers are not getting the appropriate time to test a build and especially when quality and acceptance are major challenges. To root out this, a new methodology is introduced as “Continuous Testing” using which testing of already written modules is done at the unit, component, integration and system level. Because of this methodology, major business risks and crashes are identified in early stage and are fixed. UI and some major functional testing are done as normal as in practice to make sure no major defects go live.

continuous-testing

Continuous delivery demands continuous acceptance which further needs continuous testing. And Continuous testing means testers are continuously monitoring the changes and getting fixed the defects continuously. Early fixation gets the development team early feedback and hence early acceptance. So this whole procedure leads to continuous delivery. So the benefits of the continuous testing are all along the process. Early defect identification, fixation, acceptance, feedback, improvement, development and delivery are notables.

Next question is: “What can be included in Continuous Testing?”

Functional Testing

  • Unit Testing
  • System Testing
  • Integration Testing
  • API Testing

Non-Functional Testing

  • Performance Testing
  • Security Testing
  • Static Code Analysis

When you write your code, you inspect it by executing it line by line (unit testing) in order to find any logical defect in your code. Then you execute your code on module level and then run a system test in order to check if the communication of different modules is going well.

You run integration testing in order to find the binding of modules with external libraries or plugins or apps to validate the responses. You execute the tests up to API level to make sure nothing is breaking the flow on the grounds. For nonfunctional testing, you run performance and security tests to find the breakdowns regarding load and integrity of the application.

But did you ask yourself a question “What would be the Challenges?” yes there are challenges in continuous testing.

  • Distributed Dependencies
  • Underdevelopment Modules

Consider you have integrated multiple third party apps, libraries or plugins but the necessary code to fetch or send the responses is not written. It means you cannot test that module right now. Or let say if the response mechanism of those third party items is different from your application’s mechanism even then you would not be able to test your application for some specific module(s). This is called Distributed Dependencies.

The term “Underdeveloped Modules” says a lot by its name. You can’t test module A which is dependent on Module B without having the module B fully developed.

Why we emphasizing on Continuous Testing is elaborated by an example. Let’s save the words and view and analyze the earnings of a company which followed Continuous Testing methodology.

continuous-testing1-png

About the Author:

Zeeshan Khalid is an experienced Software Quality Engineer. His focus of work is on Web and Mobile based technologies. Zeeshan currently works at Kualitatem Inc and lives in Lahore, Pakistan