If you automate a mess, you get an automated mess
Software testing: A check between dream and reality
Developing a smoothly running, efficient, bug-free software is every engineer’s dream. But to convert this dream into a reality, one has to go through the rigorous exercise called software testing or Software Quality Assurance. Software testing is a means of finding out whether your application is functioning the way you envisioned it to work. Software testing is broadly divided into manual testing and test automation. While manual testing needs the testers to go through various features, test automation uses an automation framework to check various components of the software under test.
Test automation: Converting hours to minutes
Automation is no more the new kid in the block, but it surely is a star kid who is catching everyone’s attention. Why? Because it saves a lot of time and effort, and test automation is no exception. Test automation includes using automation tools to set up testing parameters that can act as preconditions to check the seamless functionality, carrying out the tests, and verifying the actual results against the expected results. Through automation tools, several testing processes can be made to run in parallel, sequentially, as well as in a regularized pattern. It reduces the risks of human faults during test execution and generates more reliable test execution timeframes.
Requirement analysis: A groundwork for test automation
Right after you decide on the “why” of software development, it is imperative to focus on the “what” before you proceed to the “how” of development. While deciding on the architecture and framework of the software, putting a plan for the testing architecture and framework is necessary. This is where requirement analysis comes in place. A test automation solution should completely be considered as another type of software, so any rules or guidelines for software architects should also apply for test automation architects. While pondering on the requirements for test automation, the following points must be kept in mind:
- The phase(s) of the test that you intend to automate, design, execution or generate
- The level of the test you intend to automate, such as the component level, system level, integration level, or acceptance level – yes, acceptance tests can be automated too!
- The type of test to be automated: For example, functionality, interoperability, conformance, or any kind of quality attributes.
- The software product or product line under test that you want to automate.
- The testing role(s) you want to automate – executor, manager, architect, or analyst.
- The software-under-testing (SUT) technologies that you want to automate.
A seven-lens analysis of the test automation requirements can help create a full-proof automation platform:
- Breaking the silo: It is always better to have a centralized approach towards test automation, not just among engineers, but also among the different operational units. It saves time and effort to have various centralized structures and ready-to-use resources.
- Using it your way: Having a platform that allows customization during the runtime allows wide usage. It is important to not choose a test automation tool first and then adapt around it. A modular architecture with customizable definition, execution, and adaptation layers will most likely bring a more efficient and sustainable approach.
- Versatility is the key: The ability to automate across several platforms and multiple components, within the test, is something that can be on the cards.
- Putting the process in place: It is a good idea to document the processes, even the non-technical logics for the QA engineers to have a clear picture. Test automation is also a kind of software, and therefore, the rules for documented specifications, manuals, and routines also apply to it.
- Uniformity is the key: Maintaining uniformity in reporting the stages of software development helps the QA engineers to analyze better. The same is true for the various stages in the test automation process, which should also follow a software development life cycle.
- Cost-cutting is imperative: The primary analysis before automating a test is to see how much operational cost can be reduced by automating a process. This allows the return-of-investment to be calculated in a realistic way.
- Monitoring the test progress: A user-friendly dashboard that tracks the progress of the test comes handy in executing the test and also customizing it. This is also applicable for test automation. The dashboard could provide the option to open and track bugs, issues, or needs for improvements.
Escaping the “technical debt”
Requirement analysis in test automation is necessary to save yourself from technical debt. In an agile environment it refers to the gap between the ideal situation and the current situation; usually risen out of development to meet certain dimensions of the application. Technical debts do have an incredible impact on test automation, especially after SUT change. Through requirement analysis, you can build a test automation framework that will help reduce such hindrances.
About Toni Kraja
Expert in professional Software Quality Assurance with a focus on Test Automation and Test Management. Involvement in functional, non-functional and end-to-end testing. Recently, development and further maintenance of customized test automation suites for several projects with Robot Framework, Python and further tools inside UNIX environments have been one of his main tasks besides test coordination, test management, and project management. Toni joined Sogeti in January 2014. Before that, he was involved in research about applications for autonomous drones inside of the European Union and vertical handover algorithms on mobile appliances. He also has several years of experience in Debugging and Service Computing before joining Sogeti.
More on Toni Kraja.