ThoughtWorks Tide Rides the Testing Wave
The product, expected to be released in February, will be a set of tools that enable developers to create "functional tests, separate from the code, in a way that the users could use," said Neville "Roy" Singham, chairman of ThoughtWorks. Tide, the code name for the product, stands for "Testing IDE [integrated development environment]," a company spokesperson said.
In essence, Tide comes from the need to manage functional tests independent of the way developers write software, Singham said. That idea is something ThoughtWorks worked on with programmer Ward Cunningham, who invented the concept. Cunningham created Fit, the Framework for Integrated Testing.
"We said, Wouldnt it be great if businesspeople could keep their testable functional requirements and then, when I change technologies, I can keep those functional requirements in the test form?" Singham said. "That would be a great thing for the business. Fit happened, but we never finished working on Fit together to make Fit tests easy or to reuse them so you can morph them. What happens is, over time, these things become brittle, just like code."
IDEs were create to enable developers to update and manage code and so the code could evolve quickly, Singham said. "We needed a set of tools that would allow us to evolve functional tests But in order to run these tests they have to be somehow tied to coding," he said.
Jim York, founder of FoxHedge, an agile development consulting firm, said he would welcome more tools based on Fit, such as FitNesse.
"FitNesse is a great tool for getting better team collaboration and eliminating waste," York said.
Singham said the problem of how to store testable requirements has plagued software for 20 years.
"The tools that are out there right now primarily are things like Mercury, which is the leader in the testing space," he said. "They store it in a very bad way to make it changeable. So if I change something like the order of a screen, all of a sudden now I have to go back and change my test to be able to make my test work with this new screen order. Thats not what I want to do. I have an abstraction of the idea of a functional test."
Singham said one of the big breakthroughs in the coding space was the unit test, which is actually inside the code itself.
"Its not a functional test, but its at a class level inside software," he said. "I write a test that may test a very granular piece of software. Thats called a unit test. There are these things called functional tests that give me a business requirement and test it. And a tool like Mercury could measure something like [the fact that] the interest between 13th of December and 14th of December should result in $13.14 on a $100,000 loanthat kind of granularity of a functional test. I want to know if in this software, if I run this specific piece of calculation, it will result in that specific set of requirements."
Typically there is an impedance mismatch, Singham said. The developer has functional tests in one place and business logic code in another, "and somehow they have to integrate. You need some form of loose coupling, so what Tide is going to be is a product that begins to attack that problem. It will have instrumentation around functional tests that is loosely coupled to the creation of code and it basically will disintermediate and wipe out the Mercury style of testing in the long run, because Mercury has the wrong approach to functional testing."
In the Release 1 candidate of Tide, which will come out in February, "We have not solved all these problems," Singham said. "It is step one to solving some of these problems. This is a testing paradigm shift: long-lived functional testing assets independent of the physical deployment of the software."
ThoughtWorks has other products in various stages of development, including Mingle, a project collaboration and management tool, and CruiseControl, a continuous integration and deployment tool.
Check out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools.