<?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-27679650</id><updated>2012-02-01T20:42:06.946+05:30</updated><category term='Test Complete'/><category term='Business Impact Analysis'/><category term='t'/><category term='Product Quality Measures'/><category term='Testing Tool'/><category term='security Testing'/><category term='Risk Analysis'/><category term='Software Metrics for Testing'/><category term='Testing Risks'/><category term='Testing Environment'/><category term='Alternative metal'/><category term='WW1'/><category term='Software Testing'/><category term='Testing jokes'/><category term='Testing Types'/><category term='Test Coverage Matrix'/><category term='Progressive rock'/><category term='Techniques'/><category term='Testing Methodology'/><category term='inspections'/><category term='cookie'/><category term='STLC'/><category term='Testing'/><category term='Art rock'/><category term='walkthroughs'/><category term='Testing Models'/><category term='Types of Risks'/><category term='Test Cases'/><category term='Cause-Effect Graphing Techniques'/><category term='agile'/><category term='Test Incident Report'/><category term='D1 tank'/><category term='Endurance Testing'/><category term='10'/><category term='Lateralus'/><category term='Traceability Matrix'/><category term='Smoke Testing'/><category term='ProTool'/><category term='Justin Chancellor'/><category term='tank'/><category term='Testing metrics'/><category term='TestBed'/><category term='Risk'/><category term='Lateralus Lyrics'/><category term='Maynard James Keenan'/><category term='Jokes'/><category term='banking terms'/><category term='Progressive metal'/><category term='Adam Jones'/><category term='Verification'/><category term='lean'/><category term='000 Days'/><category term='SDLC'/><category term='Probability of occurrence'/><category term='reviews'/><category term='Soak Testing'/><category term='Drivers'/><category term='world war 1'/><category term='cookies'/><category term='process'/><category term='W-Model'/><category term='V-Model'/><category term='Music'/><category term='testimg methodology'/><category term='Sanity Testing'/><category term='Too much methodology and Project Disaster'/><category term='Shadow banking system'/><category term='heavy metal'/><category term='Danny Carey'/><category term='Canban'/><category term='Testing Process'/><category term='Tool'/><category term='Mitigation plan'/><category term='Software Testing Life Cycle'/><category term='Browser'/><category term='sive metal'/><category term='Software Testing techniques'/><category term='Risk Analysis and Testing'/><category term='Risk Assessment'/><category term='Software Metrics'/><category term='Validation'/><category term='Stubs'/><category term='Metrics Used In Testing'/><category term='Metrics Set'/><category term='Impairment Charge'/><category term='Tools'/><category term='Test Harness'/><category term='White Box Testing'/><category term='project management'/><category term='Methodology'/><category term='Cyclomatic complexity'/><category term='Test bed'/><category term='Risk severity'/><category term='TestComplete'/><category term='Metrics'/><category term='Equivalence partitioning'/><title type='text'>Shwetank Gaur</title><subtitle type='html'>Blend of my profession and my hobbies and myself</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-27679650.post-5174932601097279023</id><published>2010-06-17T09:37:00.002+05:30</published><updated>2010-06-17T09:42:05.866+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='banking terms'/><category scheme='http://www.blogger.com/atom/ns#' term='Shadow banking system'/><title type='text'>Shadow Banking System</title><content type='html'>The &lt;span style="font-weight: bold;"&gt;shadow banking system&lt;/span&gt; consists of non-bank financial institutions that play an increasingly critical role in lending businesses the money necessary to operate.&lt;br /&gt;&lt;br /&gt;The financial intermediaries involved in facilitating the creation of credit across the global financial system, but whose members are not subject to regulatory oversight. The shadow banking system also refers to unregulated activities by regulated institutions.&lt;br /&gt;&lt;br /&gt;Examples of intermediaries not subject to regulation include hedge funds, unlisted derivatives and other unlisted instruments. Examples of unregulated activities by regulated institutions include credit default swaps.&lt;br /&gt;&lt;br /&gt;Shadow banking institutions are typically intermediaries between investors and borrowers. For example, an institutional investor like a pension fund may be willing to lend money, while a corporation may be searching for funds to borrow. The shadow banking institution will channel funds from the investor(s) to the corporation, profiting either from fees or from the difference in interest rates between what it pays the investor(s) and what it receives from the borrower.&lt;br /&gt;By definition, shadow institutions do not accept deposits like a depository bank and therefore are not subject to the same regulations. Familiar examples of shadow institutions included Bear Stearns and Lehman Brothers. Other complex legal entities comprising the system include hedge funds, SIVs, conduits, money funds, monolines, investment banks, and other non-bank financial institutions&lt;br /&gt;&lt;br /&gt;The shadow banking system has escaped regulation primarily because it did not accept traditional bank deposits. As a result, many of the institutions and instruments were able to employ higher market, credit and liquidity risks, and did not have capital requirements commensurate with those risks. Subsequent to the subprime meltdown in 2008, the activities of the shadow banking system came under increasing scrutiny and regulations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-5174932601097279023?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/5174932601097279023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=5174932601097279023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5174932601097279023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5174932601097279023'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2010/06/shadow-banking-system.html' title='Shadow Banking System'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-3602118316116161569</id><published>2010-06-09T15:43:00.002+05:30</published><updated>2010-06-09T15:47:50.952+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Canban'/><title type='text'>Kanban</title><content type='html'>Kanban is a Japanese word meaning “signboard.” It is a concept related to lean and just-in-time (JIT) production.&lt;br /&gt;&lt;br /&gt;A Kanban Board is a visual display in which the movement of objects, in the case of a development project, user story cards, will trigger action. The idea is that there’s continuous flow as the objects are moved across the board to completion.&lt;br /&gt;&lt;br /&gt;Kanban is considered an agile methodology, though more adaptive than most. In other words, there aren’t a lot of rules. Kanban was considered the most adaptive with only three rules:&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Visualize the Workflow&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Limit Work-in-Progress (WIP)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Measure and Optimize Lead Time&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-3602118316116161569?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/3602118316116161569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=3602118316116161569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/3602118316116161569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/3602118316116161569'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2010/06/canban.html' title='Kanban'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-4795446453021738118</id><published>2010-06-08T08:47:00.001+05:30</published><updated>2010-06-08T08:47:51.257+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='banking terms'/><category scheme='http://www.blogger.com/atom/ns#' term='Impairment Charge'/><title type='text'>Impairment Charge</title><content type='html'>A specific reduction on a company's balance sheet that adjusts the value of a company's goodwill. Due to accounting rules, a company must monitor and test the value of its goodwill, to determine if it is overvalued. If it is, the company must issue an impairment charge on its balance sheet, to take into account the reduced value of the goodwill.&lt;br /&gt;&lt;br /&gt;For more on Impairment Charge, refer &lt;a href="http://www.investopedia.com/articles/analyst/110502.asp"&gt;http://www.investopedia.com/articles/analyst/110502.asp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-4795446453021738118?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/4795446453021738118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=4795446453021738118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4795446453021738118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4795446453021738118'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2010/06/impairment-charge.html' title='Impairment Charge'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-4450709390040781800</id><published>2008-07-31T01:08:00.017+05:30</published><updated>2008-09-09T14:04:42.270+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='STLC'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing Life Cycle'/><title type='text'>Software Testing Life Cycle - Part 1</title><content type='html'>If we talk about STLC in the today's scenario of IT industry, I would like to differentiate it in two parts:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Testing as a part of complete project life cycle.&lt;/li&gt;&lt;li&gt;Testing cycle for a Testing only project (Where testing is outsourced to some some other company)&lt;/li&gt;&lt;/ol&gt;For &lt;span style="FONT-WEIGHT: bold"&gt;Testing as a part of complete project&lt;/span&gt; we have V model, W model ideally in place to follow.&lt;br /&gt;&lt;br /&gt;But for a &lt;span style="FONT-WEIGHT: bold"&gt;Testing Only Project&lt;/span&gt; we don't have any such model. Here sometimes companies (vendors for the company who is doing development) are approached lately in the middle of the project or sometimes in the earlier phases.&lt;br /&gt;&lt;br /&gt;Here I would like to talk about Testing only projects. I will take a our in brief about what happen behind the scene.&lt;br /&gt;&lt;br /&gt;The &lt;span style="FONT-WEIGHT: bold"&gt;basic steps of STLC&lt;/span&gt; in this case are same:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Test Initiation&lt;/li&gt;&lt;li&gt;Test Planning&lt;/li&gt;&lt;li&gt;Test Environment&lt;/li&gt;&lt;li&gt;Test Design&lt;/li&gt;&lt;li&gt;Test Execution&lt;/li&gt;&lt;li&gt;Defect Reporting&lt;/li&gt;&lt;li&gt;Documentation&lt;/li&gt;&lt;li&gt;Sign-off&lt;/li&gt;&lt;/ol&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1. Test Initiation&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BAs (Business Analysts) gather requirements: BAs try to understand the problem of the client and give them a solution in the form of proposal.&lt;/li&gt;&lt;li&gt;Then a contract is signed between client and the company&lt;/li&gt;&lt;li&gt;A BRD/FRD/SRD/UC document is sent from the client side to the test manager of the company.&lt;/li&gt;&lt;li&gt;Test manager made the estimations based on either FP (Calculating Function Points) or UCP (Use Case Points)&lt;/li&gt;&lt;li&gt;Function Points are the logical input and output fields in an application&lt;/li&gt;&lt;li&gt;Estimation is done based on the criticality of the application or by calculating the criticality of the FPs of the modules and summing them.&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;2. Test planning&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;After the work estimation and resource estimation, Test Plan and Test Strategies are defined.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Test Strategy document could be a separate document as it can be a part of the Test Plan document.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In the Test Strategy document, Test manager defines the kind of testing that will be performed on the system, who will be the actor for each type of testing, etc…&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Test Plan document: It is very formal document and the format of Test Plan document is company specific. The essential content of Test plan document are:&lt;/p&gt;  &lt;ol style="margin-top:0in" start="1" type="1"&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Objective      (Summary)&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Owners      of Key Process Areas (Roles of Members)&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Functional      description&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Hardware      and Software Requirement&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Feature      Test goal and Strategy &lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Functional      test Cases&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Tools      (Automation / Manual / Test Management / Defect Reporting)&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Portability&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;Related      documentation&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo1;tab-stops:list .5in"&gt;etc…&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal"&gt;Test Manager sends these documents to the client side and client can make request to change the document accordingly.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;3. Test Environment or Test-bed&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A Test-Bed is a testing environment. It is a execution environment configured for testing. It may consists of specific hardware, OS, Network topology, Configuration of the product, Browsers, Other application or software required, Database, etc…&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Test plan for a project should enumerate the test bed to be used.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;After setting up the testing environment a kick-off meeting is scheduled.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;Kick-Off Meeting&lt;/b&gt;: It is a formal meeting in which a PPT is displayed to all the team members. This PPT consists of:&lt;/p&gt;  &lt;ol style="margin-top:0in" start="1" type="1"&gt;  &lt;li class="MsoNormal" style="mso-list:l5 level1 lfo2;tab-stops:list .5in"&gt;About      the client&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l5 level1 lfo2;tab-stops:list .5in"&gt;About      Work&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l5 level1 lfo2;tab-stops:list .5in"&gt;Estimations      (Time, Resources)&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l5 level1 lfo2;tab-stops:list .5in"&gt;Deadlines&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l5 level1 lfo2;tab-stops:list .5in"&gt;Application&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l5 level1 lfo2;tab-stops:list .5in"&gt;Types      of Testing&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l5 level1 lfo2;tab-stops:list .5in"&gt;Deliverables&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal"&gt;Then a brain storming session is held in which risks related to the projects are identified and discussed. Team members openly place their ideas.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A defect champion is decided who will analyze the risks involved at any point during the project.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In the meeting, risks and related mitigation and contingency plans are discussed.&lt;/p&gt;  &lt;table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;  mso-yfti-tbllook:480;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-insideh:  .5pt solid windowtext;mso-border-insidev:.5pt solid windowtext"&gt;  &lt;tbody&gt;&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes"&gt;   &lt;td width="71" valign="top" style="width:53.4pt;border:solid windowtext 1.0pt;   mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;Risks&lt;/p&gt;   &lt;/td&gt;   &lt;td width="184" valign="top" style="width:138.0pt;border:solid windowtext 1.0pt;   border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:   solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;Mitigation&lt;/p&gt;   &lt;/td&gt;   &lt;td width="429" valign="top" style="width:321.95pt;border:solid windowtext 1.0pt;   border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:   solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;Contingency&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:1;mso-yfti-lastrow:yes"&gt;   &lt;td width="71" valign="top" style="width:53.4pt;border:solid windowtext 1.0pt;   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;   padding:0in 5.4pt 0in 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;A&lt;/p&gt;   &lt;/td&gt;   &lt;td width="184" valign="top" style="width:138.0pt;border-top:none;border-left:   none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;   mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;Steps to stop Risk A.&lt;/p&gt;   &lt;/td&gt;   &lt;td width="429" valign="top" style="width:321.95pt;border-top:none;border-left:   none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;   mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;If the risk still occur, after applying mitigation plan,   then what steps will be followed &lt;/p&gt;   &lt;p class="MsoNormal"&gt;(Planning is also done when the contingency plan is   executed.)&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;4. Test Design&lt;/b&gt;&lt;/p&gt;  &lt;ol style="margin-top:0in" start="1" type="1"&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo3;tab-stops:list .5in"&gt;From      the documents provided (say, FRD / BRD / FS / UC), test scenarios are      identified&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo3;tab-stops:list .5in"&gt;Test      Cases are prepared from the Test scenarios.&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo3;tab-stops:list .5in"&gt;RTM is      created&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo3;tab-stops:list .5in"&gt;Steps      for the test cases are written&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo3;tab-stops:list .5in"&gt;Test      Data is prepared&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo3;tab-stops:list .5in"&gt;Test      cases review and approval is done&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo3;tab-stops:list .5in"&gt;Base-Lining      of all the documents is done with sign-off document for each document&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;5. Test Execution and Defect Tracking&lt;/b&gt;&lt;/p&gt;  &lt;ol style="margin-top:0in" start="1" type="1"&gt;  &lt;li class="MsoNormal" style="mso-list:l4 level1 lfo4;tab-stops:list .5in"&gt;Execution      of Test-cases&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l4 level1 lfo4;tab-stops:list .5in"&gt;Capture,      review and analysis of results&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l4 level1 lfo4;tab-stops:list .5in"&gt;Raise      the defect&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l4 level1 lfo4;tab-stops:list .5in"&gt;Tracking      of defects for its closure&lt;/li&gt; &lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;6. Defect Reporting&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ol style="margin-top:0in" start="1" type="1"&gt;  &lt;li class="MsoNormal" style="mso-list:l0 level1 lfo5;tab-stops:list .5in"&gt;Defects      are reported to the client&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l0 level1 lfo5;tab-stops:list .5in"&gt;There      could be triage meeting between developers and testers on discussion over      the bugs and priority of the bug is defined in that meeting&lt;/li&gt; &lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;7. Documentation&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ol style="margin-top:0in" start="1" type="1"&gt;  &lt;li class="MsoNormal" style="mso-list:l3 level1 lfo6;tab-stops:list .5in"&gt;Test      Summary Report&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l3 level1 lfo6;tab-stops:list .5in"&gt;Test      Incident Report&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l3 level1 lfo6;tab-stops:list .5in"&gt;Test      matrices&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l3 level1 lfo6;tab-stops:list .5in"&gt;Build      Release&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l3 level1 lfo6;tab-stops:list .5in"&gt;Receiving      Acceptance&lt;/li&gt; &lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;8. Sign-off&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Sign-off template provides a checklist format for customers that can be used for reviewing a new system’s functionality and other attributes before accepting and delivering.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-4450709390040781800?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/4450709390040781800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=4450709390040781800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4450709390040781800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4450709390040781800'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2008/07/software-testing-life-cycle-part-1.html' title='Software Testing Life Cycle - Part 1'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-4005024752090304944</id><published>2007-10-19T15:47:00.000+05:30</published><updated>2007-10-19T15:56:11.349+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Cyclomatic complexity'/><title type='text'>Cyclomatic Complexity</title><content type='html'>Cyclomatic complexity is a software metric (measurement). It was developed by Thomas McCabe and is used to measure the complexity of a program. It directly measures the number of linearly independent paths through a program's source code. It is computed using a graph that describes the control flow of the program. The nodes of the graph correspond to the commands of a program. A directed edge connects two nodes if the second command might be executed immediately after the first command.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Definition&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   M = E − N + 2P&lt;br /&gt;&lt;br /&gt;where&lt;br /&gt;&lt;br /&gt;   M = cyclomatic complexity&lt;br /&gt;   E = the number of edges of the graph&lt;br /&gt;   N = the number of nodes of the graph&lt;br /&gt;   P = the number of connected components.&lt;br /&gt;&lt;br /&gt;"M" is alternatively defined to be one larger than the number of decision points (if/case-statements, while-statements, etc) in a module (function, procedure, chart node, etc.), or more generally a system.&lt;br /&gt;&lt;br /&gt;Separate subroutines are treated as being independent, disconnected components of the program's control flow graph.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Alternative definition&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   v(G) = e − n + p&lt;br /&gt;   G is a program's flowgraph&lt;br /&gt;   e is the number of edges (arcs) in the flowgraph&lt;br /&gt;   n is the number of nodes in the flowgraph&lt;br /&gt;   p is the number of connected components&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Alternative way&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is another simple way to determine the cyclomatic number. This is done by counting the number of closed loops in the flow graph, and incrementing that number by one.&lt;br /&gt;&lt;br /&gt;i.e.&lt;br /&gt;&lt;br /&gt;   M = Number of closed loops + 1&lt;br /&gt;&lt;br /&gt;where&lt;br /&gt;&lt;br /&gt;   M = Cyclomatic number.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Implications for Software Testing:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; M is a lower bound for the number of possible paths through the control flow graph.&lt;/li&gt;&lt;li&gt; M is an upper bound for the number of test cases that are necessary to achieve a complete branch coverage.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;For example&lt;/span&gt;&lt;/span&gt;, consider a program that consists of two sequential if-then-else statements.&lt;br /&gt;&lt;br /&gt;if (c1) {&lt;br /&gt;    f1();&lt;br /&gt;} else {&lt;br /&gt;    f2();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (c2) {&lt;br /&gt;    f3();&lt;br /&gt;} else {&lt;br /&gt;    f4();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; To achieve a complete branch coverage, two test cases are sufficient here.&lt;/li&gt;&lt;li&gt; For a complete path coverage, four test cases are necessary.&lt;/li&gt;&lt;li&gt; The cyclomatic number M is three, falling in the range between these two values, as it does for any program.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Cyclomatic complexity can be applied in several areas&lt;/span&gt;&lt;/span&gt;, including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Code development risk analysis&lt;/span&gt;: While code is under development, it can be measured for complexity to assess inherent risk or risk buildup.&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Change risk analysis in maintenance&lt;/span&gt;: Code complexity tends to increase as it is maintained over time. By measuring the complexity before and after a proposed change, this buildup can be monitored and used to help decide how to minimize the risk of the change.&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Test Planning:&lt;/span&gt; Mathematical analysis has shown that cyclomatic complexity gives the exact number of tests needed to test every decision point in a program for each outcome. Thus, the analysis can be used for test planning. An excessively complex module will require a prohibitive number of test steps; that number can be reduced to a practical size by breaking the module into smaller, less-complex sub-modules.&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Re-engineering&lt;/span&gt;: Cyclomatic complexity analysis provides knowledge of the structure of the operational code of a system. The risk involved in reengineering a piece of code is related to its complexity. Therefore, cost and risk analysis can benefit from proper application of such an analysis.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-4005024752090304944?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/4005024752090304944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=4005024752090304944' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4005024752090304944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4005024752090304944'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/cyclomatic-complexity.html' title='Cyclomatic Complexity'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-9163015114632319825</id><published>2007-10-18T12:04:00.000+05:30</published><updated>2007-10-18T12:19:32.286+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Traceability Matrix'/><category scheme='http://www.blogger.com/atom/ns#' term='Test Coverage Matrix'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing metrics'/><title type='text'>Test Coverage Matrix  Vs. Traceability Matrix</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Test coverage matrix:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test coverage matrix&lt;/span&gt; is a checklist which ensures that the functionality of the given screen(unit) is checked in all possible combinations (positive and negative) which have not been covered in test cases. Test coverage matrix is usually prepared for a screen having large number of controls (textboxes, dropdowns, buttons etc) usually, test coverage matrix is prepared in a spread sheet having all the controls (textboxes, dropdowns, buttons etc) in the columns and then all possible entries in those fields in the rows with an ''yes'' or ''no'' in the rows against the controls listed in the columns. For example, consider a ''login'' screen wherein we have ''username'' and ''password" textfields.&lt;br /&gt;&lt;br /&gt;While preparing test coverage matrix, the first column will be ''s.no'' and the second will be ''username" and ''password" will be the third field followed by ''ok'' and ''cancel'' button. Then, in the first row for s.no 1, enter ''yes'' for both ''user name'' and ''password'' columns, ''yes'' implying that a value is entered in that field. In the second row, enter ''yes'' and ''no'' and in the third row, ''no'' and 'yes'' and so on.&lt;br /&gt;&lt;br /&gt;The complexity increases with the number of controls in the screen. Each of the row is considered as one condition and executed while testing. This is how we prepare test coverage matrix. (this is a black box testing technique).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Traceability matrix:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While, &lt;span style="font-weight: bold;"&gt;Traceability matrix&lt;/span&gt; serves in mapping the test cases to the requirements. It serves as a checklist wherein all the requirements (of srs) are listed and the test cases covering the corresponding requirement is listed against each requirement. Every company may have their own template for rtm, but they serve the same purpose as described above.&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/27679650-9163015114632319825?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/9163015114632319825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=9163015114632319825' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/9163015114632319825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/9163015114632319825'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/test-coverage-matrix-vs-traceability.html' title='Test Coverage Matrix  Vs. Traceability Matrix'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-2696901821071851672</id><published>2007-10-18T11:24:00.000+05:30</published><updated>2008-11-14T03:10:40.466+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='V-Model'/><category scheme='http://www.blogger.com/atom/ns#' term='SDLC'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Models'/><category scheme='http://www.blogger.com/atom/ns#' term='W-Model'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><title type='text'>From V-Model to W-Model</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;V-Model:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The V-model promotes the idea that the dynamic test stages (on the right hand side of the model) use the documentation identified on the left hand side as baselines for testing. The V-Model further promotes the notion of early test preparation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-0mek8muGbw/Rxb16JL-3gI/AAAAAAAAADg/0gIAaKl9tho/s1600-h/1-V-model.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_-0mek8muGbw/Rxb16JL-3gI/AAAAAAAAADg/0gIAaKl9tho/s400/1-V-model.bmp" alt="" id="BLOGGER_PHOTO_ID_5122552005427912194" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;The V-Model of testing&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Early test preparation finds faults in baselines and is an effective way of detecting faults early. This approach is fine in principle and the early test preparation approach is always effective. However, there are two problems with the V-Model as normally presented.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-0mek8muGbw/Rxb2LJL-3hI/AAAAAAAAADo/OpBqMZQan2w/s1600-h/2-V-model.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_-0mek8muGbw/Rxb2LJL-3hI/AAAAAAAAADo/OpBqMZQan2w/s400/2-V-model.bmp" alt="" id="BLOGGER_PHOTO_ID_5122552297485688338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The V-Model with early test preparation&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;There is rarely a perfect, one-to-one relationship between the documents on the left hand side and the test activities on the right. For example, functional specifications don’t usually provide enough information for a system test. System tests must often take account of some aspects of the business requirements as well as physical design issues for example. System testing usually draws on several sources of requirements information to be thoroughly planned.&lt;br /&gt;&lt;br /&gt;V-Model has little to say about static testing at all. The V-Model treats testing as a back-door activity on the right hand side of the model. There is no mention of the potentially greater value and effectiveness of static tests such as reviews, inspections, static code analysis and so on. This is a major omission and the V-Model does not support the broader view of testing as a constantly prominent activity throughout the development lifecycle.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;W Model:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-0mek8muGbw/Rxb2jpL-3iI/AAAAAAAAADw/05PjNmPLD3Y/s1600-h/3-W-model.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_-0mek8muGbw/Rxb2jpL-3iI/AAAAAAAAADw/05PjNmPLD3Y/s400/3-W-model.bmp" alt="" id="BLOGGER_PHOTO_ID_5122552718392483362" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;The W-Model of testing&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Paul Herzlich introduced the W-Model approach in 1993. The W-Model attempts to address shortcomings in the V-Model. Rather than focus on specific dynamic test stages, as the V-Model does, the W-Model focuses on the development products themselves. Essentially, every development activity that produces a work product is shadowed by a test activity. The purpose of the test activity specifically is to determine whether the objectives of a development activity have been met and the deliverable meets its requirements. In its most generic form, the W-Model presents a standard development lifecycle with every development stage mirrored by a test activity. On the left hand side, typically, the deliverables of a development activity (for example, write requirements) is accompanied by a test activity test the requirements and so on. If your organization has a different set of development stages, then the W-Model is easily adjusted to your situation. The important thing is this: the W-Model of testing focuses specifically on the product risks of concern at the point where testing can be most effective.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-0mek8muGbw/Rxb22ZL-3jI/AAAAAAAAAD4/SSdtg6Q4cZo/s1600-h/4-W-model.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_-0mek8muGbw/Rxb22ZL-3jI/AAAAAAAAAD4/SSdtg6Q4cZo/s400/4-W-model.bmp" alt="" id="BLOGGER_PHOTO_ID_5122553040515030578" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;The W-Model and static test techniques.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If we focus on the static test techniques, you can see that there is a wide range of techniques available for evaluating the products of the left hand side. Inspections, reviews, walkthroughs, static analysis, requirements animation as well as early test case preparation can all be used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-0mek8muGbw/Rxb3PpL-3kI/AAAAAAAAAEA/8P3Z-TlSUFI/s1600-h/5-W-model.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_-0mek8muGbw/Rxb3PpL-3kI/AAAAAAAAAEA/8P3Z-TlSUFI/s400/5-W-model.bmp" alt="" id="BLOGGER_PHOTO_ID_5122553474306727490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;The W-Model and dynamic test techniques.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If we consider the dynamic test techniques you can see that there is also a wide range of techniques available for evaluating executable software and systems. The traditional unit, integration, system and acceptance tests can make use of the functional test design and measurement techniques as well as the non-functional test techniques that are all available for use to address specific test objectives.&lt;br /&gt;&lt;br /&gt;The W-Model removes the rather artificial constraint of having the same number of dynamic test stages as development stages. If there are five development stages concerned with the definition, design and construction of code in your project, it might be sensible to have only three stages of dynamic testing only. Component, system and acceptance testing might fit your normal way of working. The test objectives for the whole project would be distributed across three stages, not five. There may be practical reasons for doing this and the decision is based on an evaluation of product risks and how best to address them. The W-Model does not enforce a project symmetry that does not (or cannot) exist in reality. The W-model does not impose any rule that later dynamic tests must be based on documents created in specific stages (although earlier documentation products are nearly always used as baselines for dynamic testing. In projects using these methods, requirements and designs might be documented in multiple models so system testing might be based on several of these models (spread over several documents).&lt;br /&gt;&lt;br /&gt;We use the W-Model in test strategy as follows. Having identified the specific risks of concern, we specify the products that need to be tested; we then select test techniques (static reviews or dynamic test stages) to be used on those products to address the risks; we then schedule test activities as close as practicable to the development activity that generated the products to be tested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-2696901821071851672?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/2696901821071851672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=2696901821071851672' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/2696901821071851672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/2696901821071851672'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/from-v-model-to-w-model.html' title='From V-Model to W-Model'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-0mek8muGbw/Rxb16JL-3gI/AAAAAAAAADg/0gIAaKl9tho/s72-c/1-V-model.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-7501617276256818379</id><published>2007-10-17T10:36:00.000+05:30</published><updated>2008-11-14T03:10:40.893+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Cause-Effect Graphing Techniques'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing techniques'/><title type='text'>Cause-Effect Graphing Techniques</title><content type='html'>Cause-effect graphing is a technique that provides a concise representation of logical conditions and corresponding actions.&lt;br /&gt;&lt;br /&gt;It is a test case design technique that is performed once requirements have been reviewed for ambiguity, followed by a review for content.&lt;br /&gt;&lt;br /&gt;Requirements are reviewed for content to insure that they are correct and complete. The Cause-Effect Graphing technique derives the minimum number of test cases to cover 100% of the functional requirements to improve the quality of test coverage.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;There are four steps:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Causes (input conditions) and effects (actions) are listed for a module and an identifier is assigned to each.&lt;/li&gt;&lt;li&gt;A cause-effect graph is developed.&lt;/li&gt;&lt;li&gt;The graph is converted to a decision table.&lt;/li&gt;&lt;li&gt;Decision table rules are converted to test cases.&lt;/li&gt;&lt;/ol&gt;The Cause-Effect Graphing technique was invented by Bill Elmendorf of IBM in 1973. Instead of the test case designer trying to manually determine the right set of test cases, he/she models the problem using a cause-effect graph, and the software that supports the technique, BenderRBT, calculates the right set of test cases to cover 100% of the functionality. The cause-effect graphing technique uses the same algorithms that are used in hardware logic circuit testing. Test case design in hardware insures virtually defect free hardware.&lt;br /&gt;&lt;br /&gt;Cause-Effect Graphing also has the ability to detect defects that cancel each other out, and the ability to detect defects hidden by other things going right. These are advanced topics that won’t be discussed in this article.&lt;br /&gt;&lt;br /&gt;The starting point for the Cause-Effect Graph is the requirements document. The requirements describe “what” the system is intended to do. The requirements can describe real time systems, events, data driven systems, state transition diagrams, object oriented systems, graphical user interface standards, etc. Any type of logic can be modeled using a Cause-Effect diagram. Each cause (or input) in the requirements is expressed in the cause-effect graph as a condition, which is either true or false. Each effect (or output) is expressed as a condition, which is either true or false.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A Simple Cause-Effect Graphing Example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have a requirement that says: “If A OR B, then C.” The following rules hold for this requirement:&lt;br /&gt;&lt;br /&gt;• If A is true and B is true, then C is true.&lt;br /&gt;• If A is true and B is false, then C is true.&lt;br /&gt;• If A is false and B is true, then C is true.&lt;br /&gt;• If A is false and B is false, then C is false.&lt;br /&gt;&lt;br /&gt;The cause-effect graph that represents this requirement is provided in Figure 1. The cause-effect graph shows the relationship between the causes and effects.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-0mek8muGbw/RxX1eZL-3bI/AAAAAAAAAC8/tXAaRYnNSO8/s1600-h/figure1.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_-0mek8muGbw/RxX1eZL-3bI/AAAAAAAAAC8/tXAaRYnNSO8/s400/figure1.bmp" alt="" id="BLOGGER_PHOTO_ID_5122270053709831602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In Figure 1, A, B and C are called nodes. Nodes A and B are the causes, while Node C is an effect. Each node can have a true or false condition. The lines, called vectors, connect the cause nodes A and B to the effect node C.&lt;br /&gt;&lt;br /&gt;All requirements are translated into nodes and relationships on the cause-effect graph. There are only four possible relationships among nodes, and they are indicated by the following symbols:&lt;br /&gt;&lt;br /&gt;Where A always leads to C, a straight line ------------.&lt;br /&gt;Where A or B lead to C, a V at the intersection means “or”.&lt;br /&gt;Where A and B lead to C, an inverted V at the intersection means “and”.&lt;br /&gt;A tilde ~ means “not” as in “If not A, then C”.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Decision Table&lt;/span&gt;&lt;br /&gt;The cause-effect graph is then converted into a decision table or “truth table” representing the logical relationships between the causes and effects. Each column of the decision table is a test case. Each test case corresponds to a unique possible combination of inputs that are either in a true state, a false state, or a masked state (the masked state will be described in Figure 4 below).&lt;br /&gt;&lt;br /&gt;Since there are 2 inputs to this example, there are 2 ** 2 = 4 combinations of inputs from which test cases can be selected.&lt;br /&gt;&lt;br /&gt;Figure 2 represents the decision table derived for the cause-effect graph in Figure 1.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-0mek8muGbw/RxX1xZL-3cI/AAAAAAAAADE/mEHCSFfrsEI/s1600-h/figure2.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_-0mek8muGbw/RxX1xZL-3cI/AAAAAAAAADE/mEHCSFfrsEI/s400/figure2.bmp" alt="" id="BLOGGER_PHOTO_ID_5122270380127346114" border="0" /&gt;&lt;/a&gt;Notice that there are only three test cases. However, these three test cases cover 100% of the functionality for this example. The fourth combination of inputs (A= true and B =true) does not add any additional functional coverage, and is a redundant test case. Each relation is tested with the right combinations of causes so that all defects are covered for that relation, resulting in 100% coverage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-7501617276256818379?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/7501617276256818379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=7501617276256818379' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/7501617276256818379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/7501617276256818379'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/cause-effect-graphing-techniques.html' title='Cause-Effect Graphing Techniques'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-0mek8muGbw/RxX1eZL-3bI/AAAAAAAAAC8/tXAaRYnNSO8/s72-c/figure1.bmp' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-813421695154390324</id><published>2007-10-15T17:00:00.000+05:30</published><updated>2007-10-15T17:27:15.643+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smoke Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Sanity Testing'/><title type='text'>Smoke Testing vs. Sanity Testing</title><content type='html'>&lt;table class="MsoNormalTable" style="border: medium none ; width: 423.75pt; margin-left: 4.65pt; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0" width="565"&gt;  &lt;tbody&gt;&lt;tr style="height: 15.75pt;"&gt;   &lt;td style="border: 4.5pt double windowtext; padding: 0in 5.4pt; background: rgb(153, 204, 255) none repeat scroll 0% 50%; width: 48pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 15.75pt;" width="64"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;S. No.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: double double double none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 4.5pt 4.5pt 4.5pt medium; padding: 0in 5.4pt; background: rgb(153, 204, 255) none repeat scroll 0% 50%; width: 177.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 15.75pt;" valign="top" width="237"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style=""&gt;Smoke&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: double double double none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 4.5pt 4.5pt 4.5pt medium; padding: 0in 5.4pt; background: rgb(153, 204, 255) none repeat scroll 0% 50%; width: 2.75in; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 15.75pt;" valign="top" width="264"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style=""&gt;Sanity&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 141.75pt;"&gt;   &lt;td style="border-style: none double double; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 4.5pt 4.5pt; padding: 0in 5.4pt; width: 48pt; height: 141.75pt;" num="" width="64"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 177.75pt; height: 141.75pt;" valign="top" width="237"&gt;   &lt;p class="MsoNormal"&gt;Smoke testing originated in the hardware testing practice   of turning on a new piece of hardware for the first time and considering it a   success if it does not catch fire and smoke.  In software industry,   smoke testing is a shallow and wide approach whereby all areas of the   application without getting into too deep, is tested.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 2.75in; height: 141.75pt;" valign="top" width="264"&gt;   &lt;p class="MsoNormal"&gt;A sanity test is a narrow regression test that focuses on   one or a few areas of functionality. Sanity testing is usually narrow and   deep.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 31.5pt;"&gt;   &lt;td style="border-style: none double double; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 4.5pt 4.5pt; padding: 0in 5.4pt; width: 48pt; height: 31.5pt;" num="" width="64"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 177.75pt; height: 31.5pt;" valign="top" width="237"&gt;   &lt;p class="MsoNormal"&gt;A smoke test is scripted--either using a written set of   tests or an automated test&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 2.75in; height: 31.5pt;" valign="top" width="264"&gt;   &lt;p class="MsoNormal"&gt;A sanity test is usually unscripted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 47.25pt;"&gt;   &lt;td style="border-style: none double double; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 4.5pt 4.5pt; padding: 0in 5.4pt; width: 48pt; height: 47.25pt;" num="" width="64"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;3&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 177.75pt; height: 47.25pt;" valign="top" width="237"&gt;   &lt;p class="MsoNormal"&gt;A Smoke test is designed to touch every part of the   application in a cursory way. It's is shallow and wide.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 2.75in; height: 47.25pt;" valign="top" width="264"&gt;   &lt;p class="MsoNormal"&gt;A Sanity test is used to determine a small section of the   application is still working after a minor change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 94.5pt;"&gt;   &lt;td style="border-style: none double double; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 4.5pt 4.5pt; padding: 0in 5.4pt; width: 48pt; height: 94.5pt;" num="" width="64"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;4&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 177.75pt; height: 94.5pt;" valign="top" width="237"&gt;   &lt;p class="MsoNormal"&gt;Smoke testing will be conducted to ensure whether the most   crucial functions of a program work, but not bothering with finer details.   (Such as build verification).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 2.75in; height: 94.5pt;" valign="top" width="264"&gt;   &lt;p class="MsoNormal"&gt;Sanity testing is a cursory testing; it is performed   whenever a cursory testing is sufficient to prove the application is functioning   according to specifications. This level of testing is a subset of regression   testing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 47.25pt;"&gt;   &lt;td style="border-style: none double double; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 4.5pt 4.5pt; padding: 0in 5.4pt; width: 48pt; height: 47.25pt;" num="" width="64"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;5&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 177.75pt; height: 47.25pt;" valign="top" width="237"&gt;   &lt;p class="MsoNormal"&gt;Smoke testing is normal health check up to a build of an   application before taking it to testing in depth.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none double double none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 4.5pt 4.5pt medium; padding: 0in 5.4pt; width: 2.75in; height: 47.25pt;" valign="top" width="264"&gt;   &lt;p class="MsoNormal"&gt;Sanity testing is to verify whether requirements are met   or not, checking all features breadth-first.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-813421695154390324?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/813421695154390324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=813421695154390324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/813421695154390324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/813421695154390324'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/smoke-testing-vs-sanity-testing.html' title='Smoke Testing vs. Sanity Testing'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-3600624804787725110</id><published>2007-10-15T16:57:00.000+05:30</published><updated>2007-10-15T17:00:03.196+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sanity Testing'/><title type='text'>Sanity Testing</title><content type='html'>Sanity testing is cursory testing, and performed whenever cursory testing 'is' sufficient to prove the application is functioning according to specifications. Sanity testing is a subset of regression testing. It normally includes a set of core tests such as basic GUI functionality to demonstrate connectivity to the database, application servers, printers, etc.&lt;br /&gt;&lt;br /&gt;A sanity test or sanity check is a basic test to quickly evaluate the validity of a claim or calculation. In mathematics, for example, when multiplying by three or nine, verifying that the sum of the digits of the result is a multiple of 3 or 9 respectively is a sanity test.&lt;br /&gt;&lt;br /&gt;In computer science it is a very brief run-through of the functionality of a computer program, system, calculation, or other analysis, to assure that the system or methodology works as expected, often prior to a more exhaustive round of testing.&lt;br /&gt;&lt;br /&gt;Sanity tests are sometimes mistakenly equated to smoke tests. Where a distinction is made between sanity testing and smoke testing, it's usually in one of two directions. Either sanity testing is a focused but limited form of regression testing – narrow and deep, but cursory; or it's broad and shallow, like a smoke test, but concerned more with the possibility of "insane behavior" such as slowing the entire system to a crawl, or destroying the database, but is not as thorough as a true smoke test.&lt;br /&gt;&lt;br /&gt;Generally, a smoke test is scripted (either using a written set of tests or an automated test), whereas a sanity test is usually unscripted.&lt;br /&gt;&lt;br /&gt;With the evolution of test methodologies, sanity tests are useful both for initial environment validation and future interactive increments. The process of sanity testing begins with the execution of some online transactions of various modules, batch programs of various modules to see whether the software runs without any hindrance or abnormal termination. This practice can help identify most of the environment related problems. A classic example of this in programming is the hello world program. If a person has just set up a computer and a compiler, a quick sanity test can be performed to see if the compiler actually works: write a program that simply displays the words "hello world".&lt;br /&gt;&lt;br /&gt;A sanity test can refer to various order of magnitude and other simple rule of thumb devices applied to cross-check mathematical calculations. For example:&lt;br /&gt;&lt;br /&gt;If one were to attempt to square 738 and calculated 53,874, a quick sanity check could show that this cannot be true. Consider that 500 &lt; 5002 =" 521002"&gt; 53874. Since squaring preserves inequality for positive numbers (see inequality), this cannot be true and so the calculation was bad.&lt;br /&gt;&lt;br /&gt;In multiplication, 918 x 155 is not 142135 since 918 is divisible by three but 142135 is not (digits add up to 16 the digits of which do not add up to a multiple of three). Moreover, the product of an even and an odd number should be even, whereas 142135 is odd.&lt;br /&gt;&lt;br /&gt;When talking about quantities in physics, the power output of a car cannot be 700 kJ since that is a unit of energy, not power (energy per unit time). See dimensional analysis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-3600624804787725110?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/3600624804787725110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=3600624804787725110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/3600624804787725110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/3600624804787725110'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/sanity-testing.html' title='Sanity Testing'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-5952633738930374346</id><published>2007-10-15T16:56:00.000+05:30</published><updated>2007-10-15T16:57:21.254+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Smoke Testing'/><title type='text'>Smoke Testing</title><content type='html'>Smoke testing is a term used in plumbing, woodwind repair, electronics, and computer software development. It refers to the first test made after repairs or first assembly to provide some assurance that the system under test will not catastrophically fail. After a smoke test proves that the pipes will not leak, the keys seal properly, the circuit will not burn, or the software will not crash outright, the assembly is ready for more stressful testing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Smoke testing in software development&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. In this case, the smoke is metaphorical.&lt;br /&gt;&lt;br /&gt;Smoke testing is done by developers before the build is released or by testers before accepting a build for further testing.&lt;br /&gt;&lt;br /&gt;In software engineering, a smoke test generally consists of a collection of tests that can be applied to a newly created or repaired computer program. Sometimes the tests are performed by the automated system that builds the final software. In this sense a smoke test is the process of validating code changes before the changes are checked into the larger product’s official source code collection. Next after code reviews, smoke testing is the most cost effective method for identifying and fixing defects in software; some even believe that it is the most effective of all.&lt;br /&gt;&lt;br /&gt;In software testing, a smoke test is a collection of written tests that are performed on a system prior to being accepted for further testing. This is also known as a build verification test. This is a "shallow and wide" approach to the application. The tester "touches" all areas of the application without getting too deep, looking for answers to basic questions like, "Can I launch the test item at all?", "Does it open to a window?", "Do the buttons on the window do things?". There is no need to get down to field validation or business flows. If you get a "No" answer to basic questions like these, then the application is so badly broken, there's effectively nothing there to allow further testing. These written tests can either be performed manually or using an automated tool. When automated tools are used, the tests are often initiated by the same process that generates the build itself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-5952633738930374346?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/5952633738930374346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=5952633738930374346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5952633738930374346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5952633738930374346'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/smoke-testing.html' title='Smoke Testing'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-3884973980892799555</id><published>2007-10-15T16:12:00.000+05:30</published><updated>2008-11-14T03:10:41.231+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Soak Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Endurance Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><title type='text'>Soak Testing or Endurance Testing</title><content type='html'>Soak testing is running a system at high levels of load for prolonged periods of time.  A soak test would normally execute several times more transactions in an entire day (or night) than would be expected in a busy day, to identify any performance problems that appear after a large number of transactions have been executed.&lt;br /&gt;&lt;br /&gt;Also, it is possible that a system may ‘stop’ working after a certain number of transactions have been processed due to memory leaks or other defects.  Soak tests provide an opportunity to identify such defects, whereas load tests and stress tests may not find such problems due to their relatively short duration.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-0mek8muGbw/RxNJZpL-3aI/AAAAAAAAAC0/4BtOikYR-e4/s1600-h/Soak.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 517px; height: 223px;" src="http://2.bp.blogspot.com/_-0mek8muGbw/RxNJZpL-3aI/AAAAAAAAAC0/4BtOikYR-e4/s400/Soak.bmp" alt="" id="BLOGGER_PHOTO_ID_5121517906152054178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The above diagram shows activity for a certain type of site.   Each login results in an average session of 12 minutes duration with and average eight business transactions per session.&lt;br /&gt;&lt;br /&gt;A soak test would run for as long as possible, given the limitations of the testing situation.  For example, weekends are often an opportune time for a soak test.  Soak testing for this application would be at a level of 550 logins per hour, using typical activity for each login.&lt;br /&gt;&lt;br /&gt;The average number of logins per day in this example is 4,384 per day, but it would only take 8 hours at 550 per hour to run an entire days activity through the system.&lt;br /&gt;&lt;br /&gt;By Starting a 60 hour soak test on Friday evening at 6 pm  (to finish at 6am Monday morning), 33,000 logins would be put through the system, representing 7½ days of activity.  Only with such a test, will it be possible to observe any degradation of performance under controlled conditions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Some typical problems identified during soak tests are listed below:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;1. Serious memory leaks that would eventually result in a memory crisis,&lt;br /&gt;2. Failure to close connections between tiers of a multi-tiered system under some circumstances which could stall some or all modules of the system.&lt;br /&gt;3. Failure to close database cursors under some conditions which would eventually result in the entire system stalling.&lt;br /&gt;4. Gradual degradation of response time of some functions as internal data-structures become less efficient during a long test.&lt;br /&gt;&lt;br /&gt;Apart from monitoring response time, it is also important to measure CPU usage and available memory.  If a server process needs to be available for the application to operate, it is often worthwhile to record it's memory usage at the start and end of a soak test.   It is also important to monitor internal memory usages of facilities such as Java Virtual Machines, if applicable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Long Session Soak Testing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When an application is used for long periods of time each day, the above approach should be modified, because the soak test driver is not Logins and transactions per day, but transactions per active user for each user each day.&lt;br /&gt;&lt;br /&gt;This type of situation occurs in internal systems, such as ERP and CRM systems, where users login and stay logged in for many hours, executing a number of business transactions during that time.  A soak test for such a system should emulate multiple days of activity in a compacted time-frame rather than just pump multiple days worth of transactions through the system.&lt;br /&gt;&lt;br /&gt;Long session soak tests should run with realistic user concurrency, but the focus should be on the number of transactions processed.  VUGen scripts used in long session soak testing may need to be more sophisticated than short session scripts, as they must be capable of running a long series of business transactions over a prolonged period of time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Test Duration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The duration of most soak tests is often determined by the available time in the test lab.  There are many applications, however, that require extremely long soak tests.  Any application that must run, uninterrupted for extended periods of time, may need a soak test to cover all of the activity for a period of time that is agreed to by the stakeholders, such as a month.  Most systems have a regular maintenance window, and the time between such windows is usually a key driver for determining the scope of a soak test.&lt;br /&gt;&lt;br /&gt;A classic example of a system that requires extensive soak testing is an air traffic control system.  A soak test for such a system may have a multi-week or even multi-month duration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-3884973980892799555?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/3884973980892799555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=3884973980892799555' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/3884973980892799555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/3884973980892799555'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/soak-testing-or-endurance-testing.html' title='Soak Testing or Endurance Testing'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-0mek8muGbw/RxNJZpL-3aI/AAAAAAAAAC0/4BtOikYR-e4/s72-c/Soak.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-6383496987869571683</id><published>2007-10-15T14:10:00.000+05:30</published><updated>2007-10-15T14:13:17.205+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Harness'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Environment'/><title type='text'>Test Harness</title><content type='html'>&lt;span style="font-weight: bold;"&gt;In software testing&lt;/span&gt;, a test harness or automated test framework is a collection of software and test data configured to test a program unit by running it under varying conditions and monitor its behavior and outputs. It has two main parts: the test execution engine and the test script repository.&lt;br /&gt;&lt;br /&gt;Test harnesses allow for the automation of tests. They can call functions with supplied parameters and print out and compare the results to the desired value. The test harness is a hook to the developed code, which can be tested using an automation framework.&lt;br /&gt;&lt;br /&gt;A test harness should allow specific tests to run (this helps in optimizing), orchestrate a runtime environment, and provide a capability to analyze results.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A test harness should include&lt;/span&gt;:&lt;br /&gt;A standard way to specify setup (i.e., creating an artificial runtime environment) and cleanup.&lt;br /&gt;A method for selecting individual tests to run, or all tests.&lt;br /&gt;A means of analyzing output for expected (or unexpected) results.&lt;br /&gt;A standardized form of failure reporting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The typical objectives of a test harness is to&lt;/span&gt;:&lt;br /&gt;Automate the testing process.&lt;br /&gt;Execute test suites of test cases.&lt;br /&gt;Generate associated test reports.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A test harness typically provides the following benefits&lt;/span&gt;:&lt;br /&gt;Increased productivity due to automation of the testing process.&lt;br /&gt;Increased probability that regression testing will occur.&lt;br /&gt;Increased quality of software components and application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-6383496987869571683?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/6383496987869571683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=6383496987869571683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/6383496987869571683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/6383496987869571683'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/test-harness.html' title='Test Harness'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-557517969163697835</id><published>2007-10-15T14:01:00.000+05:30</published><updated>2007-10-15T14:09:53.771+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='t'/><category scheme='http://www.blogger.com/atom/ns#' term='Test bed'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='TestBed'/><title type='text'>TestBed</title><content type='html'>The term is used across many disciplines to describe a development environment that is shielded from the hazards of testing in a live or production environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In software testing&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Test Bed is an execution environment configured for testing. It consists of specific hardware, Operating Systems, Network Topology, Configuration of the product under test, other application or system software, etc. The Test Plan for a project should enumerated the test beds to be used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In Development Environment:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A testbed is a platform for experimentation for large development projects. Testbeds allow for rigorous, transparent and replicable testing of scientific theories, computational tools, and other new technologies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Also:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Testbeds are on the internet where the public is given the opportunity to test CSS or HTML they have created and are wanting to see the outcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-557517969163697835?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/557517969163697835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=557517969163697835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/557517969163697835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/557517969163697835'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/testbed.html' title='TestBed'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-1023626995346190175</id><published>2007-10-11T17:05:00.000+05:30</published><updated>2007-10-11T17:22:58.432+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Test Cases'/><category scheme='http://www.blogger.com/atom/ns#' term='Equivalence partitioning'/><title type='text'>Equivalence partitioning</title><content type='html'>Equivalence partitioning is a method for deriving test cases. In this method, classes of input conditions  called equivalence classes are identified such that each member of the class causes the same kind of processing and output to occur.&lt;br /&gt;&lt;br /&gt;In this method, the tester identifies various equivalence classes for partitioning. A class is a set of input conditions that are is likely to be handled the same way by the system. If the system were to handle one case in the class erroneously, it would handle all cases erroneously.&lt;br /&gt;&lt;br /&gt;Equivalence partitioning drastically cuts down the number of test cases required to test a system reasonably. It is an attempt to get a good 'hit rate', to find the most errors with the smallest number of test cases.&lt;br /&gt;&lt;br /&gt;To use equivalence partitioning, you will need to perform four steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Determining conditions to be Tested&lt;/li&gt;&lt;li&gt;Defining Tests&lt;/li&gt;&lt;li&gt;Designing test cases&lt;/li&gt;&lt;li&gt;Identifying Final set of Test Cases&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Defining Tests&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A number of items must be considered when determining the tests using the equivalence partitioning method, like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;All valid input data for a given condition are likely to go through the same process.&lt;/li&gt;&lt;li&gt;Invalid data can go through various processes and need to be evaluated more carefully.  For example,&lt;/li&gt;&lt;li&gt;a blank entry may be treated differently than an incorrect entry,&lt;/li&gt;&lt;li&gt;a value that is less than a range of values may be treated differently than a value that is greater,&lt;/li&gt;&lt;li&gt;if there is more than one error condition within a particular function, one error may override the other, which means the subordinate error does not get tested unless the other value is valid.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Defining Test Cases&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create test cases that incorporate each of the tests.  For valid input, include as many tests as possible in one test case.  For invalid input, include only one test in a test case in order to isolate the error.  Only the invalid input test condition needs to be evaluated in such tests, because the valid condition has already been tested.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EXAMPLE OF EQUIVALENCE PARTITIONING&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Conditions to be Tested&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following input conditions will be tested:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For the first three digits of all social insurance (security) numbers, the minimum number is 111 and the maximum number is 222. &lt;/li&gt;&lt;li&gt;For the fourth and fifth digits of all social insurance (security) numbers, the minimum number is 11 and the maximum number is 99.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;2. Defining Tests&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Identify the input conditions and uniquely identify each test, keeping in mind the items to consider when defining tests for valid and invalid data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The tests for these conditions are:&lt;/span&gt;&lt;br /&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;The first three digits of the      social insurance (security) number are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;= or &gt; 111 and = or      &lt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&gt; 222, (invalid input,      above the range),&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;blank, (invalid input, below      the range, but may be treated differently).&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;The fourth and fifth digits      of the social insurance (security) number are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ol start="5" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;= or &gt; 11 and = or      &lt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&gt; 99, (invalid input,      above the range),&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;blank, (invalid input, below the range, but may be treated differently).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Using equivalence partitioning, only one value that represents each of the eight equivalence classes needs to be tested.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Defining Test Cases&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After identifying the tests, create test cases to test each equivalence class, (i.e., tests 1 through 8).&lt;br /&gt;&lt;br /&gt;Create one test case for the valid input conditions, (i.e., tests 1 and 5), because the two conditions will not affect each other.&lt;br /&gt;&lt;br /&gt;Identify separate test cases for each invalid input, (i.e., tests 2 through 4 and tests 6 through 8).&lt;br /&gt;&lt;br /&gt;Both conditions specified, (i.e., condition 1 - first three digits, condition 2 - fourth and fifth digits), apply to the social insurance (security) number.&lt;br /&gt;&lt;br /&gt;Since equivalence partitioning is a type of black-box testing, the tester does not look at the code and, therefore, the manner in which the programmer has coded the error handling for the social insurance (security) number is not known. Separate tests are used for each invalid input, to avoid masking the result in the event one error takes priority over another.&lt;br /&gt;&lt;br /&gt;For example, if only one error message is displayed at one time, and the error message for the first three digits takes priority, then testing invalid inputs for the first three digits and the fourth and fifth digits together, does not result in an error message for the fourth and fifth digits. In tests B through G, only the results for the invalid input need to be evaluated, because the valid input was tested in test case A.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Suggested test cases:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Test Case A - Tests 1 and 5, (both are valid, therefore there is no problem with errors),&lt;/li&gt;&lt;li&gt;Test Case B - Tests 2 and 5, (only the first one is invalid, therefore the correct error should be produced),&lt;/li&gt;&lt;li&gt;Test Case C - Tests 3 and 5, (only the first one is invalid, therefore the correct error should be produced),&lt;/li&gt;&lt;li&gt;Test Case D - Tests 4 and 5, (only the first one is invalid, therefore the correct error should be produced),&lt;/li&gt;&lt;li&gt;Test Case E - Tests 1 and 6, (only the second one is invalid, therefore the correct error should be produced),&lt;/li&gt;&lt;li&gt;Test Case F - Tests 1 and 7, (only the second one is invalid, therefore the correct error should be produced),&lt;/li&gt;&lt;li&gt;Test Case G - Tests 1 and 8, (only the second one is invalid, therefore the correct error should be produced). &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-1023626995346190175?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/1023626995346190175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=1023626995346190175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/1023626995346190175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/1023626995346190175'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/equivalence-partitioning.html' title='Equivalence partitioning'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-7556810645399590087</id><published>2007-10-05T17:32:00.000+05:30</published><updated>2007-10-05T17:35:54.656+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='White Box Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Stubs'/><title type='text'>Testing: Drivers and Stubs</title><content type='html'>It is always a good idea to develop and test software in "pieces". But, it may seem impossible because it is hard to imagine how you can test one "piece" if the other "pieces" that it uses have not yet been developed (and vice versa).  To solve this kindof diffcult problems we use stubs and drivers.&lt;br /&gt;&lt;br /&gt;In white-box testing, we must run the code with predetermined input and check to make sure that the code produces predetermined outputs. Often testers write stubs and drivers for white-box testing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Driver for Testing: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Driver is a the piece of code that passes test cases to another piece of code. Test Harness or a test driver is supporting code and data used to provide an environment for testing part of a system in isolation. It can be called as as a software module which is used to invoke a module under test and provide test inputs, control and, monitor execution, and report test results or most simplistically a line of code that calls a method and passes that method a value.&lt;br /&gt;&lt;br /&gt;For example, if you wanted to move a fighter on the game, the driver code would be&lt;br /&gt;moveFighter(Fighter, LocationX, LocationY);&lt;br /&gt;&lt;br /&gt;This driver code would likely be called from the main method. A white-box test case would execute this driver line of code and check "fighter.getPosition()" to make sure the player is now on the expected cell on the board.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stubs for Testing:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A Stub is a dummy procedure, module or unit that stands in for an unfinished portion of a system.&lt;br /&gt;&lt;br /&gt;Four basic types of Stubs for Top-Down Testing are:&lt;br /&gt;&lt;br /&gt;1    Display a trace message&lt;br /&gt;2    Display parameter value(s)&lt;br /&gt;3    Return a value from a table&lt;br /&gt;4    Return table value selected by parameter&lt;br /&gt;&lt;br /&gt;A stub is a computer program which is used as a substitute for the body of a software module that is or will be defined elsewhere or a dummy component or object used to simulate the behavior of a real component until that component has been developed.&lt;br /&gt;&lt;br /&gt;For example, if the movefighter method has not been written yet, a stub such as the one below might be used temporarily – which moves any player to position 1.&lt;br /&gt;&lt;br /&gt;public void moveFighter(Fighter player, int LocationX, int LocationY) {&lt;br /&gt;fighter.setPosition(1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ultimately, the dummy method would be completed with the proper program logic. However, developing the stub allows the programmer to call a method in the code being developed, even if the method does not yet have the desired behavior.&lt;br /&gt;&lt;br /&gt;Stubs and drivers are often viewed as throwaway code. However, they do not have to be thrown away: Stubs can be "filled in" to form the actual method. Drivers can become automated test cases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-7556810645399590087?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/7556810645399590087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=7556810645399590087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/7556810645399590087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/7556810645399590087'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/testing-drivers-and-stubs.html' title='Testing: Drivers and Stubs'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-2447152093333249772</id><published>2007-10-01T10:37:00.000+05:30</published><updated>2007-10-01T11:13:53.868+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='Too much methodology and Project Disaster'/><title type='text'>Too Much Methodology and Project Disaster</title><content type='html'>Methodology is a tool for completing a project, not a guarantee that things will go smoothly. Project Management methodologies are documented best practices, and more often than not, the failure of a project can be traced to a lack of best practices. Achieving higher levels of maturity in Capability Maturity Models involves having a methodology as a condition at the initial phases itself. The objective of consistently delivering within budgets and deadlines cannot be achieved without following best practices.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Project Disaster&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;There are several important things to do once you realize that you're facing a disaster in the making, but you shouldn't do any of them until you are really sure that it's an impending disaster you're up against. So the first key to disaster recovery is disaster detection.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Too much methodology&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;While methodologies are inherently good for projects, getting lost in a flood of them is not the best thing for a project.  The damage happens when there is too much methodology - often the 'too much' sneaks up to unsuspecting executives and surprises them. it starts out innocently enough, when some basic methodology is put into place. And as with any tool, it may be employed for its intended use or as a weapon. A team that's over-burdened with methodology is usually either too concerned with the means rather than the end or is using the process as a bludgeon to further political goals.&lt;br /&gt;&lt;br /&gt;An article on &lt;a href="http://www.pmforum.org/viewpoints/2004/1112pmmethodologies.htm"&gt;PM Forum&lt;/a&gt; by Tony Crawford says&lt;em&gt;:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;"The problem is not the absence of project management methodologies. Indeed, the biggest project failures were with organizations that had the most methodologies. The greater need by project managers and their teams was for easy-to-use methodologies with direct links to recommended tools and templates, and even more importantly, that they also have the insights and understanding of the value of these methodologies to the success of a project and a motivation and desire to apply them."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-2447152093333249772?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/2447152093333249772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=2447152093333249772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/2447152093333249772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/2447152093333249772'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/10/too-much-methodology-and-project.html' title='Too Much Methodology and Project Disaster'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-4854443233147375254</id><published>2007-09-28T17:57:00.000+05:30</published><updated>2007-09-28T18:01:07.098+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Process'/><category scheme='http://www.blogger.com/atom/ns#' term='Test Incident Report'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Methodology'/><title type='text'>Test Incident Report</title><content type='html'>A document reporting on any event that occurs during testing process which requires further investigation&lt;br /&gt;&lt;br /&gt;The purpose of a Test Incident Report is to document any event that occurs during the testing process, which requires investigation. The Problem Resolution procedure defined in the Quality Plan should document the manner in which any Test Incident Reports are to be treated.&lt;br /&gt;&lt;br /&gt;The Test Incident Report conforms to ANSI/IEEE Standard 829-1983, IEEE Standards for software test documentation.&lt;br /&gt;&lt;br /&gt;&lt;span id="intelliTXT"&gt;A sample Test Incident Report for capturing incidents:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Date: ___________&lt;br /&gt;&lt;br /&gt;Project: ____________&lt;br /&gt;&lt;br /&gt;Programmer: __________________&lt;br /&gt;&lt;br /&gt;Tester: _________________&lt;br /&gt;&lt;br /&gt;Program/Module: _______________________&lt;br /&gt;&lt;br /&gt;Build/Revision/Release: _______________&lt;br /&gt;&lt;br /&gt;Software Environment: _________________&lt;br /&gt;&lt;br /&gt;Hardware Environment: _________________&lt;br /&gt;&lt;br /&gt;Number of Occurrences: _______&lt;br /&gt;&lt;br /&gt;Severity: _________&lt;br /&gt;&lt;br /&gt;Priority __________&lt;br /&gt;&lt;br /&gt;Detailed Description: ___________________________________________________&lt;br /&gt;&lt;br /&gt;___________________________________________________&lt;br /&gt;&lt;br /&gt;___________________________________________________&lt;br /&gt;&lt;br /&gt;___________________________________________________&lt;br /&gt;&lt;br /&gt;___________________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Assigned To: ___________________&lt;br /&gt;&lt;br /&gt;Incident Resolution: ____________________________________________________&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-4854443233147375254?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/4854443233147375254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=4854443233147375254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4854443233147375254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4854443233147375254'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/09/test-incident-report.html' title='Test Incident Report'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-647823854464406827</id><published>2007-09-27T14:47:00.001+05:30</published><updated>2008-11-14T03:10:41.511+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Risk Assessment'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Risks'/><category scheme='http://www.blogger.com/atom/ns#' term='Probability of occurrence'/><category scheme='http://www.blogger.com/atom/ns#' term='Risk Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Risk Analysis and Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Business Impact Analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Risk severity'/><category scheme='http://www.blogger.com/atom/ns#' term='Risk'/><category scheme='http://www.blogger.com/atom/ns#' term='Types of Risks'/><category scheme='http://www.blogger.com/atom/ns#' term='Mitigation plan'/><title type='text'>Risk Analysis</title><content type='html'>A risk is a potential for loss or damage to an Organization from materialized threats. Risk Analysis attempts to identify all the risks and then quantify the severity of the risks. A threat as we have seen is a possible damaging event. If it occurs, it exploits vulnerability in the security of a computer based system.&lt;br /&gt;Risk Identification:&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;Software Risks&lt;/span&gt;: Knowledge of the most common risks associated with Software development, and the platform you are working on.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;Business Risks&lt;/span&gt;: Most common risks associated with the business using the Software&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;Testing Risks&lt;/span&gt;: Knowledge of the most common risks associated with Software Testing for the platform you are working on, tools being used, and test methods being applied.&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;Premature Release Risk&lt;/span&gt;: Ability to determine the risk associated with releasing unsatisfactory or untested Software Predicts.&lt;br /&gt;&lt;br /&gt;5. &lt;span style="font-weight: bold;"&gt;Risk Methods&lt;/span&gt;: Strategies and approaches for identifying risks or problems associated with implementing and operating information technology, products and process; assessing their likelihood, and initiating strategies to test those risks.&lt;br /&gt;&lt;br /&gt;Sometimes mapping out the risk can be helpful. Risks can be explained in tabular format:&lt;br /&gt;&lt;br /&gt;&lt;table class="MsoNormalTable" style="border: 1pt solid windowtext; width: 464.25pt;" border="1" cellpadding="0" cellspacing="1" width="619"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 13.86%;" valign="top" width="13%"&gt;   &lt;p&gt;Risk&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 18.28%;" valign="top" width="18%"&gt;   &lt;p&gt;Probability of occurrence&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 19.18%;" valign="top" width="19%"&gt;   &lt;p&gt;Risk severity&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 15.36%;" valign="top" width="15%"&gt;   &lt;p&gt;Exposure&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 15.36%;" valign="top" width="15%"&gt;   &lt;p&gt;Trigger date&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 16.9%;" valign="top" width="16%"&gt;   &lt;p&gt;Mitigation plan&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 13.86%;" valign="top" width="13%"&gt;   &lt;p&gt;Define this in words&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 18.28%;" valign="top" width="18%"&gt;   &lt;p&gt;How likely is this risk to occur? Use high, medium, low&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 19.18%;" valign="top" width="19%"&gt;   &lt;p&gt;How severe a problem is this risk if it occurs? Use high, medium, low&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 15.36%;" valign="top" width="15%"&gt;   &lt;p&gt;Multiply probability and severity together, to derive a joint value&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 15.36%;" valign="top" width="15%"&gt;   &lt;p&gt;The date by which you will set the mitigation plan in place&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 16.9%;" valign="top" width="16%"&gt;   &lt;p&gt;What are you going to do about this&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Risk Analysis is one of the important concepts in Software Product/Project Life Cycle. Risk analysis is broadly defined to include risk assessment, risk characterization, risk communication, risk management, and policy relating to risk. Risk Assessment is also called as Security risk analysis.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Technical Definitions:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Risk Analysis: &lt;/span&gt;A risk analysis involves identifying the most probable threats to an organization and analyzing the related vulnerabilities of the organization to these threats.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Risk Assessment: &lt;/span&gt;A risk assessment involves evaluating existing physical and environmental security and controls, and assessing their adequacy relative to the potential threats of the organization.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Business Impact Analysis:&lt;/span&gt; A business impact analysis involves identifying the critical business functions within the organization and determining the impact of not performing the business function beyond the maximum acceptable outage. Types of criteria that can be used to evaluate the impact include: customer service, internal operations, legal/statutory and financial.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Types of Risks&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Risks for a software product can be categorized into various types. Some of them are:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Product Size Risks:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following risk item issues identify some generic risks associated with product size:&lt;br /&gt;•    Estimated size of the product and confidence in estimated size?&lt;br /&gt;•    Estimated size of product?&lt;br /&gt;•    Size of database created or used by the product?&lt;br /&gt;•    Number of users of the product?&lt;br /&gt;•    Number of projected changes to the requirements for the product?&lt;br /&gt;&lt;br /&gt;Risk will be high, when a large deviation occurs between expected values and the previous experience. All the expected information must be compared to previous experience for analysis of risk.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Business Impact Risks:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following risk item issues identify some generic risks associated with business impact:&lt;br /&gt;•    Affect of this product on company revenue?&lt;br /&gt;•    Reasonableness of delivery deadline?&lt;br /&gt;•    Number of customers who will use this product and the consistency of their needs relative to the product?&lt;br /&gt;•    Number of other products/systems with which this product must be interoperable?&lt;br /&gt;•    Amount and quality of product documentation that must be produced and delivered to the customer?&lt;br /&gt;•    Costs associated with late delivery or a defective product?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Customer-Related Risks:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Different Customers have different needs. Customers have different personalities. Some customers accept what is delivered and some others complain about the quality of the product. In some other cases, customers may have very good association with the product and the producer and some other customers may not know. A bad customer represents a significant threat to the project plan and a substantial risk for the project manager.&lt;br /&gt;&lt;br /&gt;The following risk item checklist identifies generic risks associated with different customers:&lt;br /&gt;•    Have you worked with the customer in the past?&lt;br /&gt;•    Does the customer have a solid idea of what is required?&lt;br /&gt;•    Will the customer agree to spend time in formal requirements gathering meetings to identify project scope?&lt;br /&gt;•    Is the customer willing to participate in reviews?&lt;br /&gt;•    Is the customer technically sophisticated in the product area?&lt;br /&gt;•    Does the customer understand the software engineering process?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Process Risks:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If the software engineering process is ill-defined or if analysis, design and testing are not conducted in a planned fashion, then risks are high for the product.&lt;br /&gt;•    Has your organization developed a written description of the software process to be used on this project?&lt;br /&gt;•    Are the team members following the software process as it is documented?&lt;br /&gt;•    Are the third party coders following a specific software process and is there any procedure for tracking the performance of them?&lt;br /&gt;•    Are formal technical reviews are done regularly at both development and testing teams?&lt;br /&gt;•    Are the results of each formal technical review documented, including defects found and resources used?&lt;br /&gt;•    Is configuration management used to maintain consistency among system/software requirements, design, code, and test cases?&lt;br /&gt;•    Is a mechanism used for controlling changes to customer requirements that impact the software?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technical Issues:&lt;/span&gt;&lt;br /&gt;•    Are specific methods used for software analysis?&lt;br /&gt;•    Are specific conventions for code documentation defined and used?&lt;br /&gt;•    Are any specific methods used for test case design?&lt;br /&gt;•    Are software tools used to support planning and tracking activities?&lt;br /&gt;•    Are configuration management software tools used to control and track change activity throughout the software process?&lt;br /&gt;•    Are tools used to create software prototypes?&lt;br /&gt;•    Are software tools used to support the testing process?&lt;br /&gt;•    Are software tools used to support the production and management of documentation?&lt;br /&gt;•    Are quality metrics collected for all software projects?&lt;br /&gt;•    Are productivity metrics collected for all software projects?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technology Risk:&lt;/span&gt;&lt;br /&gt;•    Is the technology to be built new to your organization?&lt;br /&gt;•    Does the software interface with new hardware configurations?&lt;br /&gt;•    Does the software to be built interface with a database system whose function and performance have not been proven in this application area?&lt;br /&gt;•    Is a specialized user interface demanded by product requirements?&lt;br /&gt;•    Do requirements demand the use of new analysis, design or testing methods?&lt;br /&gt;•    Do requirements put excessive performance constraints on the product?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Development Environment Risks:&lt;/span&gt;&lt;br /&gt;•    Is a software project and process management tool available?&lt;br /&gt;•    Are tools for analysis and design available?&lt;br /&gt;•    Do analysis and design tools deliver methods that are appropriate for the product to be built? •    Are compilers or code generators available and appropriate for the product to be built?&lt;br /&gt;•    Are testing tools available and appropriate for the product to be built?&lt;br /&gt;•    Are software configuration management tools available?&lt;br /&gt;•    Does the environment make use of a database or repository?&lt;br /&gt;•    Are all software tools integrated with one another?&lt;br /&gt;•    Have members of the project team received training in each of the tools?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Risks Associated with Staff Size and Experience:&lt;/span&gt;&lt;br /&gt;•    Are the best people available and are they enough for the project?&lt;br /&gt;•    Do the people have the right combination of skills?&lt;br /&gt;•    Are staffs committed for entire duration of the project?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Risk Analysis and Testing&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-0mek8muGbw/Rvt5vgSStEI/AAAAAAAAACs/ZlA5dsaTiTE/s1600-h/risk+analysis+and+testing.bmp"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_-0mek8muGbw/Rvt5vgSStEI/AAAAAAAAACs/ZlA5dsaTiTE/s400/risk+analysis+and+testing.bmp" alt="" id="BLOGGER_PHOTO_ID_5114815658836800578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-647823854464406827?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/647823854464406827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=647823854464406827' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/647823854464406827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/647823854464406827'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/09/risk-analysis.html' title='Risk Analysis'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-0mek8muGbw/Rvt5vgSStEI/AAAAAAAAACs/ZlA5dsaTiTE/s72-c/risk+analysis+and+testing.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-7133893963277756210</id><published>2007-09-27T13:51:00.000+05:30</published><updated>2007-09-27T13:57:15.503+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Metrics Used In Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Metrics Set'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Metrics for Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='Product Quality Measures'/><category scheme='http://www.blogger.com/atom/ns#' term='Metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Methodology'/><title type='text'>Metrics Used In Testing</title><content type='html'>Software metrics are numerical data related to software development. Metrics strongly support software project management activities. They relate to the four functions of management as follows:&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;Planning &lt;/span&gt;- Metrics serve as a basis of cost estimating, training planning, resource planning, scheduling, and budgeting.&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;Organizing &lt;/span&gt;- Size and schedule metrics influence a project's organization.&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;Controlling &lt;/span&gt;- Metrics are used to status and track software development activities for compliance to plans.&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;Improving &lt;/span&gt;- Metrics are used as a tool for process improvement and to identify where improvement efforts should be concentrated and measure the effects of process improvement efforts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Product Quality Measures:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Metrics Set&lt;/span&gt;&lt;br /&gt;The metrics to be collected provide indicators that track ongoing project progress, software products, and software development processes.&lt;br /&gt;&lt;br /&gt;1.    Customer satisfaction index&lt;br /&gt;2.    Delivered defect quantities&lt;br /&gt;3.    Responsiveness (turnaround time) to users&lt;br /&gt;4.    Product volatility&lt;br /&gt;5.    Defect ratios&lt;br /&gt;6.    Defect removal efficiency&lt;br /&gt;7.    Complexity of delivered product&lt;br /&gt;8.    Test coverage&lt;br /&gt;9.    Cost of defects,&lt;br /&gt;10.    Costs of quality activities&lt;br /&gt;11.    Re-work&lt;br /&gt;12.    Reliability and Metrics for Evaluating Application System Testing&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Customer satisfaction index &lt;/span&gt;&lt;br /&gt;This index is surveyed before product delivery and after product delivery&lt;br /&gt;(and on-going on a periodic basis, using standard questionnaires).The following are analyzed:&lt;br /&gt;•    Number of system enhancement requests per year&lt;br /&gt;•    Number of maintenance fix requests per year&lt;br /&gt;•    User friendliness: call volume to customer service hotline&lt;br /&gt;•    User friendliness: training time per new user&lt;br /&gt;•    Number of product recalls or fix releases (software vendors)&lt;br /&gt;•    Number of production re-runs (in-house information systems groups)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Delivered defect quantities &lt;/span&gt;&lt;br /&gt;They are normalized per function point (or per LOC) at product delivery (first 3 months or first year of operation) or Ongoing (per year of operation) by level of severity, by category or cause, e.g.: requirements defect, design defect, code defect, documentation/on-line help defect, defect introduced by fixes, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Responsiveness (turnaround time) to users &lt;/span&gt;&lt;br /&gt;•    Turnaround time for defect fixes, by level of severity&lt;br /&gt;•    Time for minor vs. major enhancements; actual vs. planned elapsed time&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Product volatility &lt;/span&gt;&lt;br /&gt;•    Ratio of maintenance fixes (to repair the system &amp;amp; bring it into compliance with specifications), vs. enhancement requests (requests by users to enhance or change functionality)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Defect ratios &lt;/span&gt;&lt;br /&gt;•    Defects found after product delivery per function point.&lt;br /&gt;•    Defects found after product delivery per LOC&lt;br /&gt;•    Pre-delivery defects: annual post-delivery defects&lt;br /&gt;•    Defects per function point of the system modifications&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Defect removal efficiency &lt;/span&gt;&lt;br /&gt;•    Number of post-release defects (found by clients in field operation), categorized by level of severity&lt;br /&gt;•    Ratio of defects found internally prior to release (via inspections and testing), as a percentage of all defects&lt;br /&gt;•    All defects include defects found internally plus externally (by customers) in the first year after product delivery&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Complexity of delivered product&lt;/span&gt;&lt;br /&gt;•    McCabe's cyclomatic complexity counts across the system&lt;br /&gt;•    Halstead’s measure&lt;br /&gt;•    Card's design complexity measures&lt;br /&gt;•    Predicted defects and maintenance costs, based on complexity measures&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. Test coverage &lt;/span&gt;&lt;br /&gt;•    Breadth of functional coverage&lt;br /&gt;•    Percentage of paths, branches or conditions that were actually tested&lt;br /&gt;•    Percentage by criticality level: perceived level of risk of paths&lt;br /&gt;•    The ratio of the number of detected faults to the number of predicted faults.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9. Cost of defects &lt;/span&gt;&lt;br /&gt;•    Business losses per defect that occurs during operation&lt;br /&gt;•    Business interruption costs; costs of work-arounds&lt;br /&gt;•    Lost sales and lost goodwill&lt;br /&gt;•    Litigation costs resulting from defects&lt;br /&gt;•    Annual maintenance cost (per function point)&lt;br /&gt;•    Annual operating cost (per function point)&lt;br /&gt;•    Measurable damage to your boss's career&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10. Costs of quality activities &lt;/span&gt;&lt;br /&gt;•    Costs of reviews, inspections and preventive measures&lt;br /&gt;•    Costs of test planning and preparation&lt;br /&gt;•    Costs of test execution, defect tracking, version and change control&lt;br /&gt;•    Costs of diagnostics, debugging and fixing&lt;br /&gt;•    Costs of tools and tool support&lt;br /&gt;•    Costs of test case library maintenance&lt;br /&gt;•    Costs of testing &amp;amp; QA education associated with the product&lt;br /&gt;•    Costs of monitoring and oversight by the QA organization (if separate from the development and test organizations)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;11. Re-work &lt;/span&gt;&lt;br /&gt;•    Re-work effort (hours, as a percentage of the original coding hours)&lt;br /&gt;•    Re-worked LOC (source lines of code, as a percentage of the total delivered LOC)&lt;br /&gt;•    Re-worked software components (as a percentage of the total delivered components)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;12. Reliability &lt;/span&gt;&lt;br /&gt;•    Availability (percentage of time a system is available, versus the time the system is needed to be available)&lt;br /&gt;•    Mean time between failure (MTBF).&lt;br /&gt;•    Man time to repair (MTTR)&lt;br /&gt;•    Reliability ratio (MTBF / MTTR)&lt;br /&gt;•    Number of product recalls or fix releases&lt;br /&gt;•    Number of production re-runs as a ratio of production runs&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Metrics for Evaluating Application System Testing:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Metric = Formula&lt;br /&gt;Test Coverage = Number of units (KLOC/FP) tested / total size of the system. (LOC represents Lines of Code)&lt;br /&gt;Number of tests per unit size = Number of test cases per KLOC/FP (LOC represents Lines of Code).&lt;br /&gt;Acceptance criteria tested = Acceptance criteria tested / total acceptance criteria&lt;br /&gt;Defects per size = Defects detected / system size&lt;br /&gt;Test cost (in %) = Cost of testing / total cost *100&lt;br /&gt;Cost to locate defect = Cost of testing / the number of defects located&lt;br /&gt;Achieving Budget = Actual cost of testing / Budgeted cost of testing&lt;br /&gt;Defects detected in testing = Defects detected in testing / total system defects&lt;br /&gt;Defects detected in production = Defects detected in production/system size&lt;br /&gt;Quality of Testing = No of defects found during Testing/(No of defects found during testing + No of acceptance defects found after delivery) *100&lt;br /&gt;Effectiveness of testing to business = Loss due to problems / total resources processed by the system.&lt;br /&gt;System complaints = Number of third party complaints / number of transactions processed&lt;br /&gt;Scale of Ten = Assessment of testing by giving rating in scale of 1 to 10&lt;br /&gt;Source Code Analysis = Number of source code statements changed / total number of tests.&lt;br /&gt;Effort Productivity = Test Planning Productivity = No of Test cases designed / Actual Effort for Design and Documentation&lt;br /&gt;Test Execution Productivity = No of Test cycles executed / Actual Effort for testing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-7133893963277756210?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/7133893963277756210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=7133893963277756210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/7133893963277756210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/7133893963277756210'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/09/metrics-used-in-testing.html' title='Metrics Used In Testing'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-6927464796671929238</id><published>2007-09-21T16:15:00.000+05:30</published><updated>2007-09-21T16:21:45.691+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='testimg methodology'/><category scheme='http://www.blogger.com/atom/ns#' term='security Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Validation'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Verification'/><category scheme='http://www.blogger.com/atom/ns#' term='walkthroughs'/><category scheme='http://www.blogger.com/atom/ns#' term='inspections'/><title type='text'>Verification and Validation</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Verification:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The standard definition of Verification is: "Are we building the product RIGHT?"&lt;br /&gt;&lt;br /&gt;Verification is a process that makes it sure that the software product is developed the right way. The software should confirm to its predefined specifications, as the product development goes through different stages, an analysis is done to ensure that all required specifications are met.&lt;br /&gt;&lt;br /&gt;During the Verification, the work product is reviewed/examined personally by one ore more persons in order to find and point out the defects in it. This process helps in prevention of potential bugs, which may cause in failure of the project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Validation:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Validation is a process of finding out if the product being built is right?&lt;br /&gt;&lt;br /&gt;Whatever the software product is being developed, it should do what the user expects it to do. The software product should functionally do what it is supposed to, it should satisfy all the functional requirements set by the user. Validation is done during or at the end of the development process in order to determine whether the product satisfies specified requirements.&lt;br /&gt;&lt;br /&gt;All types of testing methods are basically carried out during the Validation process. Test plan, test suits and test cases are developed, which are used during the various phases of Validation process. The phases involved in Validation process are: Code Validation/Testing, Integration Validation/Integration Testing, Functional Validation/Functional Testing, and System/User Acceptance Testing/Validation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Activities included in Verification and Validation Process: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The two major V&amp;amp;V activities are reviews, including, inspections and walkthroughs, and testing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reviews:&lt;/span&gt;&lt;br /&gt;Reviews are conducted during and at the end of each phase of the life cycle to determine whether established requirements, design concepts, and specifications have been met.  Reviews consist of the presentation of material to a review board or panel.  Reviews are most effective when conducted by personnel who have not been directly involved in the development of the software being reviewed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Inspection:&lt;/span&gt;&lt;br /&gt;Inspection involves a team of about 3-6 people, led by a leader, which formally reviews the documents and work product during various phases of the product development life cycle. The work product and related documents are presented in front of the inspection team, the members of which carry different interpretations of the presentation. The bugs that are detected during the inspection are communicated to the next level in order to take care of them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Walkthroughs:&lt;/span&gt;&lt;br /&gt;Walkthrough can be considered same as inspection without formal preparation (of any presentation or documentations). During the walkthrough meeting, the presenter/author introduces the material to all the participants in order to make them familiar with it. Even when the walkthroughs can help in finding potential bugs, they are used for knowledge sharing or communication purpose.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Testing:&lt;/span&gt;&lt;br /&gt;Testing is the operation of the software with real or simulated inputs to demonstrate that a product satisfies its requirements and, if it does not, to identify the specific differences between expected and actual results. There are varied levels of software tests, ranging from unit or element testing through integration testing and performance testing, up to software system and acceptance tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-6927464796671929238?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/6927464796671929238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=6927464796671929238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/6927464796671929238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/6927464796671929238'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/09/verification-and-validation.html' title='Verification and Validation'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-8491392885942783068</id><published>2007-09-14T14:53:00.000+05:30</published><updated>2007-09-14T15:01:35.260+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Types'/><category scheme='http://www.blogger.com/atom/ns#' term='White Box Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Methodology'/><title type='text'>White Box Testing</title><content type='html'>White Box Testing; also know as glass box testing is a testing method where the tester involves in testing the individual software programs using tools, standards etc.&lt;br /&gt;&lt;br /&gt;Using white box testing methods, we can derive test cases that:&lt;br /&gt;1)    Guarantee that all independent paths within a module have been exercised at least once,&lt;br /&gt;2)    Exercise all logical decisions on their true and false sides,&lt;br /&gt;3)    Execute all loops at their boundaries and within their operational bounds, and&lt;br /&gt;4)    Exercise internal data structures to ensure their validity.&lt;br /&gt;&lt;br /&gt;Advantages of White box testing:&lt;br /&gt;1)    Logic errors and incorrect assumptions are inversely proportional to the probability that a program path will be executed.&lt;br /&gt;2)    Often, a logical path is not likely to be executed when, in fact, it may be executed on a regular basis.&lt;br /&gt;3)    Typographical errors are random.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;White Box Testing Types&lt;/span&gt;&lt;br /&gt;There are various types of White Box Testing. Here in this framework I will address the most common and important types.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Basis Path Testing&lt;/span&gt;&lt;br /&gt;Basis path testing is a white box testing technique first proposed by Tom McCabe. The Basis path method enables to derive a logical complexity measure of a procedural design and use this measure as a guide for defining a basis set of execution paths. Test Cases derived to exercise the basis set are guaranteed to execute every statement in the program at least one time during testing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Flow Graph Notation&lt;/span&gt;&lt;br /&gt;The flow graph depicts logical control flow using a diagrammatic notation. Each structured construct has a corresponding flow graph symbol.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Cyclomatic Complexity&lt;/span&gt;&lt;br /&gt;Cyclomatic complexity is software metric that provides a quantitative measure of the logical complexity of a program. When used in the context of a basis path testing method, the value computed for Cyclomatic complexity defines the number for independent paths in the basis set of a program and provides us with an upper bound for the number of tests that must be conducted to ensure that all statements have been executed at least once.&lt;br /&gt;An independent path is any path through the program that introduces at least one new set of processing statements or a new condition.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Computing Cyclomatic Complexity&lt;/span&gt;&lt;br /&gt;Cyclomatic complexity has a foundation in graph theory and provides us with extremely useful software metric. Complexity is computed in one of the three ways:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    The number of regions of the flow graph corresponds to the Cyclomatic complexity.&lt;/li&gt;&lt;li&gt;    Cyclomatic complexity, V(G), for a flow graph, G is defined as V (G) = E-N+2; Where E,  is the number of flow graph edges, N is the number of flow graph nodes.&lt;/li&gt;&lt;li&gt;    Cyclomatic complexity, V (G) for a flow graph, G is also defined as V (G) = P+1; P is the number of predicate nodes contained in the flow graph G. &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Graph Matrices&lt;/span&gt;&lt;br /&gt;The procedure for deriving the flow graph and even determining a set of basis paths is amenable to mechanization. To develop a software tool that assists in basis path testing, a data structure, called a graph matrix can be quite useful.&lt;br /&gt;A Graph Matrix is a square matrix whose size is equal to the number of nodes on the flow graph. Each row and column corresponds to an identified node, and matrix entries correspond to connections between nodes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Control Structure Testing&lt;/span&gt;&lt;br /&gt;Described below are some of the variations of Control Structure Testing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5.1&lt;/span&gt; Condition Testing&lt;br /&gt;Condition testing is a test case design method that exercises the logical conditions contained in a program module.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5.2&lt;/span&gt; Data Flow Testing&lt;br /&gt;The data flow testing method selects test paths of a program according to the locations of definitions and uses of variables in the program.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Loop Testing&lt;/span&gt;&lt;br /&gt;Loop Testing is a white box testing technique that focuses exclusively on the validity of loop constructs. Four classes of loops can be defined: Simple loops, Concatenated loops, nested loops, and unstructured loops.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6.1 &lt;/span&gt;Simple Loops&lt;br /&gt;The following sets of tests can be applied to simple loops, where ‘n’ is the maximum number of allowable passes through the loop.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Skip the loop entirely.&lt;/li&gt;&lt;li&gt;Only one pass through the loop.&lt;/li&gt;&lt;li&gt;Two passes through the loop.&lt;/li&gt;&lt;li&gt;‘m’ passes through the loop where m&lt;/li&gt;&lt;li&gt;n-1, n, n+1 passes through the loop.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6.2&lt;/span&gt; Nested Loops&lt;br /&gt;If we extend the test approach for simple loops to nested loops, the number of possible tests would grow geometrically as the level of nesting increases.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Start at the innermost loop. Set all other loops to minimum values.&lt;/li&gt;&lt;li&gt;Conduct simple loop tests for the innermost loop while holding the outer loops at their minimum iteration parameter values. Add other tests for out-of-range or exclude values. &lt;/li&gt;&lt;li&gt;Work outward, conducting tests for the next loop, but keeping all other outer loops at minimum values and other nested loops to “typical” values. &lt;/li&gt;&lt;li&gt;Continue until all loops have been tested. &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6.3&lt;/span&gt; Concatenated Loops&lt;br /&gt;Concatenated loops can be tested using the approach defined for simple loops, if each of the loops is independent of the other. However, if two loops are concatenated and the loop counter for loop 1 is used as the initial value for loop 2, then the loops are not independent.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6.4 &lt;/span&gt;Unstructured Loops&lt;br /&gt;Whenever possible, this class of loops should be redesigned to reflect the use of the structured programming constructs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-8491392885942783068?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/8491392885942783068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=8491392885942783068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/8491392885942783068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/8491392885942783068'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/09/white-box-testing.html' title='White Box Testing'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-5180121312920206379</id><published>2007-09-13T17:18:00.000+05:30</published><updated>2007-09-13T17:32:30.727+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Metrics for Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Metrics'/><title type='text'>Software Metrics for Testing</title><content type='html'>&lt;span style="font-size:100%;"&gt;Software metric is a measure of some property of a piece of software or its specifications.&lt;br /&gt;Since quantitative methods have proved so powerful in the other sciences, computer science practitioners and theoreticians have worked hard to bring similar approaches to software development.&lt;br /&gt;&lt;br /&gt;Common software metrics include:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Order of growth (See Analysis of algorithms in terms of asymptotic analysis and Big O notation)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Source lines of code&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Cyclomatic complexity&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Function point analysis&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Bugs per line of code&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;    Code coverage&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;    Number of lines of customer requirements&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;    Number of classes and interfaces&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;    Robert Cecil Martin’s software package metrics&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;    Cohesion&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;    Coupling&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Types of Metrics for Testing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Base Metrics&lt;br /&gt;&lt;br /&gt;Base metrics constitute the raw data gathered by a Test Analyst throughout the testing effort.  These metrics are used to provide project status reports to the Test Lead and Project Manager; they also feed into the formulas used to derive Calculated Metrics. Every project should track the following Test Metrics:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of Test Cases&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of Test Cases Executed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of Test Cases Passed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of Test Cases Failed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of Test Cases Under Investigation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of Test Cases Blocked&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of Test Cases Re-executed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Number of First Run Failures&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Total Executions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Total Passes&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Total Failures&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Test Case Execution Time&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Test Execution Time&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;As seen in the ‘Keep It Simple’ section, many of the Base Metrics are simple counts that most Test Analysts already track in one form or another.  While there are other Base Metrics that could be tracked, this list is sufficient for most Test Teams that are starting a Test Metrics program.&lt;br /&gt;&lt;br /&gt;Use all available information when interpreting the metrics gathered, including other metrics and in-tangible information that may not be quantifiable.  Also, when available, compare the metrics across several projects&lt;br /&gt;Calculated Metrics&lt;br /&gt;&lt;br /&gt;Calculated Metrics convert the Base Metrics data into more useful information.  These types of metrics are generally the responsibility of the Test Lead and can be tracked at many different levels (by module, tester, or project).  The following Calculated Metrics are recommended for implementation in all test efforts:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Complete&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Test Coverage&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Test Cases Passed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Test Cases Blocked&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Run Fail Rate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Fail Rate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Defects Corrected&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Rework&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Test Effectiveness&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Percentage - Test Efficiency&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Discovery Rate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Removal Cost&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;These metrics provide valuable information that, when used and interpreted, oftentimes leads to significant improvements in the overall SDLC.  If a metric like “First Run Fail Rate” has a high value, it may be indicative of a lack of unit testing or code peer review during the coding phase.  With this information, as well as any other relevant information available to the Project Team, the Project Team may decide to institute some preventative QA techniques that they believe will improve the process.  Of course, in the next project, when the metric is observed it should be noted how it has trended to see if the process change was in fact an improvement.&lt;br /&gt;Calculated metrics use the base data to develop more useful information for doing metrics analysis and identifying potential SDLC process improvements.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-5180121312920206379?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/5180121312920206379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=5180121312920206379' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5180121312920206379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5180121312920206379'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/09/software-metrics-for-testing.html' title='Software Metrics for Testing'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-8277320753630413091</id><published>2007-09-06T10:05:00.000+05:30</published><updated>2007-09-27T12:32:41.546+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><category scheme='http://www.blogger.com/atom/ns#' term='Alternative metal'/><category scheme='http://www.blogger.com/atom/ns#' term='Lateralus'/><category scheme='http://www.blogger.com/atom/ns#' term='Maynard James Keenan'/><category scheme='http://www.blogger.com/atom/ns#' term='ProTool'/><category scheme='http://www.blogger.com/atom/ns#' term='Art rock'/><category scheme='http://www.blogger.com/atom/ns#' term='sive metal'/><category scheme='http://www.blogger.com/atom/ns#' term='Justin Chancellor'/><category scheme='http://www.blogger.com/atom/ns#' term='Lateralus Lyrics'/><category scheme='http://www.blogger.com/atom/ns#' term='heavy metal'/><category scheme='http://www.blogger.com/atom/ns#' term='Danny Carey'/><category scheme='http://www.blogger.com/atom/ns#' term='Tool'/><category scheme='http://www.blogger.com/atom/ns#' term='Progressive rock'/><category scheme='http://www.blogger.com/atom/ns#' term='Adam Jones'/><title type='text'>TOOL - Lateralus Lyrics</title><content type='html'>&lt;span style="font-size:100%;"&gt;Black then white are all i see in my infancy.&lt;br /&gt;red and yellow then came to be, reaching out to me.&lt;br /&gt;lets me see.&lt;br /&gt;as below, so above and beyond, I imagine&lt;br /&gt;drawn beyond the lines of reason.&lt;br /&gt;Push the envelope. Watch it bend.&lt;br /&gt;&lt;br /&gt;Over thinking, over analyzing separates the body from the mind.&lt;br /&gt;Withering my intuition, missing opportunities and I must&lt;br /&gt;Feed my will to feel my moment drawing way outside the lines.&lt;br /&gt;&lt;br /&gt;Black then white are all i see in my infancy.&lt;br /&gt;red and yellow then came to be, reaching out to me.&lt;br /&gt;lets me see there is so much more and&lt;br /&gt;beckons me to look thru to these infinite possibilities.&lt;br /&gt;as below, so above and beyond, I imagine&lt;br /&gt;drawn outside the lines of reason.&lt;br /&gt;Push the envelope. Watch it bend.&lt;br /&gt;&lt;br /&gt;over thinking, over analyzing separates the body from the mind.&lt;br /&gt;Withering my intuition leaving opportunities behind.&lt;br /&gt;Feed my will to feel this moment urging me to cross the line.&lt;br /&gt;Reaching out to embrace the random.&lt;br /&gt;Reaching out to embrace whatever may come.&lt;br /&gt;&lt;br /&gt;I embrace my desire to&lt;br /&gt;I embrace my desire to&lt;br /&gt;feel the rhythm, to feel connected enough to step aside and weep like a widow&lt;br /&gt;to feel inspired to fathom the power, to witness the beauty,&lt;br /&gt;to bathe in the fountain,&lt;br /&gt;to swing on the spiral&lt;br /&gt;to swing on the spiral&lt;br /&gt;to swing on the spiral of our divinity and still be a human.&lt;br /&gt;&lt;br /&gt;With my feet upon the ground I move myself between the sounds and open wide to suck it in.&lt;br /&gt;I feel it move across my skin.&lt;br /&gt;I'm reaching up and reaching out. I'm reaching for the random or what ever will bewilder me.&lt;br /&gt;what ever will bewilder me.&lt;br /&gt;And following our will and wind we may just go where no one's been.&lt;br /&gt;We'll ride the spiral to the end and may just go where no one's been.&lt;br /&gt;&lt;br /&gt;Spiral out. Keep going.&lt;br /&gt;Spiral out. Keep going.&lt;br /&gt;Spiral out. Keep going.&lt;br /&gt;Spiral out. Keep going.&lt;br /&gt;Spiral out. Keep going.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-8277320753630413091?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/8277320753630413091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=8277320753630413091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/8277320753630413091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/8277320753630413091'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/09/tool-lateralus-lyrics.html' title='TOOL - Lateralus Lyrics'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-5270673100951230562</id><published>2007-08-31T15:41:00.000+05:30</published><updated>2008-11-14T03:10:42.468+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Complete'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='TestComplete'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing Tool'/><title type='text'>TestComplete</title><content type='html'>Today automated testing plays a vital role in many software development projects. AutomatedQA's Test Complete is an automated test manager, with project level support for the full range of internal and UI testing. Designed for developers and testers.&lt;br /&gt;&lt;br /&gt;It delivers automated functional, unit, regression, manual, data-driven, object-driven, distributed and HTTP load, stress and scalability testing in one easy-to-use.&lt;br /&gt;&lt;br /&gt;TestComplete offers systematic, automated, and structured testing, with superior support for .NET, Java, Visual C++, Visual Basic, Delphi, C++Builder and web applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-0mek8muGbw/Rtfriq9x-4I/AAAAAAAAACc/iHZwLDL7H_w/s1600-h/TestComplete.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 450px; height: 378px;" src="http://1.bp.blogspot.com/_-0mek8muGbw/Rtfriq9x-4I/AAAAAAAAACc/iHZwLDL7H_w/s400/TestComplete.gif" alt="" id="BLOGGER_PHOTO_ID_5104807683529243522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-5270673100951230562?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/5270673100951230562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=5270673100951230562' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5270673100951230562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5270673100951230562'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/08/testcomplete.html' title='TestComplete'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-0mek8muGbw/Rtfriq9x-4I/AAAAAAAAACc/iHZwLDL7H_w/s72-c/TestComplete.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-4882667821584173780</id><published>2007-08-31T12:27:00.000+05:30</published><updated>2008-11-14T03:10:42.704+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='tank'/><category scheme='http://www.blogger.com/atom/ns#' term='WW1'/><category scheme='http://www.blogger.com/atom/ns#' term='D1 tank'/><category scheme='http://www.blogger.com/atom/ns#' term='world war 1'/><title type='text'>First Tank of World War 1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-0mek8muGbw/Rte8uK9x-1I/AAAAAAAAACE/FnQRC8QwGiA/s1600-h/Tank3.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_-0mek8muGbw/Rte8uK9x-1I/AAAAAAAAACE/FnQRC8QwGiA/s200/Tank3.jpg" alt="" id="BLOGGER_PHOTO_ID_5104756204051233618" border="0" /&gt;&lt;/a&gt;In 1916 tanks were first introduced into battle - before that armored cars were being used, which had none of the off-road capabilities of the tanks. It was the 15th of September, 1916, that the first British tanks were used in battle. The reasons they were used at this time were basically because of lots of testing, to make sure it would work, and also the fact that attack at the Somme was losing the power to keep going.&lt;br /&gt;&lt;br /&gt;The tanks had been successful in the regard that they had scared the Germans, and they had not been disabled immediately, however some were disappointed. Concerns raised included the view slits - they were too thin to be able to see much while moving, and they were targets for enemy gunshot; and the exhaust - it made too much noise and the heat could have set alit the fuel tank. Another issue raised was the amount of mud that got into the treads and blocked them up.&lt;br /&gt;&lt;br /&gt;he first French use of tanks was on April 16, 1917, and went much worse than the English attack. While there were more tanks involved, many of them broke down, and those that did reach the enemy lines had no support. This resulted in them having to retreat again. Problems discovered here included the temperature - way too hot for any human to operate safely, as well as the vibrations - guns came out of their holdings. The French tanks also didn't have the ability to cross trenches as the British one could. Another problem (or success from the Germans point of view), was the discovery that the armor piercing bullet could go through the walls of tanks.&lt;br /&gt;&lt;br /&gt;During World War I (1914-1918) the British invented and i&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-0mek8muGbw/Rte8T69x-0I/AAAAAAAAAB8/urhu4faI_Rw/s1600-h/Tank1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_-0mek8muGbw/Rte8T69x-0I/AAAAAAAAAB8/urhu4faI_Rw/s200/Tank1.jpg" alt="" id="BLOGGER_PHOTO_ID_5104755753079667522" border="0" /&gt;&lt;/a&gt;mplemented the first working tank. The name tank came when the British shipped them to battle's in crates marked "tanks" trying to cover up what they really were. The first battle in which tanks were implemented was the Battle of the Somme, on September 15, 1916, when the British used 49 tanks with disappointing results. Little more than a year later, however, in November 1917, 400 British tanks penetrated German lines near Cambrai, capturing 8000 of the enemy and 100 guns.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-4882667821584173780?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/4882667821584173780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=4882667821584173780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4882667821584173780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4882667821584173780'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/08/first-tank-of-world-war-1.html' title='First Tank of World War 1'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-0mek8muGbw/Rte8uK9x-1I/AAAAAAAAACE/FnQRC8QwGiA/s72-c/Tank3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-4979507101066194894</id><published>2007-08-24T13:34:00.000+05:30</published><updated>2007-09-27T12:22:24.092+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing jokes'/><category scheme='http://www.blogger.com/atom/ns#' term='Jokes'/><title type='text'>Testing Jokes</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Two software testers at Dinner&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Two software testers went into a diner and ordered two drinks. Then they produced sandwiches from their briefcases and started to eat. The owner became quite concerned and marched over and told them, "You can't eat your own sandwiches in here!"&lt;br /&gt;&lt;br /&gt;The testers looked at each other, shrugged their shoulders and then exchanged sandwiches.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;How Specs Live Forever&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Question&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The US Standard railroad gauge (distance between the rails) is 4 feet, 8.5 inches. That's an exceedingly odd number.&lt;br /&gt;&lt;br /&gt;o Why was that gauge used?&lt;br /&gt;&lt;br /&gt;· Because that's the way they built them in England, and the US railroads were built by English expatriates.&lt;br /&gt;&lt;br /&gt;o Why did the English people build them like that?&lt;br /&gt;&lt;br /&gt;· Because the first rail lines were built by the same people who built the pre-railroad tramways, and that's the gauge they used.&lt;br /&gt;&lt;br /&gt;o Why did "they" use that gauge then?&lt;br /&gt;&lt;br /&gt;· Because the people who built the tramways used the same jigs and tools that they used for building wagons, which used that wheel spacing.&lt;br /&gt;&lt;br /&gt;o Why did the wagons use that odd wheel spacing?&lt;br /&gt;&lt;br /&gt;· Well, if they tried to use any other spacing the wagons would break on some of the old, long distance roads, because that's the spacing of the old wheel ruts.&lt;br /&gt;&lt;br /&gt;o So who built these old rutted roads?&lt;br /&gt;&lt;br /&gt;· The first long distance roads in Europe were built by Imperial Rome for the benefit of their legions. The roads have been used ever since. And the ruts? The initial ruts, which everyone else had to match for fear of destroying their wagons, were first made by Roman war chariots. Since the chariots were made for or by Imperial Rome they were all alike in the matter of wheel spacing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Answer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thus, we have the answer to the original questions. The United States' standard railroad gauge of 4 feet, 8.5 inches derives from the original specification for an Imperial Roman army war chariot.&lt;br /&gt;&lt;br /&gt;Specs and Bureaucracies live forever.&lt;br /&gt;&lt;br /&gt;So, the next time you are handed a specification and wonder what horse's ass came up with it, you may be exactly right. Because the Imperial Roman chariots were made to be just wide enough to accommodate the back-ends of two war horses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-4979507101066194894?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/4979507101066194894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=4979507101066194894' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4979507101066194894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4979507101066194894'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/08/testing-jokes.html' title='Testing Jokes'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-6097927429314849655</id><published>2007-08-23T09:39:00.000+05:30</published><updated>2008-11-14T03:10:43.430+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><category scheme='http://www.blogger.com/atom/ns#' term='Alternative metal'/><category scheme='http://www.blogger.com/atom/ns#' term='10'/><category scheme='http://www.blogger.com/atom/ns#' term='Lateralus'/><category scheme='http://www.blogger.com/atom/ns#' term='Maynard James Keenan'/><category scheme='http://www.blogger.com/atom/ns#' term='Art rock'/><category scheme='http://www.blogger.com/atom/ns#' term='Justin Chancellor'/><category scheme='http://www.blogger.com/atom/ns#' term='heavy metal'/><category scheme='http://www.blogger.com/atom/ns#' term='Danny Carey'/><category scheme='http://www.blogger.com/atom/ns#' term='Progressive metal'/><category scheme='http://www.blogger.com/atom/ns#' term='Tool'/><category scheme='http://www.blogger.com/atom/ns#' term='Progressive rock'/><category scheme='http://www.blogger.com/atom/ns#' term='000 Days'/><category scheme='http://www.blogger.com/atom/ns#' term='Adam Jones'/><title type='text'>TOOL</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);font-family:verdana;font-size:100%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-0mek8muGbw/Rs0pgK9x-vI/AAAAAAAAABU/jRjZnRyp8U8/s1600-h/tool+-+back.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 171px; height: 213px;" src="http://1.bp.blogspot.com/_-0mek8muGbw/Rs0pgK9x-vI/AAAAAAAAABU/jRjZnRyp8U8/s400/tool+-+back.jpg" alt="" id="BLOGGER_PHOTO_ID_5101779585556675314" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;p  style="color: rgb(0, 0, 0);font-family:verdana;" class="MsoNormal"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Tool is an American rock band, formed during 1990 in Los Angeles, California, that consists of drummer Danny Carey, bassist Justin Chancellor, guitarist Adam Jones, and vocalist Maynard James Keenan.&lt;br /&gt;&lt;br /&gt;Emerging with a heavy metal sound on their first release, when the genre was dominated by thrash metal, they were later seen at the top of the alternative metal movement with the release of their second full-length studio album Ænima in 1996.&lt;br /&gt;&lt;br /&gt;After an ongoing evolution of their sound and continuous efforts to unify musical experimentation, visual arts, and a message of personal evolution on Lateralus (2001), their most recent album 10,000 Days (2006), as well as respective tours, they are generally described as a style-transgressing act and part of progressive and art rock.&lt;br /&gt;&lt;br /&gt;Relatively long and complex releases, controversial song lyrics and cover art, and their unorthodox music videos resulted in a rather ambivalent relationship between the band and today's music industry, at times marked by censorship, and the bandmembers' insistence on privacy.&lt;br /&gt;&lt;br /&gt;Nevertheless, Tool receives critical acclaim, has won Grammy Awards, performs worldwide tours, and&lt;br /&gt;&lt;br /&gt;produces albums that top the charts in several countries.&lt;br /&gt;&lt;br /&gt;Between album releases, the band takes extended breaks that allow for collaboration with other artists to design award-winning album packaging, elaborate light shows and involvement in notable side-projects.&lt;br /&gt;&lt;br /&gt;Origin: Los Angeles, California, United States&lt;br /&gt;&lt;br /&gt;Genre(s): Progressive metal, Art rock, Alternative metal, Progressive rock&lt;br /&gt;&lt;br /&gt;Website: &lt;a href="http://www.toolband.com/"&gt;http://www.Toolband.com&lt;/a&gt;&lt;br /&gt;&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="color: rgb(0, 0, 0);font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-0mek8muGbw/Rs0rXK9x-yI/AAAAAAAAABs/OyrjPbqSFW0/s1600-h/trail+of+Dead2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 165px; height: 132px;" src="http://1.bp.blogspot.com/_-0mek8muGbw/Rs0rXK9x-yI/AAAAAAAAABs/OyrjPbqSFW0/s200/trail+of+Dead2.jpg" alt="" id="BLOGGER_PHOTO_ID_5101781629961108258" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="color: rgb(0, 0, 0);font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-0mek8muGbw/Rs0pN69x-uI/AAAAAAAAABM/hh0CShr3S9o/s1600-h/Tool1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 176px; height: 133px;" src="http://4.bp.blogspot.com/_-0mek8muGbw/Rs0pN69x-uI/AAAAAAAAABM/hh0CShr3S9o/s400/Tool1.jpg" alt="" id="BLOGGER_PHOTO_ID_5101779272024062690" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-0mek8muGbw/Rs0me69x-qI/AAAAAAAAAAs/ciEsWM5N4VM/s1600-h/06_tool.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 169px; height: 134px;" src="http://4.bp.blogspot.com/_-0mek8muGbw/Rs0me69x-qI/AAAAAAAAAAs/ciEsWM5N4VM/s200/06_tool.jpg" alt="" id="BLOGGER_PHOTO_ID_5101776265546955426" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  style="color: rgb(0, 0, 0);font-family:verdana;" 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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-6097927429314849655?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/6097927429314849655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=6097927429314849655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/6097927429314849655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/6097927429314849655'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/08/tool.html' title='TOOL'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-0mek8muGbw/Rs0pgK9x-vI/AAAAAAAAABU/jRjZnRyp8U8/s72-c/tool+-+back.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-5206594354132822902</id><published>2007-08-22T14:00:00.000+05:30</published><updated>2007-09-27T12:45:30.092+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='cookies'/><category scheme='http://www.blogger.com/atom/ns#' term='security Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='cookie'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><title type='text'>Cookies - I love Cookies</title><content type='html'>&lt;span style="font-weight: bold;"&gt;What is a Cookie? &lt;/span&gt;&lt;br /&gt;A cookie is a text-only string that gets entered into the memory of your browser. This value of a variable that a website sets; If the lifetime of this value is set to be longer than the time you spend at that site, then this string is saved to file for future reference.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why do sites use Cookies?&lt;/span&gt;&lt;br /&gt;There are many reasons a given site would wish to use cookies. These range from the ability to personalize information (like on My Yahoo or Excite), or to help with on-line sales/services (like on Amazon Books or eBay), or simply for the purposes of collecting demographic information (like DoubleClick). Cookies also provide programmers with a quick and convenient means of keeping site content fresh and relevant to the user's interests. The newest servers use cookies to help with back-end interaction as well, which can improve the utility of a site by being able to securely store any personal data that the user has shared with a site (for example: to help with quick logins on your favorite sites).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How does a cookie really work?&lt;/span&gt;&lt;br /&gt;Understanding how cookies really work requires an understanding of how HTTP works. Cookies transport from Server to Client and back as an HTTP header.&lt;br /&gt;&lt;br /&gt;When a cookie is sent from the server to the browser, an additional line is added to the HTTP headers (example):&lt;br /&gt;Content-type: text/html&lt;br /&gt;Set-Cookie: foo=bar; path=/; expires Mon, 09-Dec-2002 13:46:00 GMT&lt;br /&gt;This header entry would result in a cookie named foo. The value of foo is bar. In addition, this cookie has a path of /, meaning that it is valid for the entire site, and it has an expiration date of Dec 9, 2002 at 1:46pm Greenwich Mean Time (or Universal Time). Provided the browser can understand this header, the cookie will be set.&lt;br /&gt;&lt;br /&gt;When a cookie is sent from the browser to the server, the cookie header is changed slightly:&lt;br /&gt;Content-type: text/html&lt;br /&gt;Cookie: foo=bar&lt;br /&gt;Here, the server is made aware of a cookie called foo, whose value is bar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Breakdown of Cookie Parameters&lt;/span&gt;&lt;br /&gt;As we have just seen, a cookie contains more than simply a name and a value. In fact, a cookie has 6 parameters that can be passed to it:&lt;br /&gt;• The name of the cookie,&lt;br /&gt;• The value of the cookie,&lt;br /&gt;• The expiration date of the cookie,&lt;br /&gt;• The path the cookie is valid for,&lt;br /&gt;• The domain the cookie is valid for,&lt;br /&gt;• The need for a secure connection to exist to use the cookie.&lt;br /&gt;&lt;br /&gt;Two of these are mandatory (its name and its value). The other four can be set manually or automatically. Each parameter is separated by a semicolon when set explicitly. Here is a detailed description of each.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Name, Value&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The name of a cookie and its value are set simply by pairing them together:&lt;br /&gt;... foo=bar ...&lt;br /&gt;The value of a cookie can also be null, for the purpose of clearing the cookie value:&lt;br /&gt;... foo= ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Expires&lt;/span&gt;&lt;br /&gt;The expires parameter lets you determine the lifetime of the cookie.&lt;br /&gt;... expires=Mon, 01-Jan-2001 00:00:00 GMT ...&lt;br /&gt;If Expires is not set explicitly, then it defaults to end-of-session. The length of a session can vary depending on browsers and servers, but generally a session is the length of time that the browser is open for (even if the user is no longer at that site).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Path&lt;/span&gt;&lt;br /&gt;The path parameter is potentially the most useful of the 4 optional cookie settings. It sets the URL path the cookie is valid within. Pages outside of that path cannot read or use the cookie.&lt;br /&gt;... path=/promo ...&lt;br /&gt;If Path is not set explicitly, then it defaults to the URL path of the document creating the cookie.&lt;br /&gt;&lt;br /&gt;Netscape has identified a bug for VERY old versions of Navigator where the path must be specified if an expiration is specified. Furthermore, this path must be set to "/". For more information, browse Netscape's Cookie Spec at:&lt;br /&gt;http://www.netscape.com/newsref/std/cookie_spec.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Domain&lt;/span&gt;&lt;br /&gt;The domain parameter takes the flexibility of the path parameter one step further. If a site uses multiple servers within a domain the it is important to make the cookie accessible to pages on any of these servers.&lt;br /&gt;... domain=www.myserver.com ...&lt;br /&gt;Cookies can be assigned to individual machines, or to an entire Internet domain. The only restrictions on this value is that it must contain at least two dots (.myserver.com, not myserver.com) for the normal top-level domains, or three dots for the "extended" domains (.myserver.ny.us, not myserver.ny.us)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IMPORTANT:&lt;/span&gt; The server issuing the cookie must be a member of the domain that it tries to set in the cookie. That is, a server called www.myserver.com cannot set a cookie for the domain www.yourserver.com. The security implications should be obvious.&lt;br /&gt;&lt;br /&gt;If Domain is not set explicitly, then it defaults to the full domain of the document creating the cookie.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Secure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The secure parameter is a flag indicating that a cookie should only be used under a secure server condition, such as SSL. Since most sites do not require secure connections, this defaults to FALSE.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What are all those entries in my cookies.txt file?&lt;/span&gt;&lt;br /&gt;The layout of Netscape's cookies.txt file is such that each line contains one name-value pair. An example cookies.txt file may have an entry that looks like this:&lt;br /&gt;.netscape.com     TRUE   /  FALSE  946684799   NETSCAPE_ID  100103&lt;br /&gt;Each line represents a single piece of stored information. A tab is inserted between each of the fields.&lt;br /&gt;&lt;br /&gt;From left-to-right, here is what each field represents:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;domain &lt;/span&gt;- The domain that created AND that can read the variable.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;flag &lt;/span&gt;- A TRUE/FALSE value indicating if all machines within a given domain can access the variable. This value is set automatically by the browser, depending on the value you set for domain.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;path &lt;/span&gt;- The path within the domain that the variable is valid for.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;secure &lt;/span&gt;- A TRUE/FALSE value indicating if a secure connection with the domain is needed to access the variable.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;expiration &lt;/span&gt;- The UNIX time that the variable will expire on. UNIX time is defined as the number of seconds since Jan 1, 1970 00:00:00 GMT.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;name &lt;/span&gt;- The name of the variable.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;value &lt;/span&gt;- The value of the variable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Creating a Cookie Value&lt;/span&gt;&lt;br /&gt;Creating a cookie generally involves duplicating the HTTP cookie header in some fashion so that the browser will store the name-value pair in memory. Some languages expect an exact HTTP header to be sent, while others will use built-in functions to help you speed the process along.&lt;br /&gt;&lt;br /&gt;Cookies can be set from the browser-side or from the server-side. The determining factor will be the language you use to create the cookie. Once the cookie is created, it should flow easily from server to client and back via the HTTP headers.&lt;br /&gt;&lt;br /&gt;There are limits on the contents of both the cookie string and the cookie file. These limits are partially imposed by HTTP and partially by arbitrary choice. They are as follows:&lt;br /&gt;You CANNOT set Cookies for domains other than those that your response originates from. That is, a page on www.myserver.com can set a Cookie for myserver.com and www.myserver.com, but NOT www.yourserver.com.&lt;br /&gt;The cookie HTTP header must be no more than 4K in size.&lt;br /&gt;Note that this applies to cookies while they are in memory or stored in the cookies.txt file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Retrieving a Cookie Value&lt;/span&gt;&lt;br /&gt;For the most part, retrieving cookies does not require reading the HTTP Cookie: header. Most languages read this header for you and make it accessible through a variable or object.&lt;br /&gt;&lt;br /&gt;Cookies can be read on the browser side or the server side. Again, the determining factor is the language used.&lt;br /&gt;&lt;br /&gt;The main limit on retrieving a cookie is that you can only retrieve cookies that are valid for the document your script resides in. That is, a script on www.myserver.com cannot read cookies from www.yourserver.com. This is also true for subdirectories within your site. A cookie valid for /dirOne cannot be read by a script in /dirTwo. This is mainly governed on the browser side, as browsers know the URL that they are accessing, and only transmit cookies for that server across the connection.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Clearing a Cookie Value&lt;/span&gt;&lt;br /&gt;When programming a Web site, there are many reasons that you may need to erase a cookie you have created. Often it is because the cookie is no longer needed, or the scheme of your cookie has been altered, and requires resetting.&lt;br /&gt;&lt;br /&gt;The two main steps to clearing a cookie you have created are:&lt;br /&gt;Set the cookie's value to null.&lt;br /&gt;Set the cookie's expiration date to some time in the past.&lt;br /&gt;The reason you must do both is that simply setting the expiration to a past time will not change it's value until the browser is closed. That is, all cookie names, values, expirations, etc are resolved once the browser program has been closed. Setting the cookie to null allows you to properly test for the cookie until that resolution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-5206594354132822902?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/5206594354132822902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=5206594354132822902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5206594354132822902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/5206594354132822902'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/08/cookies-i-love-cookies.html' title='Cookies - I love Cookies'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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-27679650.post-4207162088068372166</id><published>2007-08-22T12:35:00.000+05:30</published><updated>2007-09-27T12:47:30.238+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Techniques'/><category scheme='http://www.blogger.com/atom/ns#' term='Methodology'/><title type='text'>Differences between Methodology, Techniques, and Tools</title><content type='html'>The differences between Methodology, Techniques, and Tools can be explained by using a cooking analogy.&lt;br /&gt;&lt;br /&gt;Let's say you want to make Green Curry Chicken. Not being from Thailand, you have no idea how to make Green Curry Chicken, so you go find a recipe for it. Think of the recipe as your methodology. If you follow the methodology, you have a good chance of ending up with Green Curry Chicken. If you don't follow the methodology and you have no prior experience in this, you might just end up with green chicken. In project management terms, this would be a failed project.&lt;br /&gt;&lt;br /&gt;Now, as you follow your recipe/methodology, you will no doubt employ some tools. You will need a tool capable of producing enough heat to cook with such as a stove or fire. You will also need a pot and cooking utensils. Think of these things as tools that you employ. Without tools, you can't get the job done.&lt;br /&gt;&lt;br /&gt;And as you follow your recipe/methodology and use your tools, you will come across techniques. Such as, you can use 2 cans of coconut milk or alternatively you can use 1 can of coconut cream and 1 can of water. Or another technique might be; reduce the hot chili peppers recipe amount by half when preparing Green Curry Chicken for those who can't take food too spicy. Think of techniques as suggestions that can be useful to help ensure success of the project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-4207162088068372166?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/4207162088068372166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=4207162088068372166' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4207162088068372166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/4207162088068372166'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2007/08/differences-between-methodology.html' title='Differences between Methodology, Techniques, and Tools'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-116659823013213360</id><published>2006-12-20T12:33:00.000+05:30</published><updated>2006-12-20T12:33:52.303+05:30</updated><title type='text'>Woh Jiski Deed Mein, Abida Parveen</title><content type='html'>Woh jiski deed mein laakhoun masarratein pinhaan&lt;br /&gt;Woh husn jiski tamanna mein jannat pinhaan&lt;br /&gt;&lt;br /&gt;Hazaar fitney tah-e-paa-e-naaz khaak-e-nasheen&lt;br /&gt;Har eik nigaah khumar-e-shabaab se rangeen&lt;br /&gt;&lt;br /&gt;Shabaab jis se takhaiyul pe bijliyaan barsein&lt;br /&gt;Waqaar jiski rafaqat kou shokhiyaan tarsey&lt;br /&gt;&lt;br /&gt;Ada-e-laghzisheiy paa par qyamatein qurbaan&lt;br /&gt;Bayaz-e-rukh sey sahar ki sabahatein qurbaan&lt;br /&gt;&lt;br /&gt;Siyaah zulfoun mein badaaon sa nikhatoun ka hujoom&lt;br /&gt;Taweel raatoun ki khwabeedah raahatoun ka hujoom&lt;br /&gt;&lt;br /&gt;Vo aankh jiski banaun pe khaliq dey raae&lt;br /&gt;Zabaan shair kou tareef kartey sharmaae&lt;br /&gt;&lt;br /&gt;Gudaaz jism qaba jispe saj ke naaz karey&lt;br /&gt;Daraaz qad jisey sarw-e-sahi namaz karey&lt;br /&gt;&lt;br /&gt;Kisi zamaney mein is rah-guzar sey guzraa thaa&lt;br /&gt;Ba-sad guroor-o-tajammul idhar sey guzraa thaa&lt;br /&gt;&lt;br /&gt;Aur ab ye raah guzar bhi hai dilfareb-o-haseen&lt;br /&gt;Hai uski khaak mein kaife sharab-e-sair makeen&lt;br /&gt;&lt;br /&gt;Hawa mein shokhi-e-raftaar ki addaen hain&lt;br /&gt;Faza mein narmi-e-guftaar ki sadaen hain&lt;br /&gt;&lt;br /&gt;Garaz vo husn is raah ka juzu-e-manzar hai&lt;br /&gt;Neyaaz-e-ishq kou eik sajda gaah maiyassar hai&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-116659823013213360?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/116659823013213360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=116659823013213360' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/116659823013213360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/116659823013213360'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2006/12/woh-jiski-deed-mein-abida-parveen.html' title='Woh Jiski Deed Mein, Abida Parveen'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27679650.post-116652081256289721</id><published>2006-12-19T15:00:00.000+05:30</published><updated>2006-12-19T15:03:32.563+05:30</updated><title type='text'>Tool</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-family:georgia;"&gt;Someone told me once &lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:georgia;"&gt;that there's a right and wrong,&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:georgia;"&gt;and that punishment&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:georgia;"&gt;would come to those&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:georgia;"&gt;who dare to cross the line.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27679650-116652081256289721?l=schwetank.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://schwetank.blogspot.com/feeds/116652081256289721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27679650&amp;postID=116652081256289721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/116652081256289721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27679650/posts/default/116652081256289721'/><link rel='alternate' type='text/html' href='http://schwetank.blogspot.com/2006/12/tool.html' title='Tool'/><author><name>Shwetank Gaur</name><uri>http://www.blogger.com/profile/08260384469818023066</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>
