InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

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

Posted by Rob Thornton on Nov 28, 2006

Sections
Development
Topics
Unit Testing ,
Java
Tags
Agitar

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.

AgitarOne version 4.0 is available immediately on Windows and Linux.

No comments

Watch Thread Reply

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.