There is something to be said about having a good tool box – after all picking the right tool for a job is also as much about picking the right job for a tool, and the bigger your toolbox, the better the chances are that the best tool you can muster will be the one appropriate for the job at hand.
To get the most productivity improvements from using any tool, it is essential to know its abilities, its limits, and what it does best. IntelliTest is a powerful and complex tool, and is a fine example to illustrate this point – what are its capabilities, what are its limitations, and what can you as the developer do to get the most out of it? Familiar avenues of recourse for these questions have been to consult blogs, the feature documentation, and forums for interactions with other expert users – the latter two of which are the topic of this post.
Presenting the IntelliTest Reference Manual
There are different kinds of documentation – there is the content that describes product-usage, and in the case of IntelliTest, there is also content that describes API usage. Neither of these answer the questions raised earlier. The IntelliTest Reference Manual is intended to fill that gap. Here are some questions to which you can find answers in this manual:
- How does test generation work?
- What are those exploration-bounds that were first mentioned in our “mental-model” post?
- How does you interpret the coverage data reported?
- How do you test for “correctness”?
- When is a generated test case considered to have failed?
- How do you “allow” an exception in a generated test?
- How does IntelliTest integrate with the notion of setup and teardown methods?
- What are the challenges that IntelliTest faces in automatically creating objects of certain types and setting their field values?
- How do you let IntelliTest obtain additional inputs?
- What are all those attributes anyway?
- How do you interpret all those those warnings?
- … and many more.
For the user new to IntelliTest, this manual can serve as a learning roadmap. Those more experienced can simply use it as a ready-reference. In either case, we hope you find it interesting material. This is a work-in-progress though, and there are still topics that we will add on an on-going basis. If you would like us to articulate any topic/sample in particular, please do send us your feedback. The manual calls out how you can send us your feedback.
It takes a community to grow a tool, and from the time we shipped, IntelliTest is fortunate to see a growing community of users and experts – for e.g. see the test generators from the NUnit and xUnit.net communities. Let us leverage this collective expertise to help each other – stackoverflow can serve as the forum. We invite you to post your queries there (tagged “IntelliTest”).
The proof of the pudding
Of course, learning a tool can be time consuming, and gaining expertise can require effort. But when the job-at-hand and the tool-capabilities align, and the tool is wielded by an expert, the productivity improvements can be rewarding. We hope the IntelliTest Reference Manual, and the interactions over the forum will help along this way, and look forward to hearing about your experiences and feedback.