Automated functional testing tools typically drive the UI, mimicking the actions of a human, and then check for expected results. Record-playback tools let a user record interactions. This creates a literal script that can be played back again and again. The drawback to record-playback tools is how they work; they can often fail when a code change alters the appearance of a screen, making it different than the expected results. Because of this, many of these scripts are stripped down and made less literal.
Checking the text on a button, instead of the entire window or webpage, makes the tests less brittle. In that process, we replicate the other approach often used with these tools: keyword-driven tests. Keyword testing is often more robust and less error-prone because it is able to look at the specifics of interactions, rather than every aspect for each line in the script.
In this area, there’s an important question to ask: What type of application am I testing? Are we looking at a compiled desktop application, a website, a contained web application, a mobile website or a mobile application? Each requires a different approach and different tools. Native mobile applications can be extremely challenging to automate or test in a desktop; mobile web applications can run in a desktop, but may look or behave differently.