<?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:rmc="http://www.ibm.com/rmc" rmc:version="7.5.0" xmlns:epf="http://www.eclipse.org/epf"
    epf:version="1.5.0" xmi:id="_y-_PIMPdEdmbOvqy4O0adg"
    name="testing_qualitative_rqmts,_0aJ6cMlgEdmt3adZL5Dmdw" guid="_y-_PIMPdEdmbOvqy4O0adg"
    changeDate="2008-08-13T14:05:51.782-0400" version="7.2.0">
  <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 quality&amp;nbsp;attributes they address.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Types of test for&amp;nbsp;Functionality&#xD;
&lt;/h3>&#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;
    Types of test for&amp;nbsp;Usability&#xD;
&lt;/h3>&#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;
    Types of test for&amp;nbsp;Reliability&#xD;
&lt;/h3>&#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;
    Types of test for Performance&#xD;
&lt;/h3>&#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;
    Types fo test for Supportability&#xD;
&lt;/h3>&#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>
