5 Things That Will Impact the Future of Software Testing

[article]

In the past few decades, software testing has evolved in terms of both the tools used to perform different activities and the mindset of the people using those tools. There used to be only a handful of tools used in software testing, but now we have a plethora of tools to choose from, from proprietary to open source. Likewise, people have started thinking of testers as information brokers instead of gatekeepers, and there have been a lot of positive developments in the agile world that have contributed to significant changes in the processes that teams follow in their software development lifecycle. Advancements in technology are to thank for these evolutions.

From the way we look at software, evaluate risks, think about complexity, design our test approach and strategy, and help to release a stable product to the customer, technology has definitely had an influence on how we test software, and that influence will only continue as technology advances. On a high level, here are five key things we’re already seeing that are going to shape the future of software testing.

1. Artificial Intelligence

About five years ago, everyone was talking about “mobile first” and giving the user a mobile experience using mobile web, native, and hybrid applications. Now, the new buzzword is AI. It is in self-driving cars, home assistants (people sure do love their Alexa), computer vision, health care, finance, and now in software testing.

Currently, there are very few reliable tools in the market that use machine learning to help in the authoring and execution of functional testing, end-to-end testing, and regression testing. They are primarily concentrated in UI-based test automation—the more tests the user creates, the smarter the algorithm becomes, which makes the tests more stable.

Here are some of the benefits we could expect to start seeing in testing thanks to AI:

  • Easier authoring of tests
  • Lower maintenance work on test scripts
  • Fewer flaky tests
  • Having nontechnical people start doing automation
  • Easier CI/CD integration
  • More reusable tests

For example, I built an automation framework with Cucumber, Java, and Appium. Although I had a robust framework and a lot of flexibility in writing custom code to perform various actions, I often suffered with the common problem of maintenance. When a developer changed attributes of an element that were already covered by my automated tests, the tests started failing. As a result, I spent a lot of time just maintaining these tests instead of writing new automation code to cover new functionalities that were implemented.

This problem can now be solved by using dynamic locators the AI extracts from the Document Object Model (DOM). In real time, the AI analyzes all the object trees and properties from the DOM and can create a list of different attributes for a particular element. So, when an attribute of an element changes, the AI tries to go to the next attribute in the list to locate the element and keeps going through the list until the element is located. The tests are more stable, the authoring and execution of tests are much faster, and the tester has to spend less time on maintenance.

2. DevOps

DevOps has helped software development teams and operation teams to better collaborate, thereby ensuring there is constant automation and monitoring throughout the software development lifecycle (SDLC), which includes infrastructure management as well.

You may ask, how is this going to influence software testing? The answer: Everything we do as part of testing is going to change. The changes I foresee include:

  • A need to start automation right at the beginning of the SDLC and ensure nearly all test cases are automated
  • All the QA tasks would need to be aligned to ensure a smooth CI/CD cycle
  • A high level of collaboration would be needed to ensure there is continuous monitoring in the production environment
  • All the QA environments would need to be standardized
  • The testing mindset changes from “completed testing on this module” to “What are the business risks that have been mitigated in the release candidate?”

The key to all the above changes is automation. DevOps and automation go hand in hand—without one, the other won’t work. This is where smart people and tools can help in bringing shorter and more dependable release cycles.

I worked at a company where there was minimum collaboration between the development, testing, and operations teams. We were seeing a lot of gaps in the SDLC cycle in terms of more bugs getting into production, unstable CI/CD infrastructure, and less visibility into production monitoring and statistics. Noticing these gaps, the team decided to implement a DevOps practice, and everyone started collaborating and contributing in each phase of the SDLC. This started from requirements gathering and extended all the way to production release and monitoring.

This increased culture of collaboration started having positive effects in team morale, more automation coming into place, and the whole team starting working together as one unit.

3. QA as a Service

Just like how we have SaaS (software as a service), IaaS (infrastructure as a service) and PaaS (platform as a service), we now have QAaaS. Over the past few years, this has become a popular way for companies to meet their software testing needs.

Companies that have QAaaS solutions make different aspects of your software testing process easier by providing:

  • Test case management and maintenance solutions
  • Test automation tools with less need for coding
  • Robust test reporting features with logs, video recording, and screenshots
  • Easy integration with CI systems

Resources such as mobile phones, virtual machines, secure networks, and human testersIn the past seven years of doing automation, one big problem I have always run into is having to maintain my own server machines to run my automated tests. The server machines have different problems, like running out of storage space, a flaky internet connection, slow processing speed for the number of tests that are being run continuously throughout the week, and the need to be frequently updated with the latest OS, build tools, security patches, IDEs, and so on. These kinds of problems could be solved with QaaS providers, as they can do all these activities for you, so team members can concentrate on more critical tasks.

