<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3548556052012121588</id><updated>2012-02-17T05:45:44.602+05:30</updated><title type='text'>Testers Exclusive</title><subtitle type='html'>This blog is dedicated to testers' community. Come... We'll share all our problems/solutions here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://testersexclusive.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://testersexclusive.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>yagna</name><uri>http://www.blogger.com/profile/10023303153123114500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3548556052012121588.post-6026894555043994921</id><published>2009-07-14T20:11:00.003+05:30</published><updated>2009-07-14T20:37:36.872+05:30</updated><title type='text'>Invasive Testing of Java Classes</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link style="font-family: georgia; color: rgb(255, 204, 255);" rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAruna%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link style="font-family: georgia; color: rgb(255, 204, 255);" rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAruna%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C02%5Cclip_filelist.xml"&gt;&lt;span style="color: rgb(255, 204, 255);font-size:100%;" &gt;&lt;o:smarttagtype style="font-family: georgia;" namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="place"&gt;&lt;/o:smarttagtype&gt;&lt;o:smarttagtype style="font-family: georgia;" namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PlaceName"&gt;&lt;/o:smarttagtype&gt;&lt;o:smarttagtype style="font-family: georgia;" namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PlaceType"&gt;&lt;/o:smarttagtype&gt;&lt;i style="font-family: georgia;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if !mso]&gt;&lt;object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id="ieooui"&gt;&lt;/object&gt; &lt;style&gt; st1\:*{behavior:url(#ieooui) } &lt;/style&gt; &lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:"Comic Sans MS"; 	panose-1:3 15 7 2 3 3 2 2 2 4; 	mso-font-charset:0; 	mso-generic-font-family:script; 	mso-font-pitch:variable; 	mso-font-signature:647 0 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;Unit testing &lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;is an important element of testing software. In object-oriented software development, this term commonly refers to testing an individual class. The term &lt;i&gt;integration testing &lt;/i&gt;denotes testing a group of classes, and the term &lt;i&gt;system testing &lt;/i&gt;refers to testing the application as a whole. In the simplest and most widely followed testing practice, developers of classes are expected to perform unit and integration testing of their respective classes before releasing their library to other groups. The test team is responsible for system testing before releasing the application to clients.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;There is on-going research in the area of testing object-oriented software, and a lot more needs to be done. Since class testing is the starting point of testing object-oriented software, understanding the issues involved and devising a way to perform effective class testing is a crucial first step in delivering high quality software. At Man Machine Systems, we have developed a new model for testing Java classes, called &lt;i&gt;invasive testing. &lt;/i&gt;We believe this model can make class testing more interesting and effective. Testing is typically characterized as a &lt;i&gt;destructive &lt;/i&gt;process, so the term &lt;i&gt;effective &lt;/i&gt;suggests that the tester&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;* &lt;/span&gt;&lt;span style="font-size:100%;"&gt;must be able to uncover a &lt;i&gt;maximum &lt;/i&gt;number of bugs with a &lt;i&gt;minimum &lt;/i&gt;of effort. In this article, we describe our model with examples and compare it with conventional unit testing techniques.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;Invasive &lt;b&gt;and &lt;/b&gt;Intrusive &lt;b&gt;Testing of a Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;We define &lt;b&gt;&lt;i&gt;invasive &lt;/i&gt;&lt;/b&gt;testing as a technique that uses the normally inaccessible elements of a class to increase the effectiveness of testing. When the class under test is modified to&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Support testing, we call this &lt;b&gt;&lt;i&gt;intrusive &lt;/i&gt;&lt;/b&gt;testing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;If a class &lt;i&gt;C &lt;/i&gt;comprises a set &lt;i&gt;M &lt;/i&gt;of methods that belong in the class interface, intrusive testing typically assumes the existence of &lt;i&gt;N &lt;/i&gt;additional methods and modifications to some or all of the &lt;i&gt;M &lt;/i&gt;methods to aid testing. The additional &lt;i&gt;N &lt;/i&gt;methods are not intended to be used by normal clients of the class (and are not part of the published class interface), but are defined purely to support testing. If methods in sets &lt;i&gt;M &lt;/i&gt;or &lt;i&gt;N &lt;/i&gt;access private members of the class, then the technique is invasive as well. Plain invasive testing does not modify the class under test, but would use private details of the class that normal users cannot access.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Let us first review conventional class testing strategies before investigating invasive testing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Conventional Class Testing Strategies&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;1. Tester as client, version - 1 (non-invasive, non-intrusive):&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;This is the most common strategy for testing classes. The tester writes a driver in the same language as the class under test, and exercises the published methods of the class, following a set of test criteria, such as coverage. Since the driver code resides in a different class than the tested one, accessibility rules defined in the language apply. Consider the stack implementation &lt;b&gt;&lt;i&gt;MyStack &lt;/i&gt;&lt;/b&gt;shown in Figure 1 as an example of a Java class to be tested.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;class MyStack &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private Object[] elems;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private int top, max;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public MyStack(int sz)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;max = sz;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;elems = new Object[sz];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public void push(Object obj) throws Exception &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( top &lt;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;elems[top++] = obj;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;else throw new Exception("Stack overflow");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public Object pop() throws Exception &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( top &gt; 0 )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return elems[--top];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;throw new Exception("Stack underflow");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public boolean isFull() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return top == max;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public boolean isEmpty() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return top == 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 1: MyStack Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The test driver shown in Figure 2 tests the above stack class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;class StackTester &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public static void main(String[] args) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;MyStack s1 = new MyStack (10); // Max of 10 elements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( !s1.isEmpty() )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Test.error(“Stack is not empty initially!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;StackTester obj1 = new StackTester(); // An object to stack&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 3.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s1.push(obj1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( s1.isEmpty() )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Test.error(“Stack is empty after a push!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;StackTester obj2 = (StackTester) s1.pop();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( obj1 != obj2 )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Test.error(“Problem in push()/pop()!”); // ----- (A)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// ... Other code&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 2: A Typical Driver to Test the MyStack class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;We assume the existence of test support routines such as &lt;i&gt;Test.error(String)&lt;/i&gt;. The test driver is written to test invocations of &lt;i&gt;MyStack&lt;/i&gt;’s public methods in some combination.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Benefits&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) The technique is intuitive since it simulates actual usage of the class under test.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) The class tested is the class actually released to customer since no modification is performed to the class for testing purposes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Limitations&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) Since the tester has to exercise public methods in the class interface, certain methods can only be tested in combinations, not individually. For example, the push (or pop) method cannot be tested in isolation. As a result, if the push/pop combination fails, it could be due to a bug in either or both the methods and additional tests may be needed before the actual bug may be isolated. Even if the push/pop combination matches, there is no guarantee that they are both correct; it is conceivable that both have bugs that coincidentally produce the correct behavior. Once again, additional combinations will have to be tried.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) It is not always possible to exercise all parts of the implementation adequately by invoking public methods alone.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) There is no way to test interfaces either.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;2. Tester as client, version – 2 (non-invasive, intrusive):&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;In this scenario, the class to be tested is modified to support testing. Accessible &lt;b&gt;&lt;i&gt;getter &lt;/i&gt;&lt;/b&gt;and &lt;b&gt;&lt;i&gt;setter &lt;/i&gt;&lt;/b&gt;methods are added for all state variables that are otherwise inaccessible.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Alternatively, all elements of the class are made &lt;b&gt;&lt;i&gt;public &lt;/i&gt;&lt;/b&gt;to grant unrestricted access. This permits the tester to overcome the limitations of approach (1) above. The &lt;b&gt;&lt;i&gt;MyStack &lt;/i&gt;&lt;/b&gt;class of Figure 1, according to this strategy, might be modified as depicted in Figure 3:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;class MyStack &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Private elements are public – FOR TESTING ONLY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public Object[] elems;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Private elements are public – FOR TESTING ONLY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public int top, max;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public MyStack(int sz) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;max = sz;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;elems = new Object[sz];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public void push(Object obj) throws Exception &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( top &lt;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;elems[top++] = obj;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;else throw new Exception("Stack overflow");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public Object pop() throws Exception &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( top &gt; 0 )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return elems[--top];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;throw new Exception("Stack underflow");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public boolean isFull() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return top == max;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public boolean isEmpty() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return top == 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 3: Modified MyStack Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The test driver is now rewritten to take advantage of private details of the class to perform more effective testing. Figure 4 shows how this can be done.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;class StackTester &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public static void main(String[] args) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;MyStack s1 = new MyStack (10); // Max of 10 elements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( !s1.isEmpty() )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Test.error( “Stack is not empty initially!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;StackTester obj1 = new StackTester(); // An object to stack&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s1.push(obj1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;Test.assert( (s1.top == 1) &amp;amp;&amp;amp; (s1.elems[s1.top-1] == obj1),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 3.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;“Push failed!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;StackTester obj2 = (StackTester) s1.pop();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 3.5in; text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;Test.assert( (s1.top == 0) &amp;amp;&amp;amp; (obj2 == obj1), “Pop failed!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// ... Other code&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 4: Stack Tester Driver&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Benefits&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The semantics of individual methods can be verified. This can reduce the test effort, since the number of methods is much less than the number of method combinations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Limitations&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) The class tested is different than the one released to a client.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) The tester needs to understand the class implementation details, in addition to its interface. For complex classes, this could be quite difficult.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) If the class implementation changes in future, the driver code will have to be appropriately modified.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;4) The source code for the class is required.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;3. Automatically instrumenting the code with assertions (invasive, intrusive):&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;This is a very promising approach for testing object-oriented software. In this case, the developer embeds assertions (class invariant, method pre- and post conditions) inside comments in the source code. A preprocessor parses these assertions and emits the modified source where the assertions have been appropriately moved to method bodies. The preprocessed code is compiled using a standard Java compiler. The resulting application is then run as if it were the original program. Any violation of contracts will be reported by the assertions layer. Figure 5 below gives an example of how assertions might be specified.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;/**&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;* @inv (top &gt;= 0) &amp;amp;&amp;amp; (top &lt;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;class MyStack &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private Object[] elems;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private int top, max;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;/**&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;* @post (max == sz) &amp;amp;&amp;amp; (top == 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public MyStack(int sz) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;max = sz;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;elems = new Object[sz];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;/**&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;* @pre top &lt;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;* @post (top == top$prev + 1) &amp;amp;&amp;amp; (elems[top-1] == obj)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public void push(Object obj) throws Exception &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( top &lt;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;elems[top++] = obj;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;else throw new Exception("Stack overflow");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;/**&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;* &lt;assertions&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/assertions&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public Object pop() throws Exception &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( top &gt; 0 )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return elems[--top];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;throw new Exception("Stack underflow");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public boolean isFull() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return top == max;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public boolean isEmpty() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return top == 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; text-indent: 0.5in; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 5: MyStack Class with Assertions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The assertion language depends on the tool used; currently there is no standard. The example above uses a syntax supported by our tool JMSAssert&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;TM &lt;/span&gt;&lt;span style="font-size:100%;"&gt;that generates a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;JMScript&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;TM &lt;/span&gt;&lt;span style="font-size:100%;"&gt;test script file (discussed later). Reto Cramer’s &lt;i&gt;iContract &lt;/i&gt;is another interesting tool in the public domain that supports assertions in Java classes &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;1&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Benefits&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) Reasonably complex class invariants, pre- and post conditions may be specified.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) Since the assertions are defined as part of class/method comments, the source can be recompiled to get uninstrumented classes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) This approach assists in testing the complete application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Limitations&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) The class tested is different than the one released to a client.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) Source code has to be available to instrument with assertions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) The assertion language is proprietary, so moving to another preprocessing tool is difficult.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;4) To test classes individually (not as a sealed off application), a test driver still has to be written.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;5) Individual methods cannot be tested because of access restrictions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;4. Tester is the developer (invasive, intrusive):&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;In this case, the test driver resides within the class being tested. Typically, this is the &lt;b&gt;&lt;i&gt;main &lt;/i&gt;&lt;/b&gt;method or a &lt;b&gt;&lt;i&gt;test &lt;/i&gt;&lt;/b&gt;method that is static. When it is invoked, the test logic is exercised. Since the method is part of the class, access restrictions do not apply; all elements of the class can be accessed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;class MyStack {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// ... Insert stack related elements here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// This is the stack test driver. It is part of the class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// itself.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public static void main(String[] args) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;MyStack s1 = new MyStack (10); // Max of 10 elements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if( !s1.isEmpty() )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Test.error( “Stack is not empty initially!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;MyStack obj1 = new MyStack (); // An object to stack&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s1.push(obj1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;Test.assert( (s1.top == 1) &amp;amp;&amp;amp; (s1.elems[s1.top-1] == obj1),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;“Push failed!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;MyStack obj2 = (MyStack) s1.pop();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;Test.assert( (s1.top == 0) &amp;amp;&amp;amp; (obj2 == obj1), “Pop failed!”);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// ... Other code&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 6: Test Driver in MyStack&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Benefits&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) There is no need to convert &lt;i&gt;private &lt;/i&gt;elements to &lt;i&gt;public &lt;/i&gt;for the sake of testing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) The test driver for the class is self-contained, so the driver is more likely to be in sync with the class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Limitations&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) The test driver cannot be reused when the class evolves. For each version of the class, corresponding version of the driver inside the class (perhaps copying and pasting from previous version) must be developed. To facilitate regression testing, it is better to have the driver separated from the class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) The source code has to be available.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) When the class is delivered to a client, the test driver constitutes &lt;i&gt;excess baggage&lt;/i&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;However, if the driver is removed from the code, then two version of the class have to be maintained, one with the driver and another without the driver.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Invasive Testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;It is a widely acknowledged fact that testing object-oriented software is more difficult than testing nonobject-oriented software. Payne et. al.&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;2 &lt;/span&gt;&lt;span style="font-size:100%;"&gt;point out that &lt;i&gt;“from the value of testing perspective, information hiding reduces the ability for faults to propagate to an observable output and hence reduces the likelihood that faults will be revealed during testing”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The invasive model that is proposed allows the tester to tunnel through the information hiding barrier and write a driver that accesses the normally inaccessible elements of a class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;This can occur without making changes to the class source. In fact, the approach does not require Java source code to be available for testing purposes. To assist in achieving this, a scripting language has been developed, called JMScript™ that is layered on Java. The language allows a tester to write a script that instantiates Java objects and send messages to them. This is very similar to what happens in the Java language itself. Like many other scripting languages, it is weakly and dynamically typed. These types are associated with values of objects and not with variables. Once a Java object is instantiated in the script, any element of the object, be it private or protected, can be accessed without restriction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The following JMScript driver illustrates one way of testing the &lt;i&gt;MyStack &lt;/i&gt;class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// MyStackTest.jms&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;main() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Stack size&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;sz = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Create a stack instance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s = new MyStack(sz);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assert(s.top == 0 &amp;amp;&amp;amp; s.max == sz);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Stack instantiation is OK");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Push just one object - a stack object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;obj1 = new MyStack(1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s.push(obj1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assert(s.top == 1 &amp;amp;&amp;amp; s.elems[s.top-1] == obj1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Stack.push works OK");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Pop and check&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;obj2 = s.pop();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assert(s.top == 0 &amp;amp;&amp;amp; obj2 == obj1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Stack.pop works OK");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Another pop - must result in underflow exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s.pop();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Empty pop fails to throw exception!");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;catch(Exception e) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Empty pop throws exception as expected");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Simulate stack full condition&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s.top = s.max;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Push, now, must result in overflow exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s.push(obj1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Push on full fails to throw exception!");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;catch(Exception e) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Push on full throws exception as expected");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Similarly, test other methods individually&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("*** Stack test completed - relax now!!");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 7 Testing MyStack Using JMScript&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The script can be executed by running the command line version of the interpreter (or the more sophisticated &lt;b&gt;&lt;i&gt;JVerify&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;™ &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;environment can be used, that includes the interpreter and much more).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The script accesses even the private elements of a class, bypassing Java’s access control mechanism. Notice how assertions are used after every method call to check the postcondition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;However, explicitly checking the post-conditions can litter the script with too many assertions. There is a more convenient way to do this, as shown in the following test script.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// MyStackTest2.jms&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;main() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;sz = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Create a stack instance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s = new MyStack(sz);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s.push( new Object() );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// ... Other code not shown&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Class invariant trigger&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;invariant(meth, s){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;trace("meth=&gt;" + meth);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assert(s.top &gt;= 0 &amp;amp;&amp;amp; s.top &lt;= s.max &amp;amp;&amp;amp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;s.elems != null);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;trace("Invariant checked inside:" + (meth.equals("&lt;init&gt;") ?&lt;o:p&gt;&lt;/o:p&gt;&lt;/init&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;"Constructor": meth));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Automatically called by the interpreter on exit from&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Stack constructor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;postCtor(method, s, sz) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assert(s.top == 0 &amp;amp;&amp;amp; s.max == sz &amp;amp;&amp;amp; s.elems != null);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;trace("postCtor called");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;prePush(meth, s, obj) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assert( s.isFull() == false &amp;amp;&amp;amp; obj != null );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;trace("prePush called");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// This is the static block – meant for one-time execution&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;static {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Denote assertion functions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;asserts =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{{"","INVARIANT", "MyStackTest2.invariant"},&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{"&lt;init&gt;(I)V", "POSTCONDITION", "MyStackTest2.postCtor"},&lt;o:p&gt;&lt;/o:p&gt;&lt;/init&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;{"push(Ljava/lang/Object;)V", "PRECONDITION",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;"MyStackTest2.prePush"}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Install assertion functions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setClassTrigger("MyStack", asserts);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 8 JMScript Using Assertions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;This example illustrates that a tester can identify an invariant for a class, a set of pre- and post conditions for methods and register those with the interpreter. When a method is invoked from the test script, the corresponding precondition, postcondition and invariant routines are automatically and appropriately executed by the interpreter. The sequence followed by the interpreter is:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;§ &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Check class invariant&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;§ &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Check precondition for the method&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;§ &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Invoke method&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;§ &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Check Post condition for the method&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;§ &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Check class invariant&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;There are exceptions to this rule, but that is beyond the scope of this article.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;It is possible to do better than setting up triggers manually as outlined above. If the class source is available and assertions are embedded in comments as shown in Figure 5, another utility called &lt;b&gt;&lt;i&gt;JMSAssert&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style=""&gt;TM &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;will parse these and automatically generate a script file containing appropriate triggers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Table 1 gives a comparison of the different techniques considered so far.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Technique Invasive Intrusive&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Source&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Code&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Needed&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) Tester as a client, version 1 No No No&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) Tester as a client, version 2 No Yes Yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) Automatic instrumentation with assertions Yes Yes Yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;4) Tester as a developer Yes Yes Yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;5) Invasive testing Yes No No&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Table 1. Comparing the Techniques&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Testing State Machines&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The invasive model provides a convenient approach to testing state machines. In general, testing a state machine tends to be fairly involved because of the potentially infinite &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;Start&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'C'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'A'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'D'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'B'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'H'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'F'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'G' 'J'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'K'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'I'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;'E'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;Final&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 9: State Machine&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;number of states possible. The ability to access private details could considerably reduce the effort (the downside is that intimate knowledge of the class may be required).&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Consider the state machine shown in Figure 9. The corresponding Java source is given in&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Figure 10 (to emphasize clarity, several optimizations have been left out).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public class FSM {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private FSMState start, one, two, three, four;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private FSMState current;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public FSM() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;one = new FSMStateOne();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;two = new FSMStateTwo();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;start = new FSMStateStart();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;three = new FSMStateThree();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;four = new FSMStateFour();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;reset();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public void reset() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;current = start;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public void transition(char c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if(current != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;current = current.transition(c);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;public final boolean done() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return (current != null) &amp;amp;&amp;amp; current.isFinal();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private static abstract class FSMState {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;abstract FSMState transition(char c);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;boolean isFinal() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return false;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private class FSMStateStart extends FSMState {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;FSMState transition(char c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;switch (c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'A':&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'C': return one;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'D': return two;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;default: return null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private class FSMStateOne extends FSMState {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;FSMState transition(char c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;switch (c) &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'B': return this;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'F': return three;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;default: return null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private class FSMStateTwo extends FSMState {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;FSMState transition(char c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;switch (c) &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'E': return this;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'G': return three;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'I': return four;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;default: return null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private class FSMStateThree extends FSMState {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;FSMState transition(char c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;switch (c) &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'H': return two;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'J': return four;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;default: return null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;private class FSMStateFour extends FSMState {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;boolean isFinal() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;return true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;FSMState transition(char c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;switch (c) &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=""&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;case 'K': return this;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;default: return null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 10. A State Machine in Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;How can we prove that the Java program of Figure 10 accepts &lt;i&gt;all &lt;/i&gt;the strings as per the state machine specification of Figure 9? Clearly, testing with &lt;i&gt;all &lt;/i&gt;strings is impossible. Here is how the state machine can be tested using JMScript:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Testing the FSM involves testing each state transition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// This requires migrating the FSM to the appropriate state&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// and then invoking the transition function.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// File: fsmtest.jms&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;main() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;createFSM();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateStart();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateOne();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateTwo();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateThree();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateFour();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;System.out.println("*** FSM Testing Done!! ***");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;createFSM() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;this.fsm = new FSM();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("start");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateStart() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("start"); // Start at “start”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('A');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("one"); // Must be in “one”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("start"); // Reset to “start”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('C');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("one"); // Must be in “one”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("start"); // Reset to “start”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('D');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("two"); // Must be in “two”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateOne() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("one");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('B');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("one");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("one");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('F');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("three");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateTwo() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("two");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('E');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("two");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("two");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('G');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("three");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("two");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('I');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("four");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateThree() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("three");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('J');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("four");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("three");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('H');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("two");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;checkStateFour() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState("four");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition('K');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState("four");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;// Utility routines&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;assertState(state) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if (this.fsm.current != getField(this.fsm, state))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;throw new Exception("&lt;st1:place st="on"&gt;&lt;st1:placename st="on"&gt;Bad&lt;/st1:placename&gt; &lt;st1:placename st="on"&gt;FSM&lt;/st1:placename&gt; &lt;st1:placetype st="on"&gt;State&lt;/st1:placetype&gt;&lt;/st1:place&gt;!");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;setState(state) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;this.fsm.current = getField(this.fsm, state);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;transition(ch) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;this.fsm.transition(ch);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;exceptionHandler(meth, excp) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;if(meth != "assertState") {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;println("Exception: " + excp + " occurred in: " + meth);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Figure 11. Testing FSM Using JMScript&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;The basis for the testing strategy used above, is to drive the state machine to each intermediate state not allowed normally, and then to ensure that when an input is received, it transitions correctly to the next state.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Benefits&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) The class under test is not modified to support testing. The class tested is the same as the class released to a client.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) Source code for the class does not need to be available. (This means it is possible to&lt;span style=""&gt;  &lt;/span&gt;test third party libraries.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) The test driver accesses implementation details, if necessary, to test individual methods, not combinations. This can minimize testing effort.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;4) Class invariant, method pre- and post conditions can be complex in real situations. The support for such arbitrarily complex conditions is taken care of by providing procedures&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;in JMScript.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;5) Since the test driver is separate from the class being tested, reuse of the test cases is possible throughout regression testing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Limitations&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;1) The test script is written in a language different than Java. This means learning a new language.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;2) Assertions are checked only for Java methods executed directly from JMScript. If a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Java method &lt;b&gt;&lt;i&gt;m1 &lt;/i&gt;&lt;/b&gt;internally calls another method &lt;b&gt;&lt;i&gt;m2&lt;/i&gt;&lt;/b&gt;, automatic checking of invariant, pre- and post conditions is performed for &lt;b&gt;&lt;i&gt;m2&lt;/i&gt;&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;3) This is ideally suited to perform unit testing of individual classes and integration testing of small groups of classes, but not for system testing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;4) This relies heavily on the commitment of the development environment to the usage of&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Design by Contract&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;TM&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;JVerify™ Test Environment&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;To create, execute and test JMScript scripts, we have developed JVerify, a GUI-based Windows&lt;/span&gt;&lt;span style=";font-size:100%;" &gt;TM &lt;/span&gt;&lt;span style="font-size:100%;"&gt;application. The environment supports a debugger that allows setting breakpoints, and examining the execution snapshot through an object browser, and call stack. Another salient feature of the environment is the facility to understand a class' interface from its &lt;b&gt;&lt;i&gt;.class &lt;/i&gt;&lt;/b&gt;file. This can be quite useful when the source for the class under test is not available.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;Testing object-oriented software is more difficult because of information hiding. Invasive testing, proposed in this article, makes a tester “all powerful” by allowing access to private details of the class under test. This model renders a class more amenable to testing (even if it has not been designed for testability). This model is also particularly useful for testing state machines. A scripting language called JMScript, layered on Java, has been designed to support class invasion in the context of Java programs. More information about the language and associated tools is available at &lt;/span&gt;&lt;span style="font-size:100%;"&gt;www.mmsindia.com&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: georgia; color: rgb(255, 204, 255);" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style="font-size:100%;"&gt;This was published by &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;K.Rangaraajan, Man Machine Systems.&lt;span style=""&gt;  &lt;/span&gt;Thanks to the author.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: georgia; color: rgb(255, 204, 255);"&gt;&lt;span style=";font-size:100%;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548556052012121588-6026894555043994921?l=testersexclusive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testersexclusive.blogspot.com/feeds/6026894555043994921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3548556052012121588&amp;postID=6026894555043994921&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/6026894555043994921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/6026894555043994921'/><link rel='alternate' type='text/html' href='http://testersexclusive.blogspot.com/2009/07/invasive-testing-of-java-classes.html' title='Invasive Testing of Java Classes'/><author><name>yagna</name><uri>http://www.blogger.com/profile/10023303153123114500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3548556052012121588.post-1273973574256812498</id><published>2009-07-14T18:45:00.000+05:30</published><updated>2009-07-14T18:47:08.022+05:30</updated><title type='text'>Quotes on Testers</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1.ARG%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C02%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:PMingLiU; 	panose-1:2 2 3 0 0 0 0 0 0 0; 	mso-font-alt:新細明體; 	mso-font-charset:136; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:3 137232384 22 0 1048577 0;} @font-face 	{font-family:Georgia; 	panose-1:2 4 5 2 5 4 5 2 3 3; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:647 0 0 0 159 0;} @font-face 	{font-family:"\@PMingLiU"; 	panose-1:2 2 3 0 0 0 0 0 0 0; 	mso-font-charset:136; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:3 137232384 22 0 1048577 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:PMingLiU;} p 	{mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:PMingLiU;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:180512219; 	mso-list-type:hybrid; 	mso-list-template-ids:-1017984288 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:.5in; 	mso-level-number-position:left; 	text-indent:-.25in; 	font-family:Symbol;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;    &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;I have to start testing. After all, I need some sleep. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;A bug is what a tester gets when he gets tired of thinking. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;For every developer, there is an equal and opposite tester. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;To tell somebody that he is wrong is called criticism; to do so officially is called testing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;You never really learn to swear until you begin a testing career. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;90% of the people in the world are below average. The rest are testers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;If at first you don't succeed, put it out for beta test. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Crime doesn't pay... does that mean testing is a crime? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Sign on testers’ doors: Do not disturb. Already disturbed! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Testers who seek to be equal to developers lack ambition. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Testing is like news. Same shit; different day. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Testers are free of prejudice. They hate everyone equally Testers take a lot of pain to test. They also pass it on to others. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Testers and developers: they make an extraordinary team. One is extra and the other ordinary &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Definition of a tester: A sophistical rhetorician, inebriated with the exuberance of his own verbosity, and gifted with an egotistical imagination that can at all times command an interminable and inconsistent series of arguments to malign an opponent and to glorify himself. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Every tester has basically one joke. And he’s it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;How many testers does it need to change a light bulb? None. It is the developers who do the dirty work. Testers will just point out whether it is screwed up or not. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;"If debugging is the process of removing software bugs, then programming must be the process of putting them in." &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday's code." &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;You start coding. I'll go find out what they want." — Computer analyst to programmer &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Georgia;"&gt;3 Biggest Software Lies:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.75in; text-align: justify; text-indent: 0.25in; line-height: 150%;"&gt;&lt;span style="font-family:Georgia;"&gt;• The program's fully tested and bug-free.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in; line-height: 150%;"&gt;&lt;span style="font-family:Georgia;"&gt;• We're working on the documentation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 0.75in; text-align: justify; text-indent: 0.25in; line-height: 150%;"&gt;&lt;span style="font-family:Georgia;"&gt;• Of course we can modify it."&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:Georgia;font-size:12;"  &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548556052012121588-1273973574256812498?l=testersexclusive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testersexclusive.blogspot.com/feeds/1273973574256812498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3548556052012121588&amp;postID=1273973574256812498&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/1273973574256812498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/1273973574256812498'/><link rel='alternate' type='text/html' href='http://testersexclusive.blogspot.com/2009/07/quotes-on-testers.html' title='Quotes on Testers'/><author><name>yagna</name><uri>http://www.blogger.com/profile/10023303153123114500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3548556052012121588.post-8714132891622037213</id><published>2009-07-13T18:14:00.003+05:30</published><updated>2009-07-13T18:38:01.469+05:30</updated><title type='text'>ISTQB Sample Question Paper</title><content type='html'>&lt;span style="font-weight: bold;"&gt;1 When what is visible to end-users is a deviation from the specific or expected behavior, this is called:&lt;/span&gt;&lt;br /&gt;a) an error&lt;br /&gt;b) a fault&lt;br /&gt;c) a failure&lt;br /&gt;d) a defect&lt;br /&gt;e) a mistake&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2 Regression testing should be performed:&lt;/span&gt;&lt;br /&gt;v) every week&lt;br /&gt;w) after the software has changed&lt;br /&gt;x) as often as possible&lt;br /&gt;y) when the environment has changed&lt;br /&gt;z) when the project manager says&lt;br /&gt;&lt;br /&gt;a) v &amp;amp; w are true, x – z are false&lt;br /&gt;b) w, x &amp;amp; y are true, v &amp;amp; z are false&lt;br /&gt;c) w &amp;amp; y are true, v, x &amp;amp; z are false&lt;br /&gt;d) w is true, v, x y and z are false&lt;br /&gt;e) all of the above are true&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3 IEEE 829 test plan documentation standard contains all of the following except:&lt;/span&gt;&lt;br /&gt;a) test items&lt;br /&gt;b) test deliverables&lt;br /&gt;c) test tasks&lt;br /&gt;d) test environment&lt;br /&gt;e) test specification&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4 Testing should be stopped when:&lt;/span&gt;&lt;br /&gt;a) all the planned tests have been run&lt;br /&gt;b) time has run out&lt;br /&gt;c) all faults have been fixed correctly&lt;br /&gt;d) both a) and c)&lt;br /&gt;e) it depends on the risks for the system being tested&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5 Order numbers on a stock control system can range between 10000 and 99999 inclusive. Which of the following inputs might be a result of designing tests for only valid equivalence classes and valid boundaries:&lt;/span&gt;&lt;br /&gt;a) 1000, 5000, 99999&lt;br /&gt;b) 9999, 50000, 100000&lt;br /&gt;c) 10000, 50000, 99999&lt;br /&gt;d) 10000, 99999&lt;br /&gt;e) 9999, 10000, 50000, 99999, 10000&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6 Consider the following statements about early test design:&lt;/span&gt;&lt;br /&gt;i. early test design can prevent fault multiplication&lt;br /&gt;ii. faults found during early test design are more expensive to fix&lt;br /&gt;iii. early test design can find faults&lt;br /&gt;iv. early test design can cause changes to the requirements&lt;br /&gt;v. early test design takes more effort&lt;br /&gt;&lt;br /&gt;a) i, iii &amp;amp; iv are true. Ii &amp;amp; v are false&lt;br /&gt;b) iii is true, I, ii, iv &amp;amp; v are false&lt;br /&gt;c) iii &amp;amp; iv are true. i, ii &amp;amp; v are false&lt;br /&gt;d) i, iii, iv &amp;amp; v are true, ii us false&lt;br /&gt;e) i &amp;amp; iii are true, ii, iv &amp;amp; v are false&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7 Non-functional system testing includes:&lt;/span&gt;&lt;br /&gt;a) testing to see where the system does not function properly&lt;br /&gt;b) testing quality attributes of the system including performance and usability&lt;br /&gt;c) testing a system feature using only the software required for that action&lt;br /&gt;d) testing a system feature using only the software required for that function&lt;br /&gt;e) testing for functions that should not exist&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8 Which of the following is NOT part of configuration management:&lt;/span&gt;&lt;br /&gt;a) status accounting of configuration items&lt;br /&gt;b) auditing conformance to ISO9001&lt;br /&gt;c) identification of test versions&lt;br /&gt;d) record of changes to documentation over time&lt;br /&gt;e) controlled library access&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9 Which of the following is the main purpose of the integration strategy for integration testing in the small?&lt;/span&gt;&lt;br /&gt;a) to ensure that all of the small modules are tested adequately&lt;br /&gt;b) to ensure that the system interfaces to other systems and networks&lt;br /&gt;c) to specify which modules to combine when and how many at once&lt;br /&gt;d) to ensure that the integration testing can be performed by a small team&lt;br /&gt;e) to specify how the software should be divided into modules&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10 What is the purpose of test completion criteria in a test plan:&lt;/span&gt;&lt;br /&gt;a) to know when a specific test has finished its execution&lt;br /&gt;b) to ensure that the test case specification is complete&lt;br /&gt;c) to set the criteria used in generating test inputs&lt;br /&gt;d) to know when test planning is complete&lt;br /&gt;e) to plan when to stop testing&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;11 Consider the following statements&lt;/span&gt;&lt;br /&gt;i. an incident may be closed without being fixed&lt;br /&gt;ii. incidents may not be raised against documentation&lt;br /&gt;iii. the final stage of incident tracking is fixing&lt;br /&gt;iv. the incident record does not include information on test environments&lt;br /&gt;v. incidents should be raised when someone other than the author of the software performs the test&lt;br /&gt;&lt;br /&gt;a) ii and v are true, I, iii and iv are false&lt;br /&gt;b) i and v are true, ii, iii and iv are false&lt;br /&gt;c) i, iv and v are true, ii and iii are false&lt;br /&gt;d) i and ii are true, iii, iv and v are false&lt;br /&gt;e) i is true, ii, iii, iv and v are false&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;12 Given the following code, which is true about the minimum number of test cases required for full statement and branch coverage:&lt;/span&gt;&lt;br /&gt;Read P&lt;br /&gt;Read Q&lt;br /&gt;IF P+Q &gt; 100 THEN&lt;br /&gt;Print “Large”&lt;br /&gt;ENDIF&lt;br /&gt;If P &gt; 50 THEN&lt;br /&gt;Print “P Large”&lt;br /&gt;ENDIF&lt;br /&gt;&lt;br /&gt;a) 1 test for statement coverage, 3 for branch coverage&lt;br /&gt;b) 1 test for statement coverage, 2 for branch coverage&lt;br /&gt;c) 1 test for statement coverage, 1 for branch coverage&lt;br /&gt;d) 2 tests for statement coverage, 3 for branch coverage&lt;br /&gt;e) 2 tests for statement coverage, 2 for branch coverage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;13 Given the following:&lt;/span&gt;&lt;br /&gt;Switch PC on&lt;br /&gt;Start “outlook”&lt;br /&gt;IF outlook appears THEN&lt;br /&gt;Send an email&lt;br /&gt;Close outlook&lt;br /&gt;&lt;br /&gt;a) 1 test for statement coverage, 1 for branch coverage&lt;br /&gt;b) 1 test for statement coverage, 2 for branch coverage&lt;br /&gt;c) 1 test for statement coverage. 3 for branch coverage&lt;br /&gt;d) 2 tests for statement coverage, 2 for branch coverage&lt;br /&gt;e) 2 tests for statement coverage, 3 for branch coverage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;14 Given the following code, which is true:&lt;/span&gt;&lt;br /&gt;IF A &gt; B THEN&lt;br /&gt;C = A – B&lt;br /&gt;ELSE&lt;br /&gt;C = A + B&lt;br /&gt;ENDIF&lt;br /&gt;Read D&lt;br /&gt;IF C = D Then&lt;br /&gt;Print “Error”&lt;br /&gt;ENDIF&lt;br /&gt;&lt;br /&gt;a) 1 test for statement coverage, 3 for branch coverage&lt;br /&gt;b) 2 tests for statement coverage, 2 for branch coverage&lt;br /&gt;c) 2 tests for statement coverage. 3 for branch coverage&lt;br /&gt;d) 3 tests for statement coverage, 3 for branch coverage&lt;br /&gt;e) 3 tests for statement coverage, 2 for branch coverage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;15 Consider the following:&lt;/span&gt;&lt;br /&gt;Pick up and read the newspaper&lt;br /&gt;Look at what is on television&lt;br /&gt;If there is a program that you are interested in watching then switch the the television on and watch the program&lt;br /&gt;Otherwise&lt;br /&gt;Continue reading the newspaper&lt;br /&gt;If there is a crossword in the newspaper then try and complete the crossword&lt;br /&gt;&lt;br /&gt;a) SC = 1 and DC = 1&lt;br /&gt;b) SC = 1 and DC = 2&lt;br /&gt;c) SC = 1 and DC = 3&lt;br /&gt;d) SC = 2 and DC = 2&lt;br /&gt;e) SC = 2 and DC = 3&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;16 The place to start if you want a (new) test tool is:&lt;/span&gt;&lt;br /&gt;a) Attend a tool exhibition&lt;br /&gt;b) Invite a vendor to give a demo&lt;br /&gt;c) Analyse your needs and requirements&lt;br /&gt;d) Find out what your budget would be for the tool&lt;br /&gt;e) Search the internet&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;17 When a new testing tool is purchased, it should be used first by:&lt;/span&gt;&lt;br /&gt;a) A small team to establish the best way to use the tool&lt;br /&gt;b) Everyone who may eventually have some use for the tool&lt;br /&gt;c) The independent testing team&lt;br /&gt;d) The managers to see what projects it should be used in&lt;br /&gt;e) The vendor contractor to write the initial scripts&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;18 What can static analysis NOT find?&lt;/span&gt;&lt;br /&gt;a) The use of a variable before it has been defined&lt;br /&gt;b) Unreachable (“dead”) code&lt;br /&gt;c) Whether the value stored in a variable is correct&lt;br /&gt;d) The re-definition of a variable before it has been used&lt;br /&gt;e) Array bound violations&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;19 Which of the following is NOT a black box technique:&lt;/span&gt;&lt;br /&gt;a) Equivalence partitioning&lt;br /&gt;b) State transition testing&lt;br /&gt;c) LCSAJ&lt;br /&gt;d) Syntax testing&lt;br /&gt;e) Boundary value analysis&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;20 Beta testing is:&lt;/span&gt;&lt;br /&gt;a) Performed by customers at their own site&lt;br /&gt;b) Performed by customers at their software developer’s site&lt;br /&gt;c) Performed by an independent test team&lt;br /&gt;d) Useful to test bespoke software&lt;br /&gt;e) Performed as early as possible in the lifecycle&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;21 Given the following types of tool, which tools would typically be used by developers and which by an independent test team:&lt;/span&gt;&lt;br /&gt;i. static analysis&lt;br /&gt;ii. performance testing&lt;br /&gt;iii. test management&lt;br /&gt;iv. dynamic analysis&lt;br /&gt;v. test running&lt;br /&gt;vi. test data preparation&lt;br /&gt;&lt;br /&gt;a) developers would typically use i, iv and vi; test team ii, iii and v&lt;br /&gt;b) developers would typically use i and iv; test team ii, iii, v and vi&lt;br /&gt;c) developers would typically use i, ii, iii and iv; test team v and vi&lt;br /&gt;d) developers would typically use ii, iv and vi; test team I, ii and v&lt;br /&gt;e) developers would typically use i, iii, iv and v; test team ii and vi&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;22 The main focus of acceptance testing is:&lt;/span&gt;&lt;br /&gt;a) finding faults in the system&lt;br /&gt;b) ensuring that the system is acceptable to all users&lt;br /&gt;c) testing the system with other systems&lt;br /&gt;d) testing for a business perspective&lt;br /&gt;e) testing by an independent test team&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;23 Which of the following statements about the component testing standard is false:&lt;/span&gt;&lt;br /&gt;a) black box design techniques all have an associated measurement technique&lt;br /&gt;b) white box design techniques all have an associated measurement technique&lt;br /&gt;c) cyclomatic complexity is not a test measurement technique&lt;br /&gt;d) black box measurement techniques all have an associated test design technique&lt;br /&gt;e) white box measurement techniques all have an associated test design technique&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;24 Which of the following statements is NOT true:&lt;/span&gt;&lt;br /&gt;a) inspection is the most formal review process&lt;br /&gt;b) inspections should be led by a trained leader&lt;br /&gt;c) managers can perform inspections on management documents&lt;br /&gt;d) inspection is appropriate even when there are no written documents&lt;br /&gt;e) inspection compares documents with predecessor (source) documents&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;25 A typical commercial test execution tool would be able to perform all of the following EXCEPT:&lt;/span&gt;&lt;br /&gt;a) generating expected outputs&lt;br /&gt;b) replaying inputs according to a programmed script&lt;br /&gt;c) comparison of expected outcomes with actual outcomes&lt;br /&gt;d) recording test inputs&lt;br /&gt;e) reading test values from a data file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;26 The difference between re-testing and regression testing is&lt;/span&gt;&lt;br /&gt;a) re-testing is running a test again; regression testing looks for unexpected side effects&lt;br /&gt;b) re-testing looks for unexpected side effects; regression testing is repeating those tests&lt;br /&gt;c) re-testing is done after faults are fixed; regression testing is done earlier&lt;br /&gt;d) re-testing uses different environments, regression testing uses the same environment&lt;br /&gt;e) re-testing is done by developers, regression testing is done by independent testers&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;27 Expected results are:&lt;/span&gt;&lt;br /&gt;a) only important in system testing&lt;br /&gt;b) only used in component testing&lt;br /&gt;c) never specified in advance&lt;br /&gt;d) most useful when specified in advance&lt;br /&gt;e) derived from the code&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;28 Test managers should not:&lt;/span&gt;&lt;br /&gt;a) report on deviations from the project plan&lt;br /&gt;b) sign the system off for release&lt;br /&gt;c) re-allocate resource to meet original plans&lt;br /&gt;d) raise incidents on faults that they have found&lt;br /&gt;e) provide information for risk analysis and quality improvement&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;29 Unreachable code would best be found using:&lt;/span&gt;&lt;br /&gt;a) code reviews&lt;br /&gt;b) code inspections&lt;br /&gt;c) a coverage tool&lt;br /&gt;d) a test management tool&lt;br /&gt;e) a static analysis tool&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;30 A tool that supports traceability, recording of incidents or scheduling of tests is called:&lt;/span&gt;&lt;br /&gt;a) a dynamic analysis tool&lt;br /&gt;b) a test execution tool&lt;br /&gt;c) a debugging tool&lt;br /&gt;d) a test management tool&lt;br /&gt;e) a configuration management tool&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;31 What information need not be included in a test incident report:&lt;/span&gt;&lt;br /&gt;a) how to fix the fault&lt;br /&gt;b) how to reproduce the fault&lt;br /&gt;c) test environment details&lt;br /&gt;d) severity, priority&lt;br /&gt;e) the actual and expected outcomes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;32 Which expression best matches the following characteristics or review processes:&lt;/span&gt;&lt;br /&gt;1. led by author&lt;br /&gt;2. undocumented&lt;br /&gt;3. no management participation&lt;br /&gt;4. led by a trained moderator or leader&lt;br /&gt;5. uses entry exit criteria&lt;br /&gt;&lt;br /&gt;s) inspection&lt;br /&gt;t) peer review&lt;br /&gt;u) informal review&lt;br /&gt;v) walkthrough&lt;br /&gt;&lt;br /&gt;a) s = 4, t = 3, u = 2 and 5, v = 1&lt;br /&gt;b) s = 4 and 5, t = 3, u = 2, v = 1&lt;br /&gt;c) s = 1 and 5, t = 3, u = 2, v = 4&lt;br /&gt;d) s = 5, t = 4, u = 3, v = 1 and 2&lt;br /&gt;e) s = 4 and 5, t = 1, u = 2, v = 3&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;33 Which of the following is NOT part of system testing:&lt;/span&gt;&lt;br /&gt;a) business process-based testing&lt;br /&gt;b) performance, load and stress testing&lt;br /&gt;c) requirements-based testing&lt;br /&gt;d) usability testing&lt;br /&gt;e) top-down integration testing&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;34 What statement about expected outcomes is FALSE:&lt;/span&gt;&lt;br /&gt;a) expected outcomes are defined by the software’s behaviour&lt;br /&gt;b) expected outcomes are derived from a specification, not from the code&lt;br /&gt;c) expected outcomes include outputs to a screen and changes to files and databases&lt;br /&gt;d) expected outcomes should be predicted before a test is run&lt;br /&gt;e) expected outcomes may include timing constraints such as response times&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;35 The standard that gives definitions of testing terms is:&lt;/span&gt;&lt;br /&gt;a) ISO/IEC 12207&lt;br /&gt;b) BS7925-1&lt;br /&gt;c) BS7925-2&lt;br /&gt;d) ANSI/IEEE 829&lt;br /&gt;e) ANSI/IEEE 729&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;36 The cost of fixing a fault:&lt;/span&gt;&lt;br /&gt;a) Is not important&lt;br /&gt;b) Increases as we move the product towards live use&lt;br /&gt;c) Decreases as we move the product towards live use&lt;br /&gt;d) Is more expensive if found in requirements than functional design&lt;br /&gt;e) Can never be determined&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;37 Which of the following is NOT included in the Test Plan document of the Test Documentation Standard:&lt;/span&gt;&lt;br /&gt;a) Test items (i.e. software versions)&lt;br /&gt;b) What is not to be tested&lt;br /&gt;c) Test environments&lt;br /&gt;d) Quality plans&lt;br /&gt;e) Schedules and deadlines&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;38 Could reviews or inspections be considered part of testing:&lt;/span&gt;&lt;br /&gt;a) No, because they apply to development documentation&lt;br /&gt;b) No, because they are normally applied before testing&lt;br /&gt;c) No, because they do not apply to the test documentation&lt;br /&gt;d) Yes, because both help detect faults and improve quality&lt;br /&gt;e) Yes, because testing includes all non-constructive activities&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;39 Which of the following is not part of performance testing:&lt;/span&gt;&lt;br /&gt;a) Measuring response time&lt;br /&gt;b) Measuring transaction rates&lt;br /&gt;c) Recovery testing&lt;br /&gt;d) Simulating many users&lt;br /&gt;e) Generating many transactions&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;40 Error guessing is best used&lt;/span&gt;&lt;br /&gt;a) As the first approach to deriving test cases&lt;br /&gt;b) After more formal techniques have been applied&lt;br /&gt;c) By inexperienced testers&lt;br /&gt;d) After the system has gone live&lt;br /&gt;e) Only by end users&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1.ARG%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:PMingLiU; 	panose-1:2 2 3 0 0 0 0 0 0 0; 	mso-font-alt:新細明體; 	mso-font-charset:136; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:3 137232384 22 0 1048577 0;} @font-face 	{font-family:"\@PMingLiU"; 	panose-1:2 2 3 0 0 0 0 0 0 0; 	mso-font-charset:136; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:3 137232384 22 0 1048577 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:PMingLiU;} a:link, span.MsoHyperlink 	{color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{color:purple; 	text-decoration:underline; 	text-underline:single;} span.translclass 	{mso-style-name:transl_class;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: georgia;" class="translclass"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Click&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: red;"&gt;&lt;span style="font-family: georgia;"&gt; &lt;/span&gt;&lt;span style="font-family: georgia;" class="translclass"&gt;&lt;a href="http://testingunlimited.blogspot.com/"&gt;&lt;span title="Click to correct" id="4"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt; &lt;/span&gt;&lt;span style="font-family: georgia;" class="translclass"&gt;&lt;span title="Click to correct" id="5"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt; &lt;/span&gt;&lt;span style="font-family: georgia;" class="translclass"&gt;&lt;span title="Click to correct" id="6"&gt;more&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt; &lt;/span&gt;&lt;span style="font-family: georgia;" class="translclass"&gt;&lt;span title="Click to correct" id="7"&gt;sample&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt; papers&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="color: red;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p  style="font-weight: bold; color: rgb(255, 0, 0);font-family:georgia;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-weight: bold;font-family:georgia;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: georgia; font-weight: bold;" class="MsoNormal"&gt;Please comment here if you want answers and I’ll send them to your email address&lt;/p&gt;&lt;br /&gt;If you have any doubts on any topic/question or required more material like: ISTQB Sample Question Papers, Tutorials, Presentations, E-Books, Study Sessions etc. on ISTQB Certification, please add a comment with your requirements I will surely reply you shortly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548556052012121588-8714132891622037213?l=testersexclusive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testersexclusive.blogspot.com/feeds/8714132891622037213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3548556052012121588&amp;postID=8714132891622037213&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/8714132891622037213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/8714132891622037213'/><link rel='alternate' type='text/html' href='http://testersexclusive.blogspot.com/2009/07/istqb-sample-question-paper.html' title='ISTQB Sample Question Paper'/><author><name>yagna</name><uri>http://www.blogger.com/profile/10023303153123114500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3548556052012121588.post-9144440961541845481</id><published>2007-08-29T17:07:00.001+05:30</published><updated>2009-07-13T18:09:40.467+05:30</updated><title type='text'>How to write a good test case</title><content type='html'>Some of the tips for writing good test cases:&lt;br /&gt;&lt;br /&gt;1. First, understand the requirement clearly&lt;br /&gt;&lt;br /&gt;2. Do required home work for the testability of the requirement&lt;br /&gt;&lt;br /&gt;3. Classify the type of requirement(GUI,Functional,Database..)&lt;br /&gt;&lt;br /&gt;4. Gather maximum information related and affected areas with this requirement&lt;br /&gt;&lt;br /&gt;5. In Details/Prerequisites/Assumptions section write this information(if you are using TD) which will be more useful for other testers&lt;br /&gt;&lt;br /&gt;6. Use very simple English and general words in writing the description.(please don't show you english talent here).All test steps should be at low level.&lt;br /&gt;&lt;br /&gt;7. Provide test data whenever required(in fact, this is the major factor in mission critical applications).&lt;br /&gt;&lt;br /&gt;8. Write detailed database Queries wherever required(it will save time while executing.)&lt;br /&gt;&lt;br /&gt;9. Write clear Expected Result.&lt;br /&gt;&lt;br /&gt;&lt;!-- Kontera ContentLink(TM);--&gt;&lt;br /&gt;&lt;script type='text/javascript'&gt;&lt;br /&gt;var dc_AdLinkColor = 'blue' ;&lt;br /&gt;var dc_PublisherID = 105333 ;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type='text/javascript' src='http://kona.kontera.com/javascript/lib/KonaLibInline.js'&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- Kontera ContentLink(TM) --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548556052012121588-9144440961541845481?l=testersexclusive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testersexclusive.blogspot.com/feeds/9144440961541845481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3548556052012121588&amp;postID=9144440961541845481&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/9144440961541845481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548556052012121588/posts/default/9144440961541845481'/><link rel='alternate' type='text/html' href='http://testersexclusive.blogspot.com/2007/08/how-to-write-good-test-case.html' title='How to write a good test case'/><author><name>yagna</name><uri>http://www.blogger.com/profile/10023303153123114500</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
