The main approaches to QA Automation are:
The public interfaces to classes, modules or libraries are tested. A variety of input arguments are also used in order to validate that the returned results are correct.
Graphical user interface testing:
A testing framework generates user interface events, such as keystrokes and mouse clicks. Also observed are the changes that result in the user interface, in order to validate that the observable behaviour of the program is correct.
API driven testing:
This is a testing framework that uses an interface to the application in order to validate the behaviour being tested.