Natural Language Programming can get a bad rap for making something “codeless” but there’s actually a lot of code involved!
Any time there's a mention of performing a task "codelessly," there's inevitably an onslaught of scoffs and shaking heads. It's true that nothing is 100% codeless; there's code behind the scenes making it work. Natural Language Programming (NLP) - or Processing, same thing, different name - can be used in a couple of different ways, therefore there are three different kinds of algorithms it can be built on. We'll get into those types of NLP later and focus on the point of
I'm going to start with something painstakingly basic (if you're a programmer): computers have their own language called Machine Code, and it is definitely not easy to understand. The inaugural first program that everyone writes first when coding is the following:
And then the terminal prints: Hello, world. It's a pretty basic piece of coding that even someone who can't code knows how it works, but how does that simple command look in Machine Code when executed on Linux? Well, it's kind of terrifying.
This definitely makes no sense, even to experienced coders (if you're a coder and actually understand Machine Code... I bow to you, you absolute genius). Such programming languages like Java and Python exist so we can communicate with computers more easily. However, it's still not intuitive. Python is considered the best coding language to start with as it's user-friendly with its simplified syntax and readability, but it still takes time to learn and get used to, and you need to allocate plenty of time for threatening your computer when your code fails (what, no, I don't have experience with that).
NLP strives to make the task of communicating with computers easier than "speaking" in normal coding languages. Instead of tackling impossible Machine Code or learning how to iterate over a list with for loops, you can simply direct the software to "click on this" or "wait for 10 seconds" without learning the specifics of code.
However, NLP isn't as easily understood by the computer as code, so there's a lot of heavy-lifting that goes on behind the scenes. There are two steps to the computer understanding the NLP: data preprocessing and algorithm development.
Data preprocessing "cleans" the entered command so that the computer can understand it better by putting it in a more understandable format. This can happen in a few different ways through tokenization, stop word removal, lemmatization and stemming, and part-of-speech tagging. Tokenization breaks the command down into smaller chunks. The stop word removal removes the most common words in the command (like "the" or "and") so only the most informative words remain. Then lemmatization and stemming take the words back to their root forms ("processing" to "process"), and those words are marked as their part of speech with part-of-speech tagging (not the most original name out there).
Once the command has been stripped down to its bare bones, it's ready to be processed as three different types of NLP. One way that this is done is through keyword extraction, which will focus solely on important keywords. However, this isn't a very accurate method. For example, a user is interacting with a chatbot and asking for help with adding an item to their cart. But let's say that the user uses the word "trolley" instead of "cart." The chatbot wouldn't know where to send the user. It can also use a rules-based system that's a bit more accurate than keyword extraction. This system categorizes the existing vocabulary using linguistic rules and definitions. So it doesn't just look for the keywords that it's been told to look for, like "cart," but also "trolley" since they're synonyms. But this means that it's still limited by what rules were provided.
The third type is machine learning-based NLP. This is much more intelligent and understands speech in a way that's closer to how a person would with all the context. ML-driven algorithms understand patterns after repeated exposure to human language. SentiSum uses the example of a customer talking to a chatbot, saying that they don't want a refund on an item, but instead "swap it out" for a different one. Neither keyword extraction nor a rules-based system would pick up on the words "don't" or "swap," and would instead focus on the word "refund," sending the customer to the wrong place.
Of course, NLP has more uses than chatbots, but it was a good example to explain the different kinds. The type of NLP that Virtuoso uses is ML-driven (like our self-healing!) so the software understands exactly what it's being asked to do. When you tell test automation software to "click 'add to cart'," an ML-driven algorithm (sometimes paired with Artificial Intelligence) translates that into more understandable code for the software.
Now with NLP, things like test automation aren't restricted to people who have spent years learning how to code, but the goal isn't to water down test automation: it’s to make it accessible to everyone and still retain the power that coders expect. NLP makes test authoring much faster (9x faster, we've found), which means that users of NLP test automation (like Virtuoso!) can release their product earlier. This also means that testing teams aren't restricted to software engineers, so they can focus more on what and how they should test instead of how to write the tests themselves. Now, this isn't to say that Virtuoso is 100% codeless! We have an advanced mode so that said software engineers that have spent years honing their craft can wiggle in between the tests and add some code so that each step is perfect. Sound like the test automation for you? Get a look at our advanced mode with our sales engineers at a time that's the most convenient for you by booking a slot. See you there!