I have been quite bizzy this week, emerged in BizTalk. I will be posting a complete review of the course I have been taking, it is through Mark Dunn (Dunn Consulting), and the teacher is Mark Berry. I will say now that my review on the course will be quite positive.
I have run into a severe concern involving BizTalk in an agile environment. It really does not seem to be very testable and I have always had the notion when dealing with things in an agile environment that if I can’t test it; it doesn’t exist (is this not one of the main reasons why we don’t put business logic in the database?). I have gone through downloaded and played with BizUnit but let me tell you that the name is very misleading.
BizUnit does not appear to be for unit testing, it is for functional testing. It does however seem to do a fairly good job with functional testing, and it is fairly flexible with setup. Kevin Smith has a nice example showing a basic setup for it. It seems like a great tool for automating large parts of the QA process, unfortunately functional tests are rarely of much use to developers.
Let’s propose for a minute that we have a much more complex orchestration that is mainly handled internally to BizTalk. We would give it a known input, let it churn for a while then check its known output. There are a couple of issues here (most can be applied to functional testing as a whole which is why we unit test).
1) This is testing our functional specification, although it has tested our orchestration, maps, components, etc the focus of the test is how the data eventually comes out (i.e. file, msmq, database, etc) and the format that the data came in.
2) This test will be SLOW
3) Telling me that the test failed doesn’t really help me in fixing the problem
4) This test is HIGHLY dependent upon configuration as opposed to more static items such as the orchestration logic
5) The test could quite likely will fail due to a bug in another area, such as a foreign data source not returning proper data
6) There is no good way to mock data from other repositories without completely changing the process.
I also admit that I am very new to the technology; these are my first impressions from 36 hours of immersion and some reading up on the web. I am very interested in hearing the opinions of others in agile environments that have brought this technology in.