Functional tests in the context of BizTalk applications are used to test a specific end-to-end scenario. Generally, you can think of BizTalk as a black box. A functional test may involve feeding an input message with known content to a receive adapter's URL, and then monitoring that the correct number of output message(s) are received on the send side at the correct URLs with the correct content. By passing messages in with known content, you can typically control the path through BizTalk and predict what the expected outputs will be. Of course, many scenarios require known inputs to be orchestrated at the correct time to drive the correct outputs.
Functional testing should cover all the possible paths through your solution — not only those scenarios that you expect in production but also the failure paths that you hope are never exercised in production. The tests should use all in-bound and outbound URLs and all types of messages. All orchestrations should be invoked, and all code branches through those orchestrations should be exercised. The following are some of the considerations when developing functional test cases:
Ensure that all combinations of messages and endpoints are passed through the solution to make sure that all message flows are exercised. This may mean using messages with differing content to ensure that all code paths through your orchestrations and custom pipeline components are executed.
Ensure that all the different transports ...