Yes, automation is definitely a big subject ! I’d say software development in general is about automation - we are writing software to automate things so we don’t have to do them manually. But I guess in this context we are taking “automation” to mean automating the things involved in the various aspects of the process of software development (or even just in using software we don’t build ourselves).
With regard to the more specific topic of test automation, there are two closely related things I am very interested in :-
Automation of the creation of tests (as opposed to automation of the running of tests). Automation of running of tests gives us some savings over manually running tests, but there can still be a lot of work in creating those automated tests, eg writing or recording scripts etc. If we can automate the creation of the tests then we can step up to another level of productivity - and literally have thousands and millions of tests, rather than a small number that we can create by hand. Relevant techniques include things like model based testing, property based testing, test data generation.
“Self-testing” systems, where we use the actual functionality of the system to help test itself. A simple example of this could be some kind of “round tripping”, eg if there is an import function in a system, and also an export, then if we first import something, then export it, we might be able to do some kind of comparison of the original data to the exported data and hope that they have some kind of correspondence. We have found (and made) this kind of opportunity in a number of our systems that have enabled us to more easily check whether the system is doing the right thing.
Another more broader automation topic that I am interested in is the role that DSLs (Domain Specific Languages) can play in software development. We have had some success in this area where we have provided a DSL that our business clients use to specify their systems, from which the working system is automatically generated. This allows the business people to concentrate on defining the business logic, and the developers to concentrate on building the translator/interpreter/compiler for the DSL.
I’d be very interested to hear what other people have done in any of these areas. I’ll also make some specific posts on these topics giving some more detail on our experiences and what we have done.