<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.6/uma.ecore" xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.1" xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.1" xmi:id="_8ngBgMPdEdmbOvqy4O0adg" name="maintaining_automated_test_suite,_0kF5kMlgEdmt3adZL5Dmdw" guid="_8ngBgMPdEdmbOvqy4O0adg" changeDate="2006-09-26T11:31:15.000-0700" version="7.2.0">
  <mainDescription>&lt;h3>&#xD;
    Introduction&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    At some point in your test effort, you may find it necessary to manage your test effort by creating test suites for&#xD;
    your test assets.&amp;nbsp;Maintaining test suites can take many different forms. To facilitate your testing, you may want&#xD;
    to introduce some&amp;nbsp;level of&amp;nbsp;automation of your test suites.&amp;nbsp;The fact that you've automated your test&#xD;
    suites does not necessarily make your testing easier however. It may actually increase the maintenance burden of your&#xD;
    suites.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    This guideline introduces you to useful heuristics on how to facilitate the maintenance of your automated test suites.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Plan your test&amp;nbsp;suites&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Automating your testing without planning increases&amp;nbsp;the chances that testing will be ineffective&#xD;
    and&amp;nbsp;inefficient.&amp;nbsp;Some level of planning should take place whether implicit or explicit.&amp;nbsp;An essential&#xD;
    part of any test plan is the definition of a strategy for test automation.&amp;nbsp;Use your plan to articulate to the&#xD;
    development team how you plan to maintain your test assets.&amp;nbsp;In many cases, this is never done.&amp;nbsp;The rest of&#xD;
    the development team may be unaware of how you intend to maintain your tests.&amp;nbsp;It is also a good practice to get&#xD;
    the rest of the development team to understand that this maintenance can be a substantial part of the overall&#xD;
    development effort.&amp;nbsp;Use your test tooling to capture this information and treat this plan just like you would&#xD;
    treat any other test asset in your test repository.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Centrally locate your test assets&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    To facilitate the maintenance of your automated test suites, locate your test assets in a repository that can be&#xD;
    accessed by the development team.&amp;nbsp;Many test automation environments provide test management tools that make it&#xD;
    easier to organize and access your test assets by maintaining the test assets (test cases, test scripts, and test&#xD;
    suites) in a common repository.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    In addition, some form of access control is enforced by the automation test tool.&amp;nbsp;This eases the maintenance&#xD;
    burden by ensuring the integrity of your test suites.&amp;nbsp;You may choose to grant stakeholders and managers read-only&#xD;
    access, whereas developers and testers at the practitioner level may have read/write access.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Treat your test assets like any other software&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Software must be maintained.&amp;nbsp;This also applies to the software in your test suites.&amp;nbsp;Test cases and their&#xD;
    associated test scripts, whether recorded or programmed, should be maintained.&amp;nbsp;And just as software has different&#xD;
    kinds of maintenance (e.g., corrective, preventative, or adaptive) so too do the assets in your automated test suites.&#xD;
    As you lifecycle your test suites, identify, if only informally,&amp;nbsp;how&amp;nbsp;you plan to disposition the test suite&#xD;
    corrective maintenance (e.g., syntactical errors in your scripts),&amp;nbsp;preventative maintenance (e.g., where possible&#xD;
    to write generalized test scripts), and adaptive maintenance (e.g., how you&amp;nbsp;can use your test tooling to re-assign&#xD;
    test&amp;nbsp;assets within one suite to&amp;nbsp;another suite or suites).&amp;nbsp;This can be captured, as described in the&#xD;
    section &lt;strong>Plan Your Test Suites&lt;/strong> above, in your test plan.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Improve the testability of your test suites through collaboration with developers&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    It's one thing to say that your test suites will need to be maintained due to changes in the application, changes in&#xD;
    the testing target, etc.&amp;nbsp;It's quite another thing to actually determine whether a test suite needs to be&#xD;
    revamped&amp;nbsp;and, if it does, what test assets within it need to be addressed.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    One way to facilitate this is to use test suites as a way to communicate test decision to the developers.&amp;nbsp;One way&#xD;
    to perform continuous perfective maintenance of test suites is to think of your test suites as assets that belong to&#xD;
    the development team rather than just the testers.&amp;nbsp; You can perform a kind of perfective maintenance on test in&#xD;
    the following ways:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        use test suites to raise the level of abstraction&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        use test suites to provide focus for the developer&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        use test suites to articulate areas that the developers would like testers to focus on&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        make the construction and maintenance&amp;nbsp;of test suites more efficient&amp;nbsp;by understanding what area(s)&#xD;
        developers want to focus on&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        use test suites to clarify test targets with developers&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h4>&#xD;
    Don't be afraid to clean up your suites&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Your test assets will evolve just as the application under test will.&amp;nbsp;As requirements to the system change, the&#xD;
    application will change as well.&amp;nbsp;To maintain your test suites, you should continually&amp;nbsp;check whether test&#xD;
    assets are valid.&amp;nbsp;If possible, validity checks should be performed after each new release of the software,&#xD;
    preferably more frequently.&amp;nbsp;Keeping your test suites relevant is a full-time job.&amp;nbsp;Assume that changes in the&#xD;
    software will lead to some degree of invalid tests within your test suites.&amp;nbsp;Once these test assets have been&#xD;
    identified as invalid, get rid of them.&amp;nbsp;This will make the maintenance burden much more tolerable.&amp;nbsp;Some&#xD;
    automated test tooling environments make this task easier by providing ways to package outdated or invalid&#xD;
    tests.&amp;nbsp;In some cases, you may not be absolutely sure whether you want to completely get rid of tests within your&#xD;
    test suite or even of getting rid of test suites altogether.&amp;nbsp; To alleviate this burden, you can create packages&#xD;
    for obsolete tests or test suites and dispose of tests or test suites by putting them in packages labeled for this&#xD;
    purpose.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