In the future, QaaS providers are going to think about more ways to improve their offerings to stay ahead of their competitors, which will benefit software testers, too. 

4. The Internet of Things

With the advent of wearables, smart homes, connected cars, and other cloud-based technologies, the internet of things (IoT) has become a big topic of discussion. The amazing thing about these devices is that there are so many communications and integrations taking place every second.

Let’s analyze, on a high level, the different communications taking place with a wearable fitness tracker. First, the mobile app and fitness tracker need to communicate with each other. The data captured by your mobile app should seamlessly integrate with the desktop, mobile web, and tablet versions of the app, and all these communications across devices should happen in real time. All the data travels to and from the cloud, the devices, and the apps. People also can form groups and compete with each other via the app, so these calculations and communications need to happen in real time, too. Based on different events triggered, the proper notifications need to be sent to the right user at the right time. All these communications happen over the internet.

Imagine you are a tester testing this fitness tracker. Where do you start? How would you design your test strategy and approach?

The IoT introduces its own level of complexity into software testing. It is going to affect the way we think about testing, particularly because more concentration needs to be given tointegration testing than the old approach of testing each component separately.

For example, when I was working for a travel booking company, we came up with a new app for the Apple Watch built using WatchOS (when it was first introduced by Apple). The application had limited but useful functionalities, like the ability to view notifications and rewards information, reservations, and locations of hotels, flights, and car rentals. While testing this application, I noticed that when the Apple Watch app was connected to the same app on my phone, there were weird issues: When I minimized the app on the phone, the Apple Watch went blank, showing only a black screen; but when I opened the app on the phone again, the black screen disappeared, and the Apple Watch app behaved normally.

This is a perfect example of why it is important to do integration testing. With more and more devices coming into the market, this is going to be critical for organizations and users.

5. Robots

There are now robots that do testing. Some people may think this is scary in terms of job security, but I still believe that the human mind can never be replaced. There would still need to be humans to monitor the robots to ensure they are doing what is expected of them and to actually program them to do things. How far is this scalable? Only time will tell.

In summary, advancements in technology have already started influencing the way we are doing software testing. It has also caused companies to rethink their organizational structure: The QA team is moving toward being embedded within the development team, and the whole team will own quality. It also will become important for the research and development group to be in frequent interaction with the development group in order to make products smarter and more useful for their customers.

There will also be a need to have procedures in place to handle large amounts of data, as well as appropriate computing power to comb through this data to get useful information and feedback. Finally, to make all this a reality, companies need to adopt lean processes and be much more transparent to prevent being an obstacle for innovation. Lean transformation will be vital for effective growth.

It’s important to change our mindsets about how we view systems and to test them accordingly. We can choose to either ignore it or embrace it. What will you do?

User Comments

30 comments
Raj Subrameyer's picture

This is a great clarification thanks for asking. When I mentioned the sentence “it’s important to change our mindsets about how we view systems and to test them accordingly” I was re-iterating the points I have already discussed in the article such as

  • Changing our thinking about automation in terms of viewing it from the perspective of a continuous process right from the start of the SDLC till the end, instead of viewing it as one single/seperate task. This is really important especially in a DevOps environment
  • Changing our mindset on how we view QA environments. Instead of seeing it as something that only QA people may use, we need to see it through the lens of the whole team on how anyone could use it and thus needing to make it more standardized so that everyone is aware of the environment configuration at any instant of time
  • Changing the way we think and question the product from saying "I have completed testing on this module" to "These are the business risks I have mitigated in this relese cycle". Thinking about the product more on the basis of risks
  • Focusing more on the importance of doing integration testing especially in an IoT environment where there are so many devices and applications communicating with each other, instead of just one module being tested separately
  • Keeing a more open mind to new tools and technologies that can aid in the overall testing effort rather than viewing them as an obstacle

And so on...

 

If people are already doing this then great, if not I wanted to point that out. That is it.

Thank you so much for reaching and giving feedback.

-Raj

December 28, 2018 - 1:41pm
Ard Kramer's picture

thank you for your reaction, but you are repeating your article and that doesn't really answer my question:

Isn't it obvious that using the available tools is a smart way to do your job? But shouldn't your mindset be that we have to be aware of the downside of tools (which I experienced in a very personal way in a hospital, where doctors were over-relying on tools: "I don't see anything on the scan so there is nothing" and two weeks later the appendix needed to be removed because there was 'something'))

Are tools not a part of the confirmation bias and confirms what we already know or like to hear, see and experience? (You probably heard about the difference between testing and checking)

