![](https://habrastorage.org/getpro/habr/upload_files/c7e/fc3/f5c/c7efc3f5c309f87d173c02cea1e32982.png)
Nothing and nobody will escape oblivion. Whatever you may say, the history of mankind is a history of automation and the subsequent evolution of workers. This happened both during the first industrial revolution and during the second. The same thing happened with digital revolution. Now machine learning and artificial intelligence are being implemented everywhere. What is the future of software testing?
The almighty automation
People work less and less with their hands. More and more often they maintain systems that do everything for us. It's amazing, isn't it? The human is generally ill-suited for work because we were not made for this. You cannot say the same about machines, by the way.
And we were doing fine all along. Although people still work with their hands sometimes, this is no longer an absolute necessity. Machines successfully automated all the monotonous activities. People became operators of these machines, which in combination with the conveyor created unprecedented production capacities.
And we continue this process at a crazy speed and at the same time we make tasks more complicated! Google Assistant can already make a reservation for you, and Yandex autonomous delivery robots will deliver food to your door!
![](https://habrastorage.org/getpro/habr/upload_files/4cc/803/26c/4cc80326c2d3981c3db5cb5ee3854723.png)
Let's automate!
Of course, the software testing undergoes the process of automation as well. In general, some of its types are already perfectly automated. For example, the component testing - thanks to the unit-test mechanism - exists independently and reports problems without human intervention. Of course, it’s not that easy. First, you need to write the tests in such a way that they cover the implemented functionality well...
It's not as easy as we might think. It is difficult to imagine a similar automation of the localization testing. Although... I tried to Google "localization testing automation" - didn't find anything. Then I added "machine learning" to all this and immediately something exciting showed up.
One Master of Engineering carried out a research where he tried to answer the question - can we use AI to improve automation of localization testing? The outcome of his research - the NEAR (Navigate, Extract, Analyze and Report) prototype system. Based on the results, the prototype successfully coped with the task. It took around 5 minutes to test 3 apps for localizations bugs. Well... I think I'll go get some coffee...
By the way, NEAR is mainly a compilation of existing tools - cloud-based AI services. For instance, Google Cloud Vision, Google Natural Language Processing and IBM Watson Natural Language Processing. So, this all has good potential for automation.
Of course, it's not that simple. Can you imagine the automation of usability testing? Yes, we have a bit of machine learning here as well. I won’t be original here and will just go down the path of least resistance – "usability testing automation machine learning". And here I found something again. No, this time no one is suggesting replacing people with AI. According to the article, machine learning helps us enhance the analysis of the collected data enormously. Wow! I never would have thought...
![](https://habrastorage.org/getpro/habr/upload_files/afa/c8f/b2b/afac8fb2b785235d3e2184724513ed85.png)
You had to fight evil!
Yes... it sounds depressing. Cheer up! This is not the end. It's not only about automation. There are various tools that help reduce the number of errors even at the development stage.
For example, static analyzers. They analyze the source code and issue warnings for various errors. Static analyzers can detect a wide range of various code problems and potential vulnerabilities. If you want to learn more about what you can find with their help, then read this article.
So, we cannot say that testing tool evolution changes the rules of the game alone. Cultural development and software tools improvement make no less contribution to this process. Companies keep introducing more and more tools.
If you think that it's all about static and dynamic analysis, then you are far behind the times. For example, Visual Studio 2022 got autocomplete, which can add entire lines of code for you! And this is just the beginning...
![](https://habrastorage.org/getpro/habr/upload_files/c1c/c1f/933/c1cc1f93357143139e5a4fd90670b71b.png)
Is it time to reduce the staff?
What to do in this situation? Everything is not as bad as it might seem at first. Yes, thanks to code analyzers and other useful tools, fewer and fewer errors get to testing. But there is a catch - bugless code doesn't exist.
You can hire thousands of testers, but still, you may fix one problem and get more and more new ones. And this search-correction circle may be vicious. You will always find more and more problems. How so?
The code is an extremely complex structure of millions of instructions. If your project has been existing for at least a couple of years, then most likely no one understands the code completely. Yes, something works somewhere, here is a crutch factory, and there are amazing architectural solutions over there... And in all this chaos, we still need to look for what causes undefined behavior!
Now let's add useful tools one by one. First, let's add static analysis. Now we can find various typos, errors, the incorrect use of methods, etc. Excellent! So, have we reduced the burden on testers? Nope...
You still have a ton of problems of various kinds. Static analysis covered only certain types of problems. OK, let's add dynamic analysis! Congratulations – now we have fewer memory leaks.
Can you stop here? Not quite. Even if you add everything that I mentioned, there is still some work for you. It just means that now you find a fairly large number of different problems automatically. This does not mean you do not need testers at this point. This means that you will find more problems, thanks to searching in a wide range of various typical problems.
![](https://habrastorage.org/getpro/habr/upload_files/ad1/20e/3ff/ad120e3ffa63f97d2ccdb605259dae02.png)
The evolution of the profession
So, what to do if you want to be a valuable employee, and most importantly, stay on top of things? Evolve! Do not try to fight automation but understand why and how exactly it works. As I mentioned at the very beginning, you can't get away from the process of automation.
You will be much more valuable as a specialist who understands the internal structure of these systems. And it's fair. So, I wish you to be patient and study the basic theory of machine learning :)
Additional links
Advertising
By the way, our company is developing a static code analyzer. In short, this is a tool that can detect the code bugs for you. If you need proof that it is able to find something for you, then here is the link. Try it for free and see for yourself :)
![](https://habrastorage.org/getpro/habr/upload_files/cf5/e0e/f85/cf5e0ef859d03c9c2e393e949d85387e.png)