<?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.6/uma.ecore" xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.1" xmi:id="_dWPe8KrMEdmqUqi7YGiSxw" name="impl_developer_tests,_0iL1EMlgEdmt3adZL5Dmdw" guid="_dWPe8KrMEdmqUqi7YGiSxw" changeDate="2007-01-16T02:24:27.434+0330" 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>
