Boy, have I been busy the past couple months! And now, I’m comfortable enough to announce what I’ve been working on – my first major open-source project:
Spectacular is an Acceptance Test Driven Development (ATDD) / Behavior Driven Development (BDD) tool that aggregates several different types of testing frameworks into 1, and it also introduces the idea of Executable Use Cases (EUC) – if you have to write use cases, you might as well make them Not Suck.
The idea is that a Business Analyst (BA), Quality Assurance engineer (QA), or Developer can write a spec in any way they feel comfortable with, including diagrams and business rules if necessary. They can write tests in the form of Executable Use Cases, BDD-style tests (Gherkin/Given-When-Then scenarios), and/or FIT-style tests all within the same document. The tool will run through the document, “detect” test cases, execute them, and print out the results in the same format as it was input.
I work at a large financial services company, where compliance with Sarbanes-Oxley (SOX) and Office of the Comptroller of the Currency (OCC) rules and regulations is of utmost importance, specifically with the audit requirements.
I suspect that there are many, many organizations out there who have to comply with the same set of rules, so I took what I learned about SOX and OCC audit requirements, combined them with what I learned at Elisabeth Hendrickson’s AMAZING ATDD course, and created Spectacular to make writing requirements more natural while also making those same documents executable, and not restricting any team to any single tool.
Also, I found through practical application of various ATDD tools that they are all pretty amazing and useful, but it was really annoying to use all these various tools to write specs and tests in different ways located in different locations depending on the tool being used. Plus, I would suspect that most teams would prefer to write story tests in a single document in a single format rather than having them live all over the place.
I don’t think so. Actually, I think something like Spectacular will help any large organization with an established corporate hierarchy and previous experience writing specifications in a use-case format adopt Agile more easily, especially those with “hardened” quality-assurance/quality-control groups. In my experience, these large organizations can be like “steering the Titanic with a small rudder” when it comes to transitioning to a more Agile process – allowing teams to continue writing requirements in the form of Use Case flows and documenting the tests in the same document will let them experiment with the various ATDD best-practices while remaining compliant with their regulatory bodies.
Spectacular helps those teams constrained with writing full-specs by allowing those teams to write the specs with tests embedded in them. Agility is introduced because those specs – written in a format they are used to – are now executable. A core Agile practice IMHO.
Yes, really. Use cases can tell a lot of the “story” if written well. Use cases, just like implementation code when written after a unit test is written, can be written well if there a constraint of execution behind it. Also, traditionally use cases have been taken to a far extreme of complicated. Not necessary IMHO.
To me, Use Cases fill the role of “Epic Spec” in an agile process. I’m a huge believer in the practice of Story Mapping and Persona Development (from Jeff Patton and Dave Hussman, respectively. Two of my personal geek-heroes). While doing your story mapping workshop, the high-level “activities” that you decompose into stories can very easily be Use Cases. In fact, in my experience writing Use Cases to explain the high-level activity (or “Epic”) can help to decompose it into discreet stories. And as such, each level of requirement-granularity (from Epic/Use Case to the Story) requires a different way to test it.
As such, I use Spectacular myself to execute Use Cases against Epics, and BDD/Gherkin and FIT tests to execute Stories.
I don’t know about the rest of you, but I hate it when I stumble upon a useful open-source tool only to find that the documentation is poorly written. Now, I’m not saying Spectacular’s docs are amazing, but I did spend some time writing a good amount to make sure people could pick up Spectacular and use it relatively quickly. All of the docs are located at the Spectacular Wiki on Google Code. I welcome all feedback so that the documentation can be improved!
But here’s an example. Given a document:
(Executable Use Case)
| Primary Flow: Register New User to System | ||
| User Action | Expectation | Comments |
| User navigates to “http://blog.minderupt.com/” | User sees blog site with existing blog entries | |
| User clicks on “Log in” link | User sees page requesting credentials | |
| User clicks on “Register” link | User sees page requesting registration info | Reg info includes a username, password, confirm password, and age! |
| User enters registration information and submits form | User sees page asking user to confirm |
Business Rules:
Story: As a new user not already registered I want to register myself so that I can use the system.
(BDD/Gherkin Executable Test)
|
Scenario: Brand new user correctly registers Given a username of “myusername” is not already registered Scenario: Good username, duplicate email Given a username of “myusername” is not already registered Scenario: Duplicate username, good email Given a username of “myusername” is registered |
Story: As a new user not already registered I should not be able to skip any data elements so that…
(FIT executable test)
| Username | Password | Confirm Password | DOB | registered() |
| myusername | mypassword | mypassword | 11/01/1960 | true |
| username1 | password1 | password2 | 11/01/1960 | false |
| myusername | mypassword | mypassword | 01/01/2005 | false |
With these requirements written, Spectacular will run through this document and parse out the tests (basically, anything contained in a table and fitting particular patterns) and execute test fixtures for each of these. While for version 1.0 Spectacular only supports Java (using JBehave) for the BDD/Gherkin and FIT tests, Executable Use Case fixtures can be written in Java, Groovy, Ruby (experimental – using JRuby), and Selenese (to directly drive a browser using SeleniumRC). The ability to write fixtures for BDD/Gherkin and FIT in other languages is coming soon! (I’d really like to be able to write BDD/Gherkin tests using Cucumber as the engine if possible)
Try it out! I hope the Agile community finds some use out of this tool like I have. If you have any questions, you can leave them here in comments or join the users & dev lists.
Much of Spectacular is based in part or whole from the following projects:
As well as from the teaching/writing/works from the following people:
There has been a lot of chatter recently about the value of [enter Agile methodology here] certification. I think a lot of the chatter is due to the controversy surrounding the Scrum Alliance’s letters to various user groups, asking them to “license” the Scrum name. And I believe the other reason is the huge number of trainers out there making quite a living doing the Scrum certification thing.
Part of that last sentence isn’t fair. People need to make livings. And, there is immense – if not, with the right people, priceless – value in those who have led teams down the Agile path teaching and coaching others to do the same. But as with anything that looks really cool and works, you have folks who go through the certification motions just for the sole purpose of being able to make good money. It’s those who don’t see their career as a craft or who have real passion in what they do – they just want more money. Not that capitalism and the desire to be wealthy is bad, no judgments there. But I get the feeling that many of the “Agile trainers” out there just aren’t of the quality that many teams need. To extend the idea in my last entry (“architects who don’t code are like fashion designers who don’t sew”), there are a lot of people out in the field training novices how to design clothes without ever having picked up a sewing needle. Certified trainers, no less. I know, I’ve run into a few.
I really like Elisabeth Hendrickson’s take on certification, and the alternatives to official certification: WeVouchFor.
And, like Elisabeth, I must confess – I got started in Agile by going to Ken Schwaber’s CSM class in 2004. At the time I did not think much of the whole issue with certification. But now? Well, I’ve simply met too many Agilists who still just don’t get it.
And I’m not going to sit here writing in my holier-than-thou blog trying to convince myself that I know everything and I totally get everything. At least, I hope that’s not what I’m trying to do. I hope the day where I stop learning never comes. But, I can say that I have some good experience, both on a small-company level and at a large-company level, in rolling out and/or practicing Agile techniques. And by experience, I mean, I have been blessed with the ability to totally and royally fuck up beyond belief, get my ass burned by my various managers/clients, and learn from it and move forward.
My point? How can we “certify” experience? In Agile (and I would assume in RUP, Waterfall, etc other process), experience counts for so much more than simply education. Agile techniques at their basic level are taught, but they are further refined at the company, team, and individual level through tweaks after doing. A.K.A. screwing up, learning-through-retrospective, moving on. How in the world do we certify that? The closest thing I can think of is something along the lines of WeVouchFor. I like that I am able to describe my own skills (i.e., “Coached teams”) and have people specifically vouch for that piece (“Michael coached me”) and provide evidence/testimony to it (“result was a team practicing Agile and still is!”).
Of course, I see a small danger here too. I see a danger of “you scratch my back, I’ll scratch yours.” Again, it’s not a bad thing if the scratching really happened. But “official certification” does offer potential employers and clients some sense of understanding that the certified person did, in fact, attend a class and did, in fact, pass it. Vouching does not.
I don’t have an answer. I have some ideas. I need to think about them some more. I like the idea of possibly letting certain “vouches” carry more weight than others, and that reciprocal vouches are worth the least. Again, the logic still has problems. How would you quantify the value? Points?
This particular topic was the one thing I wanted to bring up during the AgilePalooza Open Space, until I was rudely interrupted by my employer and had to leave. Perhaps next time.
From InfoQ: Scrum Alliance Asks User Group to Sign Licensing Agreement
Yikes. Upon first reading the headline of this article all I could think was “oh crap, this marks the beginning of the end for Scrum.“ At this point, the Lean zealots are throwing their hands in the air exclaiming “I told you so!“ Ha, perhaps.
What I like about Scrum is the overall process components it gives us. It tells us to use a backlog, but it doesn’t tell us what those backlog items must be. It is common to use User Stories as backlog items, but I’ve worked with teams who use bug reports as backlog items. Scrum gives us the concept of the “Planning Meeting” where we estimate the backlog items and commit to work during the Sprint, but there is no defined agenda for the meeting. It is common to use XP’s model for planning (“The Planning Game“), among others. Same with the demo, the retrospective, and the sprint itself. Heck, even the sprint length is negotiable!
The point is, we get carried away with the notion of “pure Scrum.” I find the whole certification practice around Scrum to be completely ridiculous, as groups rarely implement “pure Scrum” because it doesn’t exist. The components within Scrum tend to be customized by the team, especially during the retrospective. And it is even more common to use Lean techniques for doing so (which is why I find the fight between Alan Shalloway and his group of Lean folks and Ken Schwaber and his Scrum folks to be equally stupid as Agile certification programs), making Lean and Scrum obvious cooperative processes.
Also, need I remind the Scrum folks that the word originates from a Rugby move?
I will still practice Scrum for the foreseeable future, as I’ve seen so many amazing improvements to teams that I have implemented Agile with. In each of these teams I hold the expectation that the basic process of Scrum will be modified to fit the needs of the team, which is exactly what I tell them. Besides, some of the most common question I get when I coach teams in Agile is “what about testing?” “What about development?” Again, other Agile practices being brought into the Scrum team negate the whole idea of “pure Scrum” and therefore no one organization can own the process.
I’d like to see them try.