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.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Jon Arild Tørresdal on Sep 03, 2009
Last week Jeremy D. Miller announced a preview release of his StoryTeller project: an open source .NET project for “Executable Specifications”. InfoQ sat down with Jeremy and asked him about what StoryTeller is, how it differs from other tools like Fit/FitNesse and Cucumber, and what the future looks like for the project.
InfoQ: How would you describe StoryTeller?
Jeremy: StoryTeller is a toolkit for creating "Executable Specifications" with .Net for systems built with .Net. Imagine a world where you as a developer get detailed requirements in a format and mechanism that is readable by the business facing people, completely devoid of ambiguity in terms of what the correct behavior is, and can also be used as an automated test within your team's continuous integration processes. StoryTeller makes this possible in the .Net ecosystem.
InfoQ: What motivated you to write StoryTeller?
Jeremy: I had a lot of experience using FitNesse to create automated tests over a couple different projects and at least four different employers. I loved the concept of using FitNesse to write human readable automated tests, but invariably my teams incurred quite a bit of friction with FitNesse. I originally set out to build a different editor and test management infrastructure for the FitNesseDotNet library. I made some progress but eventually scrapped that approach and wrote a completely new testing engine from the ground up that is optimized for .Net usage. Along the way I think I've created the better tooling experience that I was looking for from the beginning. Specifically, I wanted a tool that did what FitNesse did but allowed for cleaner testing language, easier mechanics for the developers writing the test automation code, and easier integration with source control and continuous integration than I felt was possible with FitNesse.
And let's not lie here, it's been an absolute blast to build and like any OSS side project it's made me a better developer for the experience.
InfoQ: How would you say StoryTeller is different from tools like Fit/FitNesse and Cucumber?
Jeremy: Let's be very clear about this, StoryTeller was built specifically to be a better Fit/FitNesse for the .Net ecosystem and owes quite a bit of inspiration to my prior experiences with FitNesse. StoryTeller is very similar to FitNesse in the sense that you code "Fixture" classes that implement and contain "Grammars" that you can use to express test specifications in an English like way. The first difference is that StoryTeller does "projection editing" that renders an html display instead of parsing html. The other difference is in tooling. FitNesse requires you to edit tests in a Wiki with a format that's a frequent source of complaints. StoryTeller tests are authored with a client written with WPF that greatly accelerates the process of creating tests.
Cucumber is a Ruby tool that seeks to solve the same problems as StoryTeller, but with different mechanics. While you can use Cucumber with IronRuby to write executable specifications for .Net code, there are immediate benefits to writing test automation code in the same language as your production code. Today you might use Cucumber and Ruby to code your tests because it creates readable tests, but with StoryTeller your developers can use C# to craft human readable acceptance tests.
InfoQ: Do you see StoryTeller as a developer tool only?
Jeremy: At this time StoryTeller is a bit developer centric in the way that you have to create tests, but in the long term I see StoryTeller as a tool for testers and business partners to express requirements as automated acceptance tests. Our (one) tester uses StoryTeller quite extensively.
InfoQ: Would StoryTeller easily integrate with CI tools?
Jeremy: Absolutely yes, and this was one of the main drivers for the architecture of StoryTeller. Everything about StoryTeller is "XCopy deployable." The StoryTeller tests are just Xml files stored on a file system and the tool makes no assumptions about where the actual binaries for the system under test will reside. For CI builds, StoryTeller includes a command line runner that can be executed from any build tool that supports shelling out to the command line. We run our StoryTeller test suite in a cascading build using JetBrains Team City CI tool and have integrated the StoryTeller results into our Team City website.
InfoQ: I understand you have dogfooded StoryTeller at Dovetail. How much have this helped in shaping the application?
Jeremy: I couldn't possibly overstate the importance of dogfooding StoryTeller. I've eliminated performance bottlenecks due to our experiences. I've found several ways to streamline the mechanisms for coding the Fixtures and Grammar building blocks for developers based on negative feedback from our first round of testing. Early on we noticed quite a bit of repetitive coding just to generate test grammars, so we found ways to eliminate duplication in the test automation code. I've routinely needed to improve the way that StoryTeller presents test errors and results to make failing test errors easier to diagnose due to feedback from our usage of the tool. Recently, I've had to invest more time into hardening StoryTeller against coding errors in a way that lets the developers writing the test automation code know exactly what's going on when things don't work correctly. Most recently, our team has finally hired a tester. Her usage of the editing tool and the friction that she encounters with StoryTeller has driven the last wave of functionality specifically to improve the ease of editing tests.
InfoQ: What can we expect from StoryTeller going forward?
Jeremy: Probably not too much in the immediate future. I'm hoping for some feedback from early adopters. Right now, StoryTeller is very developer centric and requires you to code at least a skeleton of the Fixture first before editing tests -- which was a conscious decision on my part because Dovetail was a "developer only" team for a long time and it is of course very optimized for my team. Going forward, I want to add ways for testers and business facing users to create the testing language directly in the tool without developer intervention so that it can really become a way to write executable specifications ahead of development.
InfoQ: Thanks for taking the time to talk to us Jeremy. More information and the source code can be found at the StoryTeller project page.
Transforming Software Delivery: An IBM Rational Case Study
Agility at scale, become as agile as you can be
In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
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.
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.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
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.
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.
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.
No comments
Watch Thread Reply