<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:TaskDescription xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
    xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="_dWPe8KrMEdmqUqi7YGiSxw"
    name="impl_developer_tests,_0iL1EMlgEdmt3adZL5Dmdw" guid="_dWPe8KrMEdmqUqi7YGiSxw"
    changeDate="2007-01-15T14:54:27.434-0800" version="1.0.0">
  <mainDescription>&lt;p>&#xD;
    Developer testing is different from other forms of testing in that it is based on the expected behavior of code units&#xD;
    rather than being directly based on the system requirements.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    It is best to do this at a small scale, much smaller than the complete code base to be authored by a developer over the&#xD;
    course of an iteration. This can be done for one operation, one field added to a user interface, one stored procedure,&#xD;
    etc. As the code base is incrementally built, new tests will be authored and existing tests might be revisited to test&#xD;
    additional behavior.&#xD;
&lt;/p></mainDescription>
  <sections xmi:id="_2LYo8KuPEdmhFZtkg1nakg" name="Refine scope and identify the test(s)"
      guid="_2LYo8KuPEdmhFZtkg1nakg">
    <sectionDescription>&lt;p>&#xD;
    Select the increment of work to be tested and identify developer test(s) to verify that the &lt;a class=&quot;elementLink&quot; href=&quot;./../../openup/workproducts/implementation_917CA61E.html&quot; guid=&quot;_0YoQcMlgEdmt3adZL5Dmdw&quot;>Implementation&lt;/a> being developed behaves correctly. One source for the expected&#xD;
    behavior for a software component is the &lt;a class=&quot;elementLink&quot; href=&quot;./../../openup/workproducts/design_D677D182.html&quot; guid=&quot;_0WuL8slgEdmt3adZL5Dmdw&quot;>Design&lt;/a>.&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    In identifying the&amp;nbsp;tests or in any other part of this task, consider collaborating with a &lt;a class=&quot;elementLink&quot; href=&quot;./../../openup/roles/tester_9859B590.html&quot; guid=&quot;_0ZM4MclgEdmt3adZL5Dmdw&quot;>Tester&lt;/a> who&#xD;
    should be well-versed in the issues of testing.&#xD;
&lt;/p></sectionDescription>
  </sections>
  <sections xmi:id="_g8npoC5UEduVhuZHT5jKZQ" name="Write the test setup" guid="_g8npoC5UEduVhuZHT5jKZQ">
    <sectionDescription>To successfully run a test the system must be in a known state so that the correct behavior can be defined. Implement the&#xD;
setup logic that must be performed as part of the &lt;a class=&quot;elementLink&quot; href=&quot;./../../openup/workproducts/developer_test_8470ED13.html&quot; guid=&quot;_0YuXEclgEdmt3adZL5Dmdw&quot;>Developer Test&lt;/a>.</sectionDescription>
  </sections>
  <sections xmi:id="_g1eDUC5VEduVhuZHT5jKZQ" name="Define the expected results" guid="_g1eDUC5VEduVhuZHT5jKZQ">
    <sectionDescription>&lt;p>&#xD;
    Define the expected results of each test so that it can be verified.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    After a test runs, you need to be able to compare the results of running the test against what was expected to happen.&#xD;
    The test is successful when the actual results match the expected results.&#xD;
&lt;/p></sectionDescription>
  </sections>
  <sections xmi:id="_5WtVcKuPEdmhFZtkg1nakg" name="Write the test logic" guid="_5WtVcKuPEdmhFZtkg1nakg">
    <sectionDescription>Write the steps that perform the actual test(s).</sectionDescription>
  </sections>
  <sections xmi:id="_j30aAC5VEduVhuZHT5jKZQ" name="Define the test response" guid="_j30aAC5VEduVhuZHT5jKZQ">
    <sectionDescription>Define the information the test(s) must produce to successfully indicate success or failure. Consider if a response of True&#xD;
or False is sufficient, or if a detailed message should be logged as well.</sectionDescription>
  </sections>
  <sections xmi:id="_ku06gC5VEduVhuZHT5jKZQ" name="Write clean-up code" guid="_ku06gC5VEduVhuZHT5jKZQ">
    <sectionDescription>Identify, and then implement, the steps to be followed in order to restore the environment to the original state for each&#xD;
test. The goal is to ensure that there are no side effects from running the tests.</sectionDescription>
  </sections>
  <sections xmi:id="_6wZFMKuPEdmhFZtkg1nakg" name="Test the test" guid="_6wZFMKuPEdmhFZtkg1nakg">
    <sectionDescription>&lt;p>&#xD;
    Verify that each developer test works correctly. To do this:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Run the test(s), observe their behavior, and fix any defects in the tests.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Ensure that the expected results are defined properly and that they're being checked correctly.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Check the clean-up logic for each test.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Ensure that each developer test works within your test suite framework.&#xD;
    &lt;/li>&#xD;
&lt;/ul></sectionDescription>
  </sections>
  <keyConsiderations>&lt;ol>&#xD;
    &lt;li>&#xD;
        Automate tests via a unit regression testing tool (for example, xUnit) so that tests may be run by developers&#xD;
        whenever they make changes to the code.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Test to the risk of the component. For example, the more critical a component is, the more important it is to test&#xD;
        it thoroughly.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Pair with the &lt;a class=&quot;elementLink&quot; href=&quot;./../../openup/roles/tester_9859B590.html&quot; guid=&quot;_0ZM4MclgEdmt3adZL5Dmdw&quot;>Tester&lt;/a> in all steps of this task to gain insight on testing and quality&#xD;
        considerations.&#xD;
    &lt;/li>&#xD;
&lt;/ol></keyConsiderations>
  <purpose>Prepare to validate a software component (e.g. an operation, a class, a stored procedure) through unit testing. The result&#xD;
is one or more new developer tests.</purpose>
  <alternatives>Rely on acceptance tests to validate your software. This will likely be time consuming, late, and not as effective as&#xD;
developer testing in identifying bugs and finding their location in the code.</alternatives>
</org.eclipse.epf.uma:TaskDescription>
