<?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.5/uma.ecore"
    xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="_y-_PIMPdEdmbOvqy4O0adg"
    name="types_of_test,_0aJ6cMlgEdmt3adZL5Dmdw" guid="_y-_PIMPdEdmbOvqy4O0adg" changeDate="2007-05-30T10:59:45.281-0700">
  <mainDescription>&lt;h3>&#xD;
    Introduction&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    There's much more to testing software-oriented solutions than simply evaluating functions, interfaces, and&#xD;
    response-time characteristics. Additional tests should focus on other requirements attributes, such as:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        integrity (resistance to failure)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        ability to be installed and executed on different platforms&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        ability to handle many requests simultaneously&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    To achieve this, testers develop different types of tests.&amp;nbsp;Each test type has a specific objective and support&#xD;
    technique.&amp;nbsp;Each technique focuses on testing one or more characteristics or attributes of the solution.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;em>Team members apply these types of tests at different scopes.&lt;/em> While &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/roles/tester_9859B590.html&quot; guid=&quot;_0ZM4MclgEdmt3adZL5Dmdw&quot;>Testers&lt;/a> are concerned with the&#xD;
    end-to-end solution,&amp;nbsp;&lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/roles/developer_C633AB7.html&quot; guid=&quot;_0YDosMlgEdmt3adZL5Dmdw&quot;>Developers&lt;/a> are usually focused on a specific unit or component of the &lt;a class=&quot;elementLink&quot; href=&quot;./../../../openup/workproducts/implementation_917CA61E.html&quot; guid=&quot;_0YoQcMlgEdmt3adZL5Dmdw&quot;>Implementation&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Quality Dimension: Functionality&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    &lt;strong>Function test:&lt;/strong> Tests focused on validating the solution functions as intended, providing the required&#xD;
    services, methods, or use cases. This test is implemented and executed against different targets-of-test, including&#xD;
    units, integrated units, applications, and systems.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Security test:&lt;/strong> Tests focused on ensuring the target-of-test data (or systems) are accessible only to&#xD;
    those actors for which they are intended. This test is implemented and executed on various targets-of-test.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Volume test:&lt;/strong> Tests focused on verifying the target-of-test's ability to handle large amounts of data,&#xD;
    either as input, output, or persistent. Volume testing includes test strategies such as creating queries that would&#xD;
    return the entire contents of a database, or that would have so many restrictions that no data is returned, or where&#xD;
    the data entry has the maximum amount of data for each field.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Quality Dimension:&amp;nbsp;Usability&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    &lt;strong>Integrity test:&lt;/strong> Tests that focus on assessing the target-of-test's robustness (resistance to failure),&#xD;
    and technical compliance to language, syntax, and resource usage. This test is implemented and executed against&#xD;
    different targets, typically implementation units and components.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Structure test&lt;/strong>: Tests that focus on assessing the target-of-test's adherence to its design and&#xD;
    formation. For example, with web applications, theses tests might ensure that all links are connected, appropriate&#xD;
    content is displayed, and no content is orphaned.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Quality Dimension: Reliability&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    &lt;strong>Stress test:&lt;/strong> A type of reliability test that focuses on evaluating how the system responds under&#xD;
    abnormal conditions. Stresses on the system could include extreme workloads, insufficient memory, unavailable services&#xD;
    and hardware, or limited shared resources. These tests are often performed to gain a better understanding of how and in&#xD;
    what areas the system will break, so that contingency plans and upgrade maintenance can be planned and budgeted for&#xD;
    well in advance.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Benchmark test:&lt;/strong> A type of performance test that compares the performance of a new or unknown&#xD;
    target-of-test to a known reference-workload.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Contention test:&lt;/strong> Tests focused on validating the target-of-test's ability to acceptably handle&#xD;
    multiple actor demands on the same resource (data records, memory, and so on).&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Quality Dimension: Performance&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    &lt;strong>Load test:&lt;/strong> A type of performance test used to assess the operational limits of a system under varying&#xD;
    workloads while the system-under-test remains constant. In some variants, the workload remains constant and the&#xD;
    configuration of the system-under-test is varied. Measurements are usually taken based on the workload throughout and&#xD;
    transaction response time. The variations in workload usually include emulation of average and peak workloads that&#xD;
    occur within normal operational tolerances.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Performance profiling:&lt;/strong> A test in which the target-of-test's timing profile is monitored, including&#xD;
    execution flow, data access, function and system calls to identify and address both performance bottlenecks and&#xD;
    inefficient processes.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Configuration test:&lt;/strong> Tests focused on ensuring the target-of-test functions as intended on different&#xD;
    hardware and software configurations. This test might also be implemented as a system performance test.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Quality Dimension: Supportability&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    &lt;strong>Installation test:&lt;/strong> Tests focused on ensuring the target-of-test installs as intended on different&#xD;
    hardware and software configurations, and under different conditions (such as insufficient disk space or power&#xD;
    interruptions). This test is implemented and executed against applications and systems.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
