When I started my testing career I was first working on a desktop application that handled server storage. Back then I had no idea what professional testing would look like. I literally fell into software testing, but I really enjoyed what I have seen. Having the ability to dig deep into a system to understand the underlying tech as well as the business and customer side of things. After the first years in testing I fast forward to the web and mobile applications.
Desktop, web and mobile applications are nothing new to the software testing industry. For each category, there are plenty of tools on the market that support test automation and the testing activities. Furthermore, there are many great blogs, courses and more on each topic available covering every aspect of it.
But what will the future of testing be? This is a question that I have been asking myself for some time now. So I started a little research and talked to people from the testing community to get an idea what our future might look like. Let’s take a closer look.
Big Data and Machine Learning
One of the many topics that I have found during my research is big data and machine learning. Well, both topics are nothing new or are topics that will come in the near future. However, those topics are already relevant for many companies working and handling big amounts of user data.
But looking at the topic from a testing perspective, there are things that will change the way we will do testing in the future, when working with big data and machine learning algorithms.
First of all, both are really technical topics that require skills in programming and technical understanding of complex architectures. Second, it will require skills in handling big amounts of data in databases and last but not least knowledge about algorithms is needed, too.
From my perspective, the big data topic is easier to handle than the machine learning part and will not influence our testing craft like the other topic. Handling data in databases is already part of our daily work life, the only thing is that the amount of data will be much bigger and how the data is structured and saved across systems.
Machine learning is a completely different topic. If we take a closer look at machine learning, it comes down to learning more about algorithms. The implemented algorithm and the corresponding machine learning system has some intelligence. The goal is that the machine will learn from the various inputs and decide on its own what the output will look like. If you want to test machine learning software you have to learn all about the tech stack and the underlying algorithm to understand the system.
But there is another part of machine learning that makes it so interesting for us as software testers. Machine learning or the software that is using machine learning, can help us to better test software. There are already companies on the market who offer machine learning capabilities for software testers. For example, there are automation tools that are able to adopt the test execution to the current system under test. If there is a slower internet connection available it can increase the wait times to prevent flaky tests. Or there are tools that are able to generate test cases based on the user behavior. Some other tools are able to scan the whole application and to offer XPath options to identify objects for automation, or there are tools for test data generation based on user inputs.
As you can see, big data and machine learning have two sides to keep in mind for the future. The one side is, when you test an application making use of big data or implementing a machine learning algorithm. Or the other option when testing tools make use of machine learning to help you in your testing activities.
Blockchains
You may have heard the phrase to the moon in combination with bitcoin or any other crypto currency based on the blockchain technology. Well, blockchains are much more than just crypto currencies. Crypto currencies is one of the many possible products based on a blockchain.
The main idea of blockchain technology is that it’s a decentralized distributed ledger. A blockchain is a sequence of blocks chained together. Each block contains a hash, hash of the previous block and the data itself. If the hash of the previous block is not correct, the blockchain is not valid anymore and got manipulated.
Blockchains offer great security features such as proof of work, consensus and smart contracts. If you want to know more about blockchains and the technology behind, I recommend you, to read the paper from Satoshi Nakamoto (Bitcoin: A Peer-To-Peer Electronic Cash System), because this article is just too high-level to explain blockchain in detail.
As mentioned before, blockchain technology offers plenty of new products and can have an impact on our lives and the industries we are working in as software testers.
If we take a look at blockchains from a testing point of view, blockchains are software. The known software testing techniques are also valid for blockchains. But, the focus and the priority on the testing activities will change.
It’s much more important to understand the underlying technology of the blockchain rather than automating things first. When testing blockchains the non-functional testing activities such as performance, load and security testing plays a much bigger role. However, testing the APIs, the integration with other parts of the system as well as functional testing is still important.
If you ever want or will work as a software tester in the blockchain world, be prepared for a pure and heavy technical field of testing.
Security
The third topic that I want to share with you in this article is an evergreen in the software testing industry, it’s security testing. It’s an evergreen, because it gets mentioned for years now in the industry that it’s so important to do but looking at the media, there is almost every week a data breach reported by a company where millions of sensitive user data has been stolen or systems have been hacked.
Security testing isn’t easy. It’s really hard, technical and complex. Modern systems are interconnected with many other systems via APIs and networks. The systems are usually built with many different programming languages and tools. Each part of the system can be a potential problem, leaving a door open for attackers.
All of us use systems like online banking, cloud storages and other media where we for example save our photos and share private information with others. Nobody wants to get hacked or lose its data. And therefore, companies must invest money and time in security measures from day 0 of a new project. If they are not doing it and get hacked, it can cause the complete company to go down the drain and to lose not only its reputation but also lots of money.
Whenever I work on projects I try to check for some basic security things like XSS (Cross Site Scripting) for web applications or checking OWASP foundation page for the current top breaches to look out for. However, this is not enough. I am not a security testing expert and whenever I work on a project I ask the product manager for security audits and other security measures to move the focus towards these topics. And you should do the same!
Looking into the future of our interconnected world, I see security testing as THE most important topic to handle. Therefore, it might be a good idea to read about the topic, to attend workshops and to learn more about it.
IoT & Smart Devices
The fourth topic that I see becoming more and more important for us as software testers are IoT (Internet of Things) and smart devices. More and more devices are getting connected to the Internet. From fridges to e-bikes to little sensors in a field of corn.
Next to the IoT devices, smart devices such as smart speakers, glasses, fitness bands, watches, cars, light bulbs or lawn mowers (just to mention a view) are already in the market, used by millions of users but they are still on the rise offering more and more “smart” features. All devices are constantly collecting data about you or around you and sending them to a backend system for further processing.
Looking at these devices from a software testing point of you, they are a nightmare to test. As mentioned before, they are not only coming in different shapes and sizes, some of them offer a user interface some not. Some of them fit into a pocket, some not like a car.
All of them are powered by software systems connected to many different APIs using different technologies which already poses enough challenges to us. But next to the software, there are two other factors that play an important role when testing for IoT and smart devices. The first one is the hardware of the devices. We as software testers have to gain new skills in working with hardware devices. For example, we must be able to flash a hardware device with a new software version, we need to connect to the device to capture log files and many more things to cover.
The second factor is the location. We can’t test in an office anymore. If you have tested a mobile app before, this is nothing new for you, but with IoT and smart devices you have to test the hard- and software combination in the wild. In the location where the product is being used.
Imagine you test an IoT sensor that collects weather data in a field of corn. The location will have a huge impact on your testing. There are different temperatures to keep in mind. There might be rain, sun, wind or even wild animals that can step on top of the sensor. There are so many different scenarios to plan upfront.
And while writing this article I got push notifications sent to my mobile phone from my IoT weather station in the garden and it makes me smile, because I like this kind of information and I think we are just at the starting point of connected IoT and smart devices. There is more to come and more to test.
Shifting More To The Left Than Ever Before
I hope I haven’t scared you too much when looking into the future of software testing and the mentioned technologies. As I mentioned earlier, the mentioned technologies are my point of view that might have a big impact on the software testing craft. But looking at the four parts in this article, one thing just came to my mind. We as software testers need to shift even more to the left than ever before.
The systems are already complex and will get more complex in the future. Therefore, it’s important as a software tester to be part of every product discovery phase of a new system or product to give feedback on the planned features. It’s also important to share your testing ideas on the system and to talk about risks. If you haven’t done so far, here is your task and take away from the article. No matter what you are testing, go and talk to your product manager that you want to be involved in the upcoming discovery phases to add testing value in this early phase. You might know think who should test the software while I am working in those early phases. Well the answer is simple, the team. Everybody in the team should have a quality mindset and should be able to test the system with your help on their own. Don’t put yourself in the position of becoming the “bottleneck”. Nobody will benefit from this.
The Future is Bright for Software Testers
Glad you made it to the very end of this article. To summarize the last +2000 words in one sentence. Don’t fear the future of testing, as long as there is software running on a system our testing future is bright.
#HappyTesting