<?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.4/uma.ecore"
    xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.2.0" xmlns:epf="http://www.eclipse.org/epf"
    epf:version="1.2.0" xmi:id="_y-_PIMPdEdmbOvqy4O0adg"
    name="types_of_test,_0aJ6cMlgEdmt3adZL5Dmdw" guid="_y-_PIMPdEdmbOvqy4O0adg" changeDate="2006-09-20T15:37:14.071-0700">
  <mainDescription>&lt;h3>&#xD;
    Introduction&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    There is much more to testing computer software than simply evaluating the functions, interface, and response-time&#xD;
    characteristics of a target-of-test.&amp;nbsp;Additional tests must focus on characteristics and attributes, such as the&#xD;
    target-of-test.&#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, many different types of tests are implemented and executed.&amp;nbsp;Each test type has a specific&#xD;
    objective and support technique.&amp;nbsp;Each technique focuses on testing one or more characteristics or attributes of&#xD;
    the target-of-test.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The following sections list the types of test based on the most obvious &lt;strong>quality dimensions&lt;/strong> they&#xD;
    address.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Quality Dimension: Functionality&#xD;
&lt;/h3>&#xD;
&lt;h4>&#xD;
    Types of Test&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    &lt;strong>Function test:&lt;/strong>&amp;nbsp;Tests focused on validating the target-of-test functions as intended, providing&#xD;
    the required services, methods, or use cases. This test is implemented and executed against different targets-of-test,&#xD;
    including units, integrated units, applications, and systems.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Security test:&lt;/strong>&amp;nbsp;Tests focused on ensuring the target-of-test data (or systems) are accessible only&#xD;
    to 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>&amp;nbsp;Tests focused on verifying the target-of-test's ability to handle large amounts of&#xD;
    data, either as input and output or resident within the database.&amp;nbsp;Volume testing includes test strategies such as&#xD;
    creating queries that would return the entire contents of the database, or that would have so many restrictions that no&#xD;
    data is returned, or where 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;h4>&#xD;
    Types of Test&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    &lt;strong>Usability test:&lt;/strong>&amp;nbsp;Tests that focus on:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        human factors&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        esthetics&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        consistency in the user interface&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        online and context-sensitive help&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        wizards and agents&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        user documentation&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        training materials&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &lt;strong>Integrity test:&lt;/strong>&amp;nbsp;Tests that focus on assessing the target-of-test's robustness (resistance to&#xD;
    failure), and technical compliance to language, syntax, and resource usage.&amp;nbsp;This test is implemented and executed&#xD;
    against different targets-of-tests, including units and integrated units.&#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.&amp;nbsp;Typically, this test is done for Web-enabled applications ensuring that all links are connected,&#xD;
    appropriate content is displayed, and no content is orphaned.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Quality Dimension: Reliability&#xD;
&lt;/h3>&#xD;
&lt;h4>&#xD;
    Types of Test&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    &lt;strong>Stress test:&lt;/strong>&amp;nbsp; A type of reliability test that focuses on evaluating how the system responds under&#xD;
    abnormal conditions.&amp;nbsp;Stresses on the system could include extreme workloads, insufficient memory, unavailable&#xD;
    services and hardware, or limited shared resources.&amp;nbsp;These tests are often performed to gain a better understanding&#xD;
    of how and in what areas the system will break, so that contingency plans and upgrade maintenance can be planned and&#xD;
    budgeted for well in advance.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Benchmark test:&lt;/strong>&amp;nbsp; A type of performance test that compares the performance of a new or unknown&#xD;
    target-of-test to a known reference-workload and system.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Contention test:&lt;/strong>&amp;nbsp; 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;h4>&#xD;
    Types of Test&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    &lt;strong>Load test:&lt;/strong>&amp;nbsp; A type of performance test used to validate and assess acceptability of the&#xD;
    operational limits of a system under varying workloads while the system-under-test remains constant.&amp;nbsp;In some&#xD;
    variants, the workload remains constant and the configuration of the system-under-test is varied.&amp;nbsp; Measurements&#xD;
    are usually taken based on the workload throughout and in-line transaction response time.&amp;nbsp;The variations in&#xD;
    workload usually include emulation of average and peak workloads that occur within normal operational tolerances.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Performance profile:&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>&amp;nbsp; Tests focused on ensuring the target-of-test functions as intended on&#xD;
    different hardware and software configurations.&amp;nbsp;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;h4>&#xD;
    Types of Test&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    &lt;strong>Installation test:&lt;/strong>&amp;nbsp; Tests focused on ensuring the target-of-test installs as intended on&#xD;
    different hardware and software configurations, and under different conditions (such as insufficient disk space or&#xD;
    power interruptions).&amp;nbsp;This test is implemented and executed against applications and systems.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
