<?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="-XV4rH8guz_Py0zgFgqXCsw" name="testing_a_method_asset,_ytd9kKDhEd-nMJcdx60YsA" guid="-XV4rH8guz_Py0zgFgqXCsw" changeDate="2010-11-23T15:42:11.325-0800" version="7.5.0">
  <mainDescription>&lt;h3>&#xD;
    1.0 Introduction&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Testing&amp;nbsp;method assets is important because errors tend to build up over time.&amp;nbsp; Some reasons for errors are:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        parallel work on method assets that have dependencies&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        forgetting to make updates to all dependent plug-ins&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        inexperienced method authors&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Before releasing a method asset, there are a number of types of tests that should be executed.&amp;nbsp; These are&#xD;
    described in the following sections.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    2.0 Tools&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The following tools can be helpful for testing.&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        IBM(R) Rational(R) Method Composer - adds features useful for testing that aren't available in EPF Composer, such&#xD;
        as BIRT reporting and spell checking.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Funduc Search and replace - excellent tool for global search and replace&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Parasoft(R) WebKing(R) - checks for accessibility, spelling&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Adobe(R) Dreamweaver(R) - fully-featured HTML editor&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Scooter Software Beyond Compare - tool for comparing files and directories&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        IBM Automated Content Testing - scripts that check for a variety of issues and inconsistencies.&amp;nbsp; This is part&#xD;
        of the Rational Method Authoring Quality Assessor packaged service asset.&lt;br />&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
    3.0 Orphans/Invalid Files/Dependencies&#xD;
&lt;/h3>&#xD;
&lt;h4>&#xD;
    Invalid files&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Search and delete files left by&amp;nbsp;Windows or&amp;nbsp;the version control system.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    *.keep - IBM(R) Rational(R) ClearCase(R)&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    thumbs - Microsoft(R) Windows(R)&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Also, many file types are difficult to translate, and so we try to standardize on jpg for graphics and keep all text in&#xD;
    xmi or xml formats.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    IBM Automated Content Testing provides a script &quot;Test for File Types&quot; which lists non-standard file types.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    All elements are categorized&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Browse the &quot;all practices&quot; configuration for disciplines and domains&amp;nbsp;and confirm that the &quot;uncategorized&quot; category&#xD;
    is empty.&lt;br />&#xD;
    Work product slots are an exception.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Orphan files&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Make a copy of the library and delete all packages, custom categories, processes. Do not delete the plug-ins, as that&#xD;
    will delete all files including orphans.&amp;nbsp; Any remaining xmi files must be orphans, and should be removed from&#xD;
    ClearCase. Caution – get the team to confirm before doing the delete – the problem may be that the file should be added&#xD;
    back in rather than be removed.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Orphan resource files&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Try RMC's &quot;Edit&amp;gt;Clean Resources&quot; in a copy of the library, then use beyond compare to determine what changes were&#xD;
    made.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    All tasks and work products have a responsible role&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Browse the published web site looking at each role and work product.&amp;nbsp; Can create BIRT reports to detect this.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    IBM Automated Content Testing includes a report &quot;Check for Primary Performer&quot; that reports on tasks that have no&#xD;
    primary role and work products that have no responsible role.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    All tasks have an input and output work product&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Strictly speaking, a task might not have any input work products, but generally if a task is missing inputs and/or&#xD;
    outputs, it is usually an oversight.&amp;nbsp; Browse the published web site looking at each task.&amp;nbsp; Can create BIRT&#xD;
    reports to detect this.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    IBM Automated Content Testing includes a report &quot;Check for Input and Output Artifact&quot; that reports on tasks that are&#xD;
    missing inputs and outputs.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Unreferenced core elements&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Every element in &quot;core&quot; should be referenced by at least once practice in the library.&lt;br />&#xD;
    A BIRT report can be used for this.&amp;nbsp; Unused elements should be moved out of the release.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    External broken links&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Choose the publishing option to check external hyperlinks.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Dependency Testing&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Publish each practice on its own (can use the RMC Process Builder).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Confirm that there are no broken link errors (there may be errors if, for example, there is a link to a guideline, but&#xD;
    that guideline is not explicitly attached to any elements in the plug-in).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Create a configuration that has no practices, just Core.&amp;nbsp; Confirm that there are no errors (that no core plug-ins&#xD;
    depend on practice plug-ins).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Confirm that there are no unnecessary dependencies.&amp;nbsp; Publish a configuration with all practices, but no assign&#xD;
    plug-ins or definition plug-ins for those assignments.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    4.0 Method composer error reports and logs&#xD;
&lt;/h3>&#xD;
&lt;h4>&#xD;
    Publication errors&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Fix or explain every error in the publication log for each of the available configurations.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Configuration errors&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Fix or explain every error and warning in the error log tab for each of the available configurations.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Library problem view&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Fix or explain every error in the library problem view.&lt;br />&#xD;
    - open every configuration to make sure errors are loaded&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Library validation&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Enable Preferences/Method/Authoring/Debug/Enable method library validation.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Run &quot;Validate Method Library&quot;.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    View the logs and correct any errors.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    5.0 Regression testing&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    When upgrading to a new version of Method Composer, check that contributes, extends, replace work as expected.&amp;nbsp;&#xD;
    Find an example in the library, confirm it works as expected.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Use Beyond Compare to list the differences in the published sites. Confirm that the changes were expected.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    6.0 Standards&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The tests below describe how to test and correct the most common violations of authoring standards.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    File naming conventions&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Use windows search and scan for mixed-case file names, spaces in filenames, or long filenames.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Bad HTML&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Microsoft fonts: Search for MsoNormal, Font-family, and Microsoft to detect Microsoft word originated HTML. Use word&#xD;
    cleanup macro in Method Composer, Dreamweaver and manual means to clean it up.&lt;br />&#xD;
    &lt;br />&#xD;
    Extra fonts on links (inserted by old version of Method Composer)&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Search for font color=&quot;#0000ff and check if is part of a link. If lots, use search/replace script to do a global&#xD;
    replace.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Bad character testing&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Certain non-ASCII characters cause problems with some browsers and translation tools.&amp;nbsp; The most common problem&#xD;
    characters are curly quotes and bullets inserted when pasting from Microsoft(R) Word(R).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Use search and replace – search for [~-ÿ]. For any unexpected characters, replace with correct characters.&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        curly single and double quotes - replace with straight quotes typed from the keyboard (&quot; and ')&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        bullets and dash/emdash&amp;nbsp;- replace with hyphen&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        guillemets - replace with double angle brackets &amp;lt;&amp;lt; &amp;gt;&amp;gt;&amp;gt;&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Remember that the XMI files contain escaped HTML, so be careful with characters that are defined with an ampersand,&#xD;
    such as trademarks&amp;nbsp;- in XMI you may need an additional ampersand.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Brief descriptions&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Run a BIRT report to extract brief descriptions.&amp;nbsp; Everything except checklists should have brief descriptions.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Project and directory names&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    When using workspaces, it is easy for plug-in name, plug-in folder name, and plug-in project names to become&#xD;
    inconsistent.&amp;nbsp; Use search-replace to find all plug-in names and project names.&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        search for methodplugin*name in all plugin.xmi files&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        search for &amp;lt;NAME&amp;gt; tags&amp;nbsp;in all .project files&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Copy results into a text file (including filenames), remove non-name text, sort in Excel, and look for differences&#xD;
    between directories, project names, and plug-in names.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Version and copyright information&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Every practice and the library as a whole should have a &quot;release info&quot; page that describes the latest release.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Confirm that these pages are included in the published configurations' views&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        In EPF Composer&amp;nbsp;- you need to check the views by hand&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In Rational Method Composer&amp;nbsp;&amp;nbsp;- you need to check that every &quot;release_info&quot; page is tagged&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Confirm that every plug-in has the appropriate copyright (open source has EPF copyright, company owned content has&#xD;
    company copyright), and confirm it publishes correctly.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Confirm that licensing/legal information is attached and publishes.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Accessibility&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Use Parasoft WebKing to check compliance with accessibility standards.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Spelling/Grammar/Readiness for translation&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Spell check is provided by Rational Method Composer on a per element and per plug-in basis.&amp;nbsp; You can also check an&#xD;
    entire library using WebKing.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    IBM Automated Content Testing also has a script &quot;Style Search&quot; that checks for common style problems, such as words&#xD;
    that are difficult to translate.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Content that is intended to be translated has to go through additional checks in order to ensure that it will work with&#xD;
    translation memory tools.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    For example, IBM uses IBM internal tools - SEGCHK to check for grammar errors, and CHKPII for bad characters, prior to&#xD;
    translation.&amp;nbsp;Commercial translation tools will have their own validation tools.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Browser Compatibility&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Open up a published configuration in the supported browsers and compare each kind of page. A work product, a guideline,&#xD;
    a checklist, a task and an activity with an activity diagram and work breakdown structure. Confirm that they look&#xD;
    reasonably similar - that no odd fonts are appearing, that text is readable, links are working, and so on.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Then expand your screen to as large as possible (to allow maximum viewing of each page) and use the keypad to open each&#xD;
    page in the treebrowser and confirm that nothing strange appears (missing graphics, corrupted HTML, and so on).&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Publication options&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Review the publication options, and confirm that they are correct.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Make sure the feedback for each configuration is directed to the right location, and works after publishing.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Synchronization&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Confirm that processes that require synchronization have been synchronized after any and all method content was&#xD;
    finalized.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Index, glossary, search&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Confirm that the index, glossary, and search all work.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Supporting plug-ins&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Confirm that the &quot;is_supporting&quot; flag has been used correctly on core plug-ins.&amp;nbsp;Publish a configuration that only&#xD;
    has a few practices, and look for additional elements that don't belong, such as&amp;nbsp;unused roles, unused tasks, and&#xD;
    unused work products.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Locking&#xD;
&lt;/h4>Confirm that the released library has all plug-ins locked so that users that extend the library do no inadvertently&#xD;
modify them.&lt;br />&#xD;
&lt;br />&#xD;
&lt;h3>&#xD;
    7.0 Rational Method Composer-only Tests&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The following tests do not apply to EPF Composer.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Process Builders&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Confirm that process builders work correctly.&lt;br />&#xD;
    - all practices are presented in the builders&lt;br />&#xD;
    - every practice has a brief description that is readable in the builder, and matches the brief description for the&#xD;
    practice.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Confirm that the &quot;all practices&quot; configuration matches what is displayed by the IBM practices builder.&amp;nbsp; (The&#xD;
    builder may do further decomposition to identify alternative practices).&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Orphaned tags&#xD;
&lt;/h4>Unused tags should be found and removed.</mainDescription>
</org.eclipse.epf.uma:ContentDescription>
