An examination of artificial intelligence techniques applied to software testing.
The idea of computers testing software with little or no human intervention intrigues me. Software development (and other creative pursuits) is arguably an inefficient and unpredictable endeavour. It’s rather difficult to design a perfect system and produce it accurately in one step. We need lots of back and forth in terms of sharing ideas and then improving them until we have something which could work. Then we need some iterations to translate this idea into code and probably lose something in that translation along the way. After this we must verify that we have achieved our goal with more communication and rework. Thus, there is something beautiful about cutting ourselves out of the loop and increasing computer independence, proceeding towards an efficient and natural process of software generation.
A forum discussion on Linkedin triggered me to dig deeper into how close we are to replacing testers in software development. As a lead tester, I find it a fascinating challenge. Although we have formal methods of testing software, a lot of testing in the field is, I believe, lead by gut instinct. It could be said that the best testers are the ones who intuitively are able to sniff out defects and weaknesses. But where does this intuition come from? And how can we replicate it in machines? Or will it come down to brute force approaches with thousands of inputs and outputs to achieve the same goal?
In future postings, I intend on unpacking what there is to know in this field and then speculating on where it could be headed and how it can be applied.