Task: Run Developer Tests
Run tests against the individual implementation elements to verify that their internal structures work as specified.
Disciplines: Development
Purpose
To verify that the implementation works as specified.
Relationships
RolesPrimary Performer: Additional Performers:
InputsMandatory: Optional:
  • None
Outputs
    Steps
    Run developer tests

    Run the developer tests. The procedure will vary, depending on whether the test is manual or automated and whether additional test components are necessary, such as drivers or stubs.

    To run the tests, you need to make sure that you have initialized the test environment with all necessary elements, such as software, hardware, tools, data, and so on.

    Automated tests will often update a test results which you can evaluate to determine where your tests went wrong.

    Evaluate test execution

    Evaluate the test execution by analyzing the test run. 

    Testing will complete either normally or abnormally.  For correctly implemented tests, a normal completion represents a passed test, though it could warrant additional examination of the test results log to ensure the test ran as expected.  Abnormal termination could be premature termination or just a test that does not complete as intended.

    Review the test log to understand any reported failures, warnings, or unexpected results. The cause of the problem(s) might be that the implementation element being tested is faulty, a problem with the developer tests, or a problem with the environment.

    Prepare for Runtime Analysis

    Runtime analysis should be performed after the implementation has passed the developer tests. For runtime execution of the component to yield accurate results, care should be taken to prepare the component satisfactorily so that no anomalous results occur as a by-product of errors in implementation, compilation or linking.

    You will also need to prepare any framework or supporting tools required to execute the component. In some cases this may mean creating driver or harness code to support execution of the component; in other cases it may mean instrumenting the component so that external support tools can observe and possibly control the components behavior.

    Analyze Runtime Behavior

    Having prepared both the component and the environment it will be observed in, you can now begin to execute the component through the chosen scenario. Dependent on the techniques and tools employed, this step may be performed largely unattended or may offer (or even require) ongoing attention as the scenario progresses.

    Look for failures or anomalies in the expected behavior, even though the developer tests passed successfully. Note any observations you make or impressions you have that you think might relate to the anomalous behavior.  Take your findings and begin to investigate the underlying fault or root cause of each failure.

    Document failures in a reproducable way, including how to set up and use analysis tools to re-create the failures or anomalies. See Executing Test Suites Using the Rational PurifyPlus Tools (Windows and Unix) for more information.

    Respond to test results

    Determine the appropriate corrective action to recover from a "failed" developer test run. If the implementation element under test is faulty, fix the problem if possible and rerun the tests. If the problem is serious and cannot be immediately addressed, report the defect. If the developer test is faulty fix the test and rerun the tests. If there was a problem with the environment, resolve it and then rerun the tests.

    Promote changes for integration test

    When the developer tests pass and no further work is need to complete the change set, promote the changes for integration test. If the passing of these tests represent completion of a requirement update the status of the work item.

    Key Considerations

    It is common to require that code pass all developer tests before it can be delivered in an integrated source code repository.

    Pair with testing experts to gain insight on testing and quality considerations.

    The [Project Work] is implicitly used in implementation tasks to manage which requirements or change requests are being realized in the code.

    More Information