The following is a guest post by Raj Subrameyer – Raj is an international keynote speaker, writer and tech career coach who helps people step into the leadership role of their dreams through his services and speeches. (More about the author below)
Applications have drastically changed in the past decade in terms of functionality, complexity, and technologies used to develop them. This evolution has had a significant impact on the field of software testing; where testers get involved early in the software development lifecycle to find defects quickly and get them fixed before release deadlines. To help in this process, teams have started to implement automation.
Some of the common questions related to automation are – how to integrate it into the already existing manual testing process? When to do manual testing over automation? How can both be used to complement each other and increase overall test coverage?
The below points help to address these questions and ensure there is a seamless integration of automation into the existing testing process.
Identify tasks that are time-consuming
Time spent to test applications increases exponentially with complexity. Some examples of this would be – installing builds from QA servers onto test devices, setting up test data with different combinations, performing regression and smoke testing to ensure the functionalities of the application are still working as expected.
Identifying these time-consuming tasks is the first step towards integrating automation with the manual testing process. Teams can start automating these tasks one step at a time, while the testers can dedicate more time to exploring the application.
Understand the limitations of automation
Not all things can be automated. Arriving at this realization as soon as possible helps in automating the right set of tasks and use them along with manual testing. There are many scenarios that are either hard or unstable to automate. For example, checking rendering issues in web pages on different browsers and screen sizes, testing IoT devices that communicate with many components, validating login pages with CAPTCHA enabled, testing functionalities of the application with multiple dependencies, and checking whether the right images are displayed in dynamically changing content. These scenarios are better suited for manual testing.
Understanding such limitations of automation helps to save considerable time, cost and effort, and helps in easier integration of automated tests into the current process. While testers are exploring the application using exploratory and risk-based testing, automation can be running in parallel to ensure the functionalities of the system are still working as expected.
Start small and be organized
Teams have the tendency to automate many tasks; all at once, without paying attention to whether these tests are stable. As a result, testers start executing the automated test scenarios manually.
As an alternative, a good strategy for automation would be to first identify a small set of tasks that give high ROI when automated. This could be high-level smoke tests that quickly finish running after every code check-in, jobs that help to set up test data/builds used for testing, pre-populating pages with data to help in simulating production environment and any other tasks that would be valuable to automate. Then, these small sets of tests are run periodically and evaluated to identify stable and flaky tests. The flaky tests are separated from the stable tests and are fixed one by one before adding them back to the stable test suite.
This organized approach to automation helps in building stable automated tests that integrate well with the existing manual testing process.
Build a technical skillset
One of the biggest challenges for building stable automated tests is the availability of skilled resources in teams. Getting skilled resources to do automation is costly and time-consuming. Many organizations, including those like startups who are in a crunch for money, can’t afford to hire and build automation teams.
This being the case, teams have to come up with alternative approaches to build the required skill set within the organization to do automation. Some of the approaches include – training testers on different automation frameworks, tools, and programming languages, having experienced technical testers mentor and coach other testers in the team, sending teams to technical conferences and user groups to learn how automation is implemented outside the organization.
Invest in tools to integrate manual and automated tests
With new features added to the application every sprint, the need to write new test cases and maintain old ones becomes a key factor in having good test coverage. Teams want to have one single integrated solution to maintain both manual and automated test cases.
There are a plethora of tools available to do this but there are few that provide an end-to-end test case management solution. Investing in such powerful platforms help teams execute and maintain test cases in one single location and generate results. The results can be viewed via different dashboards and shared across teams for easier collaboration.
Times are changing and with teams moving towards agile approaches like DevOps and continuous testing, the need to implement and integrate automation with existing manual testing processes is critical. Rather than viewing automation as a replacement for manual testing they need to be perceived as approaches that complement each other. While manual testing is required to explore the application, find new vulnerabilities and test applications as an end-user with empathy, automation can be run in parallel to help in repeating mundane tasks periodically.
About the Author
Raj Subrameyer is an international keynote speaker, writer and tech career coach who helps people step into the leadership role of their dreams through his services and speeches. He is helping countless people to discover their zone of genius and leverage it to live the life that they love.
On top of that, he is helping tools and services companies build brand awareness through content creation and thought leadership. In his spare time, he loves traveling with his family and discovering new experiences which include craft beer. You can connect with him on twitter – @epsilon11, or his website – www.rajsubra.com.
Practitest is an end-to-end test management tool, that gives you control of the entire testing process - from manual testing to automated testing and CI.
Designed for testers by testers, PractiTest can be customized to your team's ever-changing needs.
With fast professional and methodological support, you can make the most of your time and release products quickly and successfully to meet your user’s needs.