When developing new software or maintaining an existing application, often we want to Automate the QA Testing process to make the testing process faster, more efficient, and more accurate.
But what does QA Test Automation mean?
All of the following are a form of QA Test Automation:
As a Software Developer, typically you will create a small script with example data to automatically run it against the Portion or “Unit” of code that you are working on. Once the script is built, this Unit Test can be used numerous times, in order to help the Developer fix any errors in their code.
This is an extremely important process, as the earlier we can catch errors, the cheaper and easier it is to fix.
When automating Testing for a Graphical User Interface (GUI), a QA Engineer will use a separate Application known as a Testing Framework, to create a series of scripts that mimic what a specific Persona or User Role would interact with the Application that the Development Team is working on.
This way when new releases (a.k.a. builds) are ready for Testing, the QA Engineer only needs to modify the Test Plan Script and then run it as the various User Roles. This greatly speeds up the process of testing the User Interface of the application, as any failure or inconclusive results will automatically be recorded.
This type of Automated UI Testing, can be applied to any type of User Interface:
When integrating two or more applications, you will need to test the various messages and communications going back and forth between the various applications, and automating these Tests is often the best approach.
This would include Testing the Message for:
Typically, this type of testing is done completely independent of the GUI of either application and focuses solely on the data message being sent from one application to the other, and back.
As the Team is continuing either to build an application, or maintaining an existing application that is already being used in Production, it becomes critical to test all of the modules and functions within the application to ensure they were not affected by the change. As even a minor change can potentially impact an entire application.
Often using a manual testing approach would be too time consuming and expensive, which is why automating these tests is a more effective and efficient way of detecting and finding defects, before the code is promoted to Production.
However, this is not a panacea. When dealing with an application with potentially millions of moving parts, even the best Regression Test may not catch everything. Every Senior IT Leader has their own example story…
When I was the VP of Software Development at Universal Technical Institute (NYSE: UTI), we had a request from the business to change a single text field in the core database from 256 characters to 512 characters. We ran a quick automated regression test, and it was fine, so we agreed this was an extremely low risk change. Unfortunately, our standard Reporting Tool interpreted this change as going from a text field – which you could use for calculations, to a memo field, which it could not use. So, this very simple change ended up breaking nearly 2,600 standard reports used throughout the entire organization.
This form of automated testing is used when you want to find out at what point does the Performance of your application start to slow or even make the application crash. In other words, how many:
There are many different methods for how to conduct this type of Load or Stress Testing, depending upon what your budget allows and the business criticality of the application or module that is being tested:
This form of automated testing is most commonly used after the application is “Live” and in Production or a Pilot and being used by actual Users. The QA Engineer will use an Application Performance Monitoring Tool and create one or more scripts to test various parts of the application, which is run on a frequent basis (every 5, 15, 30, or 60 minutes).
This tool will then send an entire transaction set to test the application and whether it is working correctly. With each function, the application returns to the Tool, information like:
Using all of this data, the IT Operations Team and Development Team can look for ways to optimize and improve the application.
Automating the Testing of your Software Development efforts can enormously help improve the:
However, it takes an investment in Time, Resources, and Tools, and then must be maintained in the future to continue to receive these benefits. And it won’t replace the need to do some manual testing as well.
We hope that this has been beneficial and useful to you, if you are in need of software development contact us here.