<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Data Tools and Software Testing : Model Based Testing</title><link>http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx</link><description>Tags: Model Based Testing</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Spec Explorer 2010</title><link>http://blogs.msdn.com/nihitk/archive/2009/12/02/spec-explorer-2010.aspx</link><pubDate>Wed, 02 Dec 2009 16:51:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9931487</guid><dc:creator>nihitk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/9931487.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=9931487</wfw:commentRss><description>&lt;p&gt;I am very excited to see the latest version of &lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee692301.aspx" target="_blank"&gt;Spec Explorer&lt;/a&gt; (which is available even for &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank"&gt;Visual Studio 2010 Beta 2&lt;/a&gt;) now available publicly for everyone in the world to leverage. It is available via the &lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee692301.aspx" target="_blank"&gt;MSDN DevLabs&lt;/a&gt; page and the Spec Explorer team (the fact that there is a team dedicated to pushing this tool makes me immensely optimistic about it’s future) even has a &lt;a href="http://blogs.msdn.com/SpecExplorer/" target="_blank"&gt;wonderful new MSDN blog&lt;/a&gt; dedicated to Spec Explorer.&lt;/p&gt;  &lt;p&gt;Kudos to the Spec Explorer team and I look forward to wonderful improvements coming from them in the years ahead to help leverage &lt;a href="http://blogs.msdn.com/nihitk/pages/144664.aspx" target="_blank"&gt;Model Based Testing&lt;/a&gt; in a more pervasive way across the software industry.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9931487" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/General+Software+Testing/default.aspx">General Software Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category></item><item><title>Elements of MBT - Part 3 – Actions and Action Parameters  </title><link>http://blogs.msdn.com/nihitk/archive/2007/07/05/elements-of-mbt-part-3-actions-and-action-parameters.aspx</link><pubDate>Fri, 06 Jul 2007 02:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3715851</guid><dc:creator>nihitk</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/3715851.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=3715851</wfw:commentRss><description>&lt;P&gt;In the last 2 posts we have looked at what we mean by a &lt;A href="http://blogs.msdn.com/nihitk/archive/2007/03/23/elements-of-mbt-part-1-what-is-a-model.aspx" mce_href="http://blogs.msdn.com/nihitk/archive/2007/03/23/elements-of-mbt-part-1-what-is-a-model.aspx"&gt;model of a system&lt;/A&gt; and defined what &lt;A href="http://blogs.msdn.com/nihitk/archive/2007/06/27/elements-of-mbt-part-2-states-and-state-variables.aspx" mce_href="http://blogs.msdn.com/nihitk/archive/2007/06/27/elements-of-mbt-part-2-states-and-state-variables.aspx"&gt;States and State Variables&lt;/A&gt; are. In this post we'll look into Actions and Action Parameters. &lt;/P&gt;
&lt;P&gt;We can define an &lt;STRONG&gt;Action&lt;/STRONG&gt; as something that modifies or exercises the system. Thus "TurnIgnitionOn" (in the car model being used in this series) can be an action which causes the system to change in some way. When considering Actions you need to think about what exactly is it that changes in the system and which all state variables are impacted by those changes. An action is therefore simply something that causes the system to change states. &lt;/P&gt;
&lt;P&gt;Actions become much more powerful and useful when combined with the concept of &lt;STRONG&gt;Action Parameters&lt;/STRONG&gt; which can be considered to be similar to method parameters. Like a method (in a programming sense) does some work which can be tweaked or controlled by the method parameters, the effect of an Action can be affected by Action Parameters. In the car driving model an example of an Action Parameter would be whether the ignition could be turned on remotely (via the keychain) or locally. In that case we might want to add an Action Parameter to the model such as TurnIgnitionOn(Mode) where the "Mode" action parameter could take values "Remote" or "Local" similar to the way state variables can have different values. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 460px; HEIGHT: 102px" height=102 src="http://blogs.msdn.com/photos/nihitk/images/3715908/original.aspx" width=460 mce_src="http://blogs.msdn.com/photos/nihitk/images/3715908/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;A really interesting point that emerges here is that there is no &lt;STRONG&gt;one&lt;/STRONG&gt; way to model the system. In the example above if for some reason you actually wanted to &lt;STRONG&gt;track&lt;/STRONG&gt; how you had opened the car, maybe for a later stage in the model when you were actually locking the car then you would need to store this information in a state variable. Anytime you find yourself using the word "track" you should think about having that value as a state variable. We could therefore break our TurnIgnitionOn action into 2 different types of actions, &lt;EM&gt;TurnIgnitionOnRemotely&lt;/EM&gt; and &lt;EM&gt;TurnIgnitionOnLocally &lt;/EM&gt;and track how we opened the car as a new state variable, say S3, with values Remote or Local. Our model would therefore look something like this: &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG src="http://blogs.msdn.com/photos/nihitk/images/3715910/original.aspx" mce_src="http://blogs.msdn.com/photos/nihitk/images/3715910/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;I will end this post with a word of caution. Even though it is quite easy to add a state variable to the model to track some aspect of the system, you should be very careful when adding state variables to your model and strive to minimize this number. The reason for this guidance is to limit the amount of state explosion that takes place as a result of defining these additional state variables. Remember that every time you define another state variable the number of possible states in the model is increasing exponentially. To keep your model manageable you should not add a state variable till it is absolutely critical to the behavior being captured.&lt;/P&gt;
&lt;P&gt;UPDATE: Just noticed that this is actually my 100th post on this blog - WOW! Never thought I'd see the 100th post when I started out...it's been fun! :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3715851" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/General+Software+Testing/default.aspx">General Software Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Elements+of+MBT/default.aspx">Elements of MBT</category></item><item><title>Elements of MBT - Part 2 – States and State Variables  </title><link>http://blogs.msdn.com/nihitk/archive/2007/06/27/elements-of-mbt-part-2-states-and-state-variables.aspx</link><pubDate>Thu, 28 Jun 2007 03:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3573496</guid><dc:creator>nihitk</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/3573496.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=3573496</wfw:commentRss><description>&lt;P&gt;This is a continuation of the Elements of MBT series of posts which I started last time with &lt;A href="http://blogs.msdn.com/nihitk/archive/2007/03/23/elements-of-mbt-part-1-what-is-a-model.aspx" mce_href="http://blogs.msdn.com/nihitk/archive/2007/03/23/elements-of-mbt-part-1-what-is-a-model.aspx"&gt;Part 1&lt;/A&gt; and covered what is meant by a model of a software system. In this post I shall be covering additional concepts which you will need to know to gain a better understanding of Model Based Testing. &lt;/P&gt;
&lt;P&gt;One of the most fundamental concepts required to define a model of a system is that of &lt;STRONG&gt;State Variables&lt;/STRONG&gt; which in turn are needed to define what a State is. A State Variable is simply some aspect of the system which changes over time. For e.g. in the car driving model, one aspect that changes (and which you care about tracking for the purpose you are building the model for) is whether the car is moving or not. So this can be a state variable, say "CarMotionState", which can have values such as "Moving" and "NotMoving". Couple of important things to keep in mind is that a state variable can have multiple values (not just 2 as in the example above) and that these "values" are really just semantic terms to help us define the model. What the actual values of these do and result in (especially from an automation point of view) is tied in later when you are implementing the code for the model. &lt;/P&gt;
&lt;P&gt;A &lt;STRONG&gt;State&lt;/STRONG&gt; then becomes much easier to define as simply a combination of all the State Variables in the model with particular values assigned to each state variable. Thus if your model contains 3 state variables S1, S2 and S3 with multiple values for each state variable, a state will be defined by a &lt;STRONG&gt;unique&lt;/STRONG&gt; set of values for each of the state variables S1, S2 and S3. You can therefore think of a state as simply a snapshot of all the state variable values at a given point in time. From the Part 1 car driving model we can now see that the 3 states in the model are comprised of the following unique combinations of state variable values. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #632423"&gt;S1 = { IgnitionState = IgnitionOff; CarMotionState = NotMoving; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #632423"&gt;S2 = { IgnitionState = &lt;STRONG&gt;IgnitionOn&lt;/STRONG&gt;; CarMotionState = NotMoving; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #632423"&gt;S3 = { IgnitionState = IgnitionOn; CarMotionState = &lt;STRONG&gt;Moving&lt;/STRONG&gt;; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;One thing to notice here is that not &lt;STRONG&gt;all&lt;/STRONG&gt; possible states need to be defined for a particular model. Depending on the system and the reason you are creating the model or the abstraction level you want to capture, you might not include certain states in your model. Or certain states simply won't make any sense to model such as the state "IgnitionOff" + "Moving" if you do not want to capture the behavior of the car sliding down hill when the ignition has not been turned on. The great thing though is that it forces you to think of that scenario and to consider if that is something you want to capture and if so then what the expected behavior would be. &lt;/P&gt;
&lt;P&gt;In the next post I shall cover Actions and Action Parameters and update the model to add an Action Parameter to one of the actions.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3573496" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/General+Software+Testing/default.aspx">General Software Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Elements+of+MBT/default.aspx">Elements of MBT</category></item><item><title>Elements of MBT - Part 1 - What is a model?</title><link>http://blogs.msdn.com/nihitk/archive/2007/03/23/elements-of-mbt-part-1-what-is-a-model.aspx</link><pubDate>Sat, 24 Mar 2007 03:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1939974</guid><dc:creator>nihitk</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/1939974.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=1939974</wfw:commentRss><description>&lt;P mce_keep="true"&gt;In this series of "Elements of MBT" posts, I will be covering some basic concepts used when trying to build models of software systems for use in &lt;A class="" href="http://blogs.msdn.com/nihitk/pages/144664.aspx" mce_href="http://blogs.msdn.com/nihitk/pages/144664.aspx"&gt;Model Based Testing&lt;/A&gt;. The aim is to give an explanation of the various elements involved in defining a model of a software system and hopefully this should get us on the same page and allow us to explore the complexities in more detail. &lt;/P&gt;
&lt;P&gt;Let us start by going over what we mean by a "model" of a system. Put simply, a model is a description of the system and is much simpler than the actual system itself. What this means is that the model hides a lot of the details about the system and hiding these details allows us to work at a higher level of abstraction. For e.g. a simple model of driving a car could be: 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D%5B3%5D.png" atomicselection="true" mce_href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D%5B3%5D.png"&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D%5B6%5D.png" atomicselection="true" mce_href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D%5B6%5D.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=95 src="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D_thumb%5B2%5D.png" width=433 border=0 mce_src="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D_thumb%5B2%5D.png"&gt;&lt;/A&gt; 
&lt;P&gt;One thing to keep in mind is that there is no perfect&amp;nbsp;model of a system, since the same system can have completely different models depending on what you plan to &lt;STRONG&gt;use&lt;/STRONG&gt; the model for. Are you creating the model of a system simply to capture the behavior and requirements of the system? Are you creating the model to auto-generate the code for the model implementation itself? To describe the data flowing through the system? Or are you generating the model to actually test a particular portion of the system? 
&lt;P&gt;A quote which captures this unusual thing about models really well is as follows: 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;All models are wrong; some models are useful. &lt;/STRONG&gt;
&lt;P&gt;&lt;EM&gt;- George Box&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;What is worth hanging onto from this definition is that a model that you create should strive to be "useful" more than anything else. It might be rough round the edges and might not tell you everything about the system (for e.g. you don't know from the above model how the gear is to be changed or what happens when a gear is changed) but if it is &lt;STRONG&gt;useful &lt;/STRONG&gt;for the purpose it was created it is a correct model. 
&lt;P&gt;Another aspect of defining a model is the notion that the model should help &lt;STRONG&gt;predict&lt;/STRONG&gt; what the behavior of the system would be under certain conditions. So if you are in the "Not Moving" state and you "ChangeGearAndAccelerate" then you reach the "Moving" state. Are there certain assumptions in the model? You bet there are! Such as assuming that the ignition is on, that the car has wheels, that the car is not hanging in the air, that there is oxygen in the air, we can go on and on and on. The hiding of these details and assumptions is what helps us look at just this behavior we are capturing. If anything is important for the &lt;STRONG&gt;purpose&lt;/STRONG&gt; (say testing) for which we are creating the model, we should consider adding that detail into the model. So if we thought that it was important to know whether the ignition was on or off we would change the model to capture this as well. 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D%5B12%5D.png" atomicselection="true" mce_href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D%5B12%5D.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; WIDTH: 511px; BORDER-BOTTOM: 0px; HEIGHT: 96px" height=120 src="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D_thumb%5B6%5D.png" width=736 border=0 mce_src="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/ElementsofModelBasedTesting_C20B/image%7B0%7D_thumb%5B6%5D.png"&gt;&lt;/A&gt; 
&lt;P&gt;Now we know that if you are in the "Ignition &lt;STRONG&gt;Off&lt;/STRONG&gt;" and "Not Moving" state then if you "TurnIgnitionOn" you reach the "Ignition &lt;STRONG&gt;On&lt;/STRONG&gt;" and "Not Moving" state since simply turning on the ignition does not cause the car to start moving in the model that we have created. To start moving you will need to "ChangeGearAndAccelerate" which should take you to the state of having the "Ignition On" and the car "Moving". 
&lt;P&gt;Hope this gives you an idea of what a model contains and what it can be used to capture. In the following posts we will look into each element of a model in more detail.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1939974" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/General+Software+Testing/default.aspx">General Software Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Elements+of+MBT/default.aspx">Elements of MBT</category></item><item><title>Model for Getting Drunk</title><link>http://blogs.msdn.com/nihitk/archive/2007/01/08/model-for-getting-drunk.aspx</link><pubDate>Tue, 09 Jan 2007 04:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1097555</guid><dc:creator>nihitk</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/1097555.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=1097555</wfw:commentRss><description>&lt;P mce_keep="true"&gt;You know your team members are really catching onto this whole &lt;A class="" href="http://blogs.msdn.com/nihitk/pages/144664.aspx" mce_href="http://blogs.msdn.com/nihitk/pages/144664.aspx"&gt;model-based&lt;/A&gt; way of thinking when they pull your leg over a few drinks in a bar and say (tongue in cheek): "So Nihit, the '&lt;STRONG&gt;Action&lt;/STRONG&gt;' of having this drink will take me from a '&lt;STRONG&gt;Sober&lt;/STRONG&gt;' state to a '&lt;STRONG&gt;Drunk&lt;/STRONG&gt;' state, right?". &lt;/P&gt;
&lt;P&gt;Yes - exactly - it will (or maybe we need to accommodate degrees of drunkenness as well - not everyone is drunk after a single drink!?) and for completeness sake you can even have an Action Parameter for the type of drink being passed into the "DrinkAlcohol" action! Isn't that neat!? :) 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/d803f2c22c87_F0A7/image%7B0%7D%5B10%5D.png" mce_href="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/d803f2c22c87_F0A7/image%7B0%7D%5B10%5D.png" atomicselection="true"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=107 src="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/d803f2c22c87_F0A7/image%7B0%7D_thumb%5B4%5D.png" width=413 border=0 mce_src="http://blogs.msdn.com/blogfiles/nihitk/WindowsLiveWriter/d803f2c22c87_F0A7/image%7B0%7D_thumb%5B4%5D.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Anyway, here's wishing&amp;nbsp;everyone a wonderful 2007 ahead. Happy New Year!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1097555" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category></item><item><title>Model Based Testing – The Yellow Brick Road</title><link>http://blogs.msdn.com/nihitk/archive/2006/07/28/YellowBrickRoad.aspx</link><pubDate>Sat, 29 Jul 2006 04:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:682122</guid><dc:creator>nihitk</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/682122.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=682122</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The &lt;A href="http://blogs.msdn.com/nihitk/archive/2004/05/30/144667.aspx"&gt;future was here&lt;/A&gt; – now it’s the past. I am, however, wiser about the ways-of-the-model-based world. Still taking baby steps really, but starting to stand up on my feet. The real-world turned out to be a whole different ball-game from what I had envisioned (and read and expected) but it has been a fun, FUN ride and the road ahead looks fascinating – though long.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In the eons since I posted my original &lt;A href="http://blogs.msdn.com/nihitk/articles/144664.aspx"&gt;introduction to model based testing&lt;/A&gt;, a lot has happened to the world. For e.g. Wikipedia now has &lt;A href="http://en.wikipedia.org/wiki/Model_based_testing"&gt;an article on MBT&lt;/A&gt;. There is an &lt;A href="http://www.mdqa.org/aamdqa.php"&gt;Association for the Advancement of Model Driven Quality Assurance&lt;/A&gt; (though they don’t actually state how one can join them!). There are a host of companies dedicated to doing only model based testing (for e.g. &lt;A href="http://www.reactive-systems.com/"&gt;Reactive Systems&lt;/A&gt; and &lt;A href="http://www.conformiq.com/"&gt;Confirmiq&lt;/A&gt;). There is an IEEE workshop on &lt;A href="http://www.csc2.ncsu.edu/conferences/issre/workshops/AMOST06/"&gt;Advances in Model-based Software Testing&lt;/A&gt; (scheduled for Nov 2006 and looks really interesting – would love to hear from someone attending it!). There is &lt;I style="mso-bidi-font-style: normal"&gt;even&lt;/I&gt; a new acronym for the technology – MDQA for &lt;B style="mso-bidi-font-weight: normal"&gt;M&lt;/B&gt;odel &lt;B style="mso-bidi-font-weight: normal"&gt;D&lt;/B&gt;riven &lt;B style="mso-bidi-font-weight: normal"&gt;Q&lt;/B&gt;uality &lt;B style="mso-bidi-font-weight: normal"&gt;A&lt;/B&gt;ssurance (that’s when you know something has &lt;I style="mso-bidi-font-style: normal"&gt;really&lt;/I&gt; taken off – when people call the same thing by different names!). I find all this amazing and reflective of the direction in which the testing industry will be moving in the next 5, 10, 20 years. &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So what have I been doing all this time? Well, in a nutshell, simply using MBT to actually test something that gets shipped – in this case that happens to be portions of &lt;A href="http://www.microsoft.com/commerceserver/"&gt;Commerce Server 2007&lt;/A&gt; that I worked on (that should be another selling point used by the sales team and on our info sheet – “Tested Using Bleeding Edge Model Driven Testing Technology”). Along the way I cleared the hurdles and burnt my fingers while trying to keep the eye on the ball – which is always simply to test as best as you can. I now plan to expound in future posts on how to adopt MBT better, what to expect and more importantly, what &lt;B style="mso-bidi-font-weight: normal"&gt;not&lt;/B&gt; to expect from this fascinating methodology.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;For this post, I will just mention the most startling thing I discovered – that this dream is going to take a long time to realize. By “this dream” I refer to that futuristic world where model based approaches are entrenched in our processes and systems. Where a tester thinks first in a model based approach whenever he/she is given something to test (even a regression!). Where the metrics are tailored to encourage testers to adopt a model based approach. Where the feature teams contribute to and strive to keep their models up-to-date. And where the tools have the features and reliability that is crucial to be able to develop models and have high levels of confidence in them.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;All of these are non-trivial problems and there are no easy answers that anyone can give. But maybe that’s part of the challenge? So, all in all, buckle up and put on some good music – it’s gonna be a long, FUN ride and we’ll change the world on the way!&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=682122" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/General+Software+Testing/default.aspx">General Software Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category></item><item><title>Pesticide Paradox</title><link>http://blogs.msdn.com/nihitk/archive/2004/07/16/185844.aspx</link><pubDate>Sat, 17 Jul 2004 05:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:185844</guid><dc:creator>nihitk</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/185844.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=185844</wfw:commentRss><description>&lt;P&gt;Just posted an article on the &lt;A href="http://blogs.msdn.com/nihitk/articles/185836.aspx"&gt;Pesticide Paradox&lt;/A&gt; and how &lt;A href="http://blogs.msdn.com/nihitk/articles/144664.aspx"&gt;Model Based Testing&lt;/A&gt; can help alleviate that problem.&lt;/P&gt;
&lt;P&gt;Among others things &lt;A href="http://blogs.msdn.com/mitchw/archive/2004/07/09/178659.aspx"&gt;Terrarium 1.2&lt;/A&gt; seems to have been released. I have been wanting to create an organism and play with &lt;A href="http://www.terrariumgame.net/terrarium/"&gt;Terrarium &lt;/A&gt;for some time now&amp;nbsp;(try and use Evolutionary Psychology tricks perhaps?). Hope I get to do so with 1.2 at least.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Anyone know of any similar games (.Net based) out there?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=185844" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/General+Software+Testing/default.aspx">General Software Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category></item><item><title>Model Based Testing - The future is here!</title><link>http://blogs.msdn.com/nihitk/archive/2004/05/30/144667.aspx</link><pubDate>Sun, 30 May 2004 23:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:144667</guid><dc:creator>nihitk</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nihitk/comments/144667.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nihitk/commentrss.aspx?PostID=144667</wfw:commentRss><description>&lt;P&gt;Not sure if my article on &lt;A href="http://blogs.msdn.com/nihitk/articles/144664.aspx"&gt;Model Based Testing&lt;/A&gt; warranted an article or not (am not sure when exactly does a post qualify as an article - anyone know of any guidelines?), but I did put it up, partly because I wanted to try out the Article section of the &lt;A href="http://workspaces.gotdotnet.com/dottext"&gt;.Text &lt;/A&gt;blogging application (on which the MSDN blogs are hosted). Does an article differ from a blog post in any concrete way (I know it doesn't show up on the home page where the aggregation of all posts is shown)? Is it any more 'permanent' than a normal post? One advantage I see is that an article might be something more 'updatable' since many people do not consider editing a post blog entry as 'correct'. So I could possibly go back and update an article with more relevant content, links etc.&amp;nbsp;Is that correct?&lt;/P&gt;
&lt;P&gt;I am super excited about model based testing and would love to hear from you about what you think is good/bad/ugly about this testing methodology. Will also hopefully post more about the pros and cons of MBT and share some tips and tricks that I discover on my way. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=144667" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nihitk/archive/tags/General+Software+Testing/default.aspx">General Software Testing</category><category domain="http://blogs.msdn.com/nihitk/archive/tags/Model+Based+Testing/default.aspx">Model Based Testing</category></item></channel></rss>