Now We’re Talking, or NWT (pronounce Newt), is a testing framework for BizTalk.
Why such a silly name? Because when you’ve used it, let's hope that you’ll say something like: ok, now we’re talking… :)
Why another framework ? Let's see :

Project Description

One main idea led to the creation of this framework:
Testing a business process is not just a matter of checking whether an orchestration or a pipeline completed successfully or failed. Well, actually it could be in some simplistic processes, but as soon as you implement some business logic in your processes, it cannot be that simple. For instance: you have an orchestration that enriches a message and depending on what has been added in this message, either does some checks or simply sends the message to a LOB system. The orchestration may skip the checks and complete without any error, nevertheless the expected behavior could be to complete without errors but also to perform the validation checks.

At the moment when it comes to testing, one can choose one of those three possibilities:
  • Standard unit testing capabilities: allows you to test single elements of your BizTalk projects, but only pipelines, maps and schemas, and outside of any execution context.
  • BizUnit: a message-centric framework which focuses on pushing some messages and retrieving others, and then validate those messages against a schema and look for expected values. A good start in the way of automated testing, but the business process itself is still a black box.
  • BizMock: also message-centric, based on the use of a specific adapter in order to mock the systems BizTalk is supposed to be connected to. Another very interesting initiative, but by its design it is bound to be used only for pure unit tests instead of some real-life-like context. And again, the business process itself is a black box.
In other words, you can only infer the behavior of your processes from the messages they output, which may not be enough.

So : How does NWT work? What does it do that the other frameworks don’t?

NWT relies massively on the Tracking database: it extracts and computes messages and tracked events to check what data was processed and how it was processed. One interesting thing is that it is absolutely non-intrusive: no adapter to install, no .Net code to add in your orchestrations, and tests can be run on any environment from development to quality, pre-production or even production as long as tracking is enabled.

NWT works with scenarios: just like you may validate an XML message against an XSD schema definition, NWT allows you to validate the behavior of your processes under certain conditions (a set of criteria on the messages processed) against a specific scenario (which orchestrations are supposed to be executed, what shapes are executed inside of those orchestrations, what data must be found in the output...).

This means that you can script your key business use cases and automatically test that your BizTalk solution does what is expected to do in each of those use cases.

Last but not least : NWT implements some powerful mocking mechanisms, which among other things allow you to completely bypass part of your business process and by so doing allow you to test only the part of the business process that is relevant for your tests. It can also generate on the fly as many services as you want, each one basically pretending to be one of the systems your processes are supposed to be connected to, even with two-way communication patterns. Again, those mechanisms are as little intrusive as possible.


OK but still : why another framework?
Well originally it wasn't even intended to be a framework : it was just a tool for some lazy developper (the writer of this being the lazy guy). It all started with the need to find instances of orchestrations by making complex XPath queries on their messages, instead of manually extracting and processing the messages. Then came the need to "capture" and "replay" multipart messages, thus possibly bypassing some part of a business process. Etc, etc.

The project rapidly grew and soon enough the former lazy developper (still being lazy) realized that it would be quite a chalenge to rework all of this to make it fit into another initiative, like BizUnit.
So the conclusion was that it was easier to post this framework as a new project and let more qualified and motivated people pick the (few?) good ideas and integrate them in other projects, or even simply contribute to this one, who knows?, :)

Supported versions

For now, this framework is intended for BizTalk Server 2010. Once it is stable, it will be updated to support BizTalk Server 2013

Current status

The current version (0.0.1.0) is only a first draft, there is still a lot of work to do. Nevertheless, the basic mechanisms are already implemented. It already comes up with some Visual Studio wizards and a few samples.
The next step will be to provide a basic documentation :
  • Installation guide
  • Getting started tutorials
  • Architecture overview
  • ...

Last edited Nov 7, 2013 at 1:53 PM by serivas, version 13