Interview with Alberto Savoia on AgitarOne, a unit-testing solution

Agitar recently released AgitarOne and InfoQ sat down with Alberto Savoia, CTO, VP of Engineering, and co-founder of Agitar to talk about the new product. AgitarOne is a unit-testing product that provides generated JUnit tests to cover legacy code or to provide additional regression tests. AgitarOne also includes Agitation, a process that will dynamically generate and run test cases by testing boundary conditions. Code coverage, code rules, and continuous integration (using CruiseControl) are also built-in and all results are displayed on the provided dashboard.

First, Savoia described the key differentiator AgitarOne was for a company that was already behind unit testing with JUnit / TestNG and CruiseControl.

Almost all our customers are already believers in developer testing and are already using JUnit, but want to achieve greater efficiency and more thorough testing. We don't replace JUnit, we complement it. You see, testing is a combinatorial problem; we have found that it takes three to four lines of JUnit for every line of Java code in order to achieve 90-100% code coverage. Human beings are great at tasks that require creativity, insight, and domain knowledge; while computers are great at tasks that require repetition, exhaustive searches, etc. AgitarOne allows developers to focus on the aspects of testing that require human intellect and takes care of the bits that will benefit from automation. In my opinion test automation is not a luxury, or an option, but a necessity. Without it, you can't be as thorough or efficient as you need to be. I have a new favorite slogan: "Exhaustive testing without exhausted developers"?.

Next Savoia was asked if a company is just getting started on unit testing, would he recommend focusing on JUnit / TestNG first and then adding AgitarOne, or are they independent of each other?

AgitarOne is designed to encourage and leverage JUnit usage and developer interaction. I believe that every professional Java developer should know how to write tests and should write unit tests for their code. JUnit, and other frameworks and extensions based on it, are very easy to learn and use - there’s really no excuse for not knowing them or using them. For a developer, being able to test using JUnit, is like for an accountant being able to add using a calculator - an essential skill. But to achieve maximum effectiveness, an accountant takes advantage of tools like spreadsheets. The spreadsheet does not replace the accountant, but it helps achieve much greater efficiency by using a computer to do the kind of tasks that computers do best. AgitarOne does for developers what a spreadsheet does for accountants; it allows them to do their job with more effectiveness, efficiency, and thoroughness. I would not dream of hiring an accountant that does not know how to add, or have an accountant working for me without the benefit of a spreadsheet. Similarly, I expect developers to know how to test manually, but to also have the tools to automate and help them with the aspects of testing that benefit greatly from automation.

The discussion moved to integration of AgitarOne into an existing codebase. AgitarOne ships with an Eclipse plug-in, but we asked if there were any plans for integration into other IDEs such as NetBeans or IntelliJ.

AgitarOne is designed to integrate seamlessly, and at any time during the development cycle, and I believe we have made it extremely easy and fast to deploy. The Eclipse plug-in downloads and installs in less than one minute, and you can have your first generated test in another minute or so. Currently we have full and seamless integration with Eclipse and we are exploring ways and partnerships to cover NetBeans, IntelliJ, and other IDEs.

Lastly Savoia provided what he thinks is exiting about the future of software testing.

To me, the most exciting thing about the future of software testing is the excellent prospects for what I call "The Developer Testing Revolution" - the idea that developers should take responsibility for unit testing their own code. Thanks to JUnit and XP (and other Agile methodologies) we have a great chance of making developer testing the rule rather than the exception. But I don't think this will happen without new tools and technology to help the majority of developers cross that bridge. I am thrilled that, with Agitar, I have an opportunity to play a role in the success of this revolution.