It is great that a lot of problems testers (and team members) where facing are solved by CI/CD but this doesn't mean that testing is done better?

The mindset of looking at risks is already in the testing world for more than 20 years but still hard to tackle by testers (and non-testers) as I experience every day. (There is so much to win with this mindset!)

If we really want to improve testing we should be focusing on the mindset and let we give the tools the status they deserve: tools facilitate testers and testing. Nicholas Cage brought this back to a great quote: "mastery before automation". If we don't know what we are doing (during testing), we are not delivering the right information to our team, the business, and our customers.

So thank you for your article it sharpens my mind how people are looking at testing.

December 30, 2018 - 5:28am
Raj Subrameyer's picture

Great points and I agree with your thoughts and thinking. Here is a quick add on to your comments-

Isn't it obvious that using the available tools is a smart way to do your job? But shouldn't your mindset be that we have to be aware of the downside of tools?

I totally agree. I think using tools to aid in testing is definitely the right approach but are sometimes not that obvious to people, as there are always a few who do not like change and are accustomed to the same way they have been doing things. For example - If you are logging into an application 40 times a day to test if it is not broken, why not automate that scenario and in parallel we can use our creative minds to explore other aspects of the application. This example is in the context of automation but can be generalized to any tools that can aid in the overall testing effort. At the same time, we need to mindful of what tool we are using for what purpose. I have often seen people using some tools just because other people are using it without evaluating the need, cost, time and effort.

Are tools not a part of the confirmation bias and confirms what we already know or like to hear, see and experience? (You probably heard about the difference between testing and checking)

Tools could be part of the confirmation bias, Yes, but sometimes they may also uncover things that we do not know about the product. This in turn helps us out even more in our exploration. For example - AI based tools can help in analyzing large amounts of unstructured data and identifying different patterns and relationships which would have probably been difficult to do manually (it is possible by humans but very time consuming). Confirmation biases occurs with and without tools, so it boils down to using the right tool for the right context and measuring cost vs value of the time and effort.

 

It is great that a lot of problems testers (and team members) where facing are solved by CI/CD but this doesn't mean that testing is done better?

I do not believe a lot of problems testers are facing are solved by CI/CD and yes it does not mean testing is done better. I think CI/CD actually brings in more complications to not only testers but the whole team, but on a high level it provides value as it helps teams to release faster to meet growing customer demands.

The mindset of looking at risks is already in the testing world for more than 20 years but still hard to tackle by testers (and non-testers) as I experience every day. (There is so much to win with this mindset!)?

Great point and yes I agree. Risk Based Testing is not something new and has been around for a while. But the main problem is, in spite of knowing the value of having a risk mindset people still fail to focus their testing on risks. At least based on my experiences, i have worked in more than 6 companies and only 1 company was doing Risk Based Testing. It still amazes me that people are not focusing on risks and not questioning the product based on that. This is very similar to working out in the gym, everyone knows it is healthy and may lead to better lifestyle and living but majority of us do know do it :-)

I want to thank you for taking the time to give great insights to the article through your comments. The readers would definitely find something useful through our conversations. Thanks again.

-Raj

 

 

 

 

January 2, 2019 - 4:56pm
Guillermo Chussir's picture

I see robots (automated testing) as a huge improvement for testing, and for testers. Humans willl invest less time doing repetitive tasks, and more time doing exploratory testing.

January 8, 2019 - 4:31pm
Raj Subrameyer's picture

I agree. If there is any tool, AI, robot or anything that can help to automate mundane tasks testers do on a daily basis and free us time to do creative exploration, it will definitely help. Thanks for reading and your comments.

January 9, 2019 - 10:14am
Datta More's picture

Nice articale. Thanks for sharing information to QA community.

February 1, 2019 - 3:18am
Raj Subrameyer's picture

Thanks so much for reading and your valuable feedback. It means a lot.

February 7, 2019 - 5:24pm
Ruby Simmons's picture

Thanks for the Great Article.

 

September 3, 2020 - 7:50am
Raj Subrameyer's picture

Thanks so much for reading it and giving me feedback. Really appreciate it.

September 9, 2020 - 11:01am
Bruce Wen's picture

"This problem can now be solved by using dynamic locators the AI extracts from the Document Object Model (DOM). In real time, the AI analyzes all the object trees and properties from the DOM and can create a list of different attributes for a particular element. So, when an attribute of an element changes, the AI tries to go to the next attribute in the list to locate the element and keeps going through the list until the element is located. The tests are more stable, the authoring and execution of tests are much faster, and the tester has to spend less time on maintenance."

Are you working on GUI automation testing?

December 26, 2020 - 11:36am

Pages

About the author

StickyMinds is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.