<?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.3/uma.ecore" epf:version="1.0.0" xmi:id="-Ff1JwbrGt1laexkOB6ZM1Q" name="new_concept,_aFeZgJquEdukqcRKZBQN9w" guid="-Ff1JwbrGt1laexkOB6ZM1Q" changeDate="2007-01-03T17:00:23.980-0500" version="1.0.0">
  <mainDescription>&lt;p&gt;
    Developer testing is the act of regression testing source code by developers.&amp;nbsp; This is sometimes called &quot;unit
    regression testing&quot; but many developer tests go beyond unit testing to address integration testing instead.
&lt;/p&gt;
&lt;h3&gt;
    Testing Philosophies
&lt;/h3&gt;
&lt;p&gt;
    Here are some important philosophies with regard to developer&amp;nbsp;testing:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;
        The goal is to find defects. Successful tests find bugs, but correcting the bugs&amp;nbsp;falls into other areas.
    &lt;/li&gt;
    &lt;li&gt;
        Test&amp;nbsp;early and often. The cost of change rises exponentially the longer it takes to find and then remove a
        defect. The implication is that you want to test as early as possible (the earliest you could possibly test is
        first, see &lt;a class=&quot;elementLinkWithType&quot;
        href=&quot;./../../../openup_basic/guidances/concepts/test_first_design,_0Y6kUMlgEdmt3adZL5Dmdw.html&quot;
        guid=&quot;_0Y6kUMlgEdmt3adZL5Dmdw&quot;&gt;Concept: Test-first Design&lt;/a&gt;).
    &lt;/li&gt;
    &lt;li&gt;
        Testing builds confidence. Many people fear making a change to their code because they are afraid that they will
        break it, but with a full test suite in place if you do break something you know you will detect it and then fix
        it.
    &lt;/li&gt;
    &lt;li&gt;
        One test is worth a thousand opinions. You can&amp;nbsp;say that your application works, but until you show the test
        results&amp;nbsp;you might&amp;nbsp;not be believed.
    &lt;/li&gt;
    &lt;li&gt;
        Test to the risk. The riskier something is, the more it needs to be reviewed and tested. In other words you should
        invest significant effort testing in the algorithm for estimating radiation doses but nowhere near as much effort
        testing the &quot;change font size&quot; function of the same application.
    &lt;/li&gt;
    &lt;li&gt;
        You can validate all artifacts. You can test all your artifacts, not just your source code, although the focus of
        this guidance is testing code.
    &lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
    Qualities of a Good Developer Test
&lt;/h3&gt;
These are the qualities of&amp;nbsp;a good developer test: 
&lt;ul class=&quot;noindent&quot;&gt;
    &lt;li&gt;
        It runs fast.&amp;nbsp;It has&amp;nbsp;short setup, run time, and clean-up.
    &lt;/li&gt;
    &lt;li&gt;
        It runs in isolation. You should be able to reorder your tests.
    &lt;/li&gt;
    &lt;li&gt;
        It is understandable. Good tests have consistent and informative names and use data that makes them easy to read
        and to understand.
    &lt;/li&gt;
    &lt;li&gt;
        It uses real data. E.g. Use copies of production data when appropriate, but remember that you'll also have to
        create some specific &quot;artificial&quot; test data as well.
    &lt;/li&gt;
    &lt;li&gt;
        It is minimally cohesive. The test represents one step toward your overall goal. The test should address one and
        one only issue.
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
    Approaches for Test Setup
&lt;/h3&gt;
&lt;p&gt;
    To successfully run a test, the system must be in a known state.&amp;nbsp; To do this you will need objects or components
    in memory, rows in your database, etc.&amp;nbsp;that you will test against.&amp;nbsp; The easiest approach is to hardcode the
    required data and the setup code within the test itself.&amp;nbsp; The primary advantage&amp;nbsp;is that all the information
    that you need about the test is in one place and that the test is potentially self-sufficient.
&lt;/p&gt;
&lt;p&gt;
    Another approach is to define an external data set which&amp;nbsp;is loaded into memory or into&amp;nbsp;the database at the
    beginning of&amp;nbsp;the test run.&amp;nbsp; There are several advantages to this approach:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        It decouples the test data from the test.&amp;nbsp;
    &lt;/li&gt;
    &lt;li&gt;
        More than one test&amp;nbsp;can use the same data set.&amp;nbsp;
    &lt;/li&gt;
    &lt;li&gt;
        It is easy to modify and/or multiply the test data.&amp;nbsp;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    There are some disadvantages to this approach:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        Increased complexity for maintaining the external data
    &lt;/li&gt;
    &lt;li&gt;
        Potential coupling between test cases.&amp;nbsp; When&amp;nbsp;they share a common test data bed it becomes very easy to
        write tests&amp;nbsp;that depend on other tests running first, thereby coupling them together.&lt;br /&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
    Coding for Testability
&lt;/h3&gt;
&lt;p&gt;
    Add&amp;nbsp;&lt;a class=&quot;elementLink&quot;
    href=&quot;./../../../openup_basic/guidances/termdefinitions/code_instrumentation,_JiqnEJt1EdutoZjlV3a4Lg.html&quot;
    guid=&quot;_JiqnEJt1EdutoZjlV3a4Lg&quot;&gt;Code Instrumentation&lt;/a&gt; for testing and debugging.&amp;nbsp; Pay special attention to the
    implementation of the observation/control points, such as critical functions or&amp;nbsp;objects,&amp;nbsp;as these aspects
    might need special support that has to be implemented in the component under test.
&lt;/p&gt;
&lt;h3&gt;
    Reviewing Tests
&lt;/h3&gt;
&lt;p&gt;
    If a test will be long-lived, ask a person with less inside knowledge of the component to run it and check if there is
    enough support information. Review it with other people within the development team and other interested parties as
    needed.
&lt;/p&gt;</mainDescription>
</org.eclipse.epf.uma:ContentDescription>
