blob: a4216b0821d922043ff1b3c4f0163535f67d140b [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<!-- VERSION rmc:7.1.0 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<!-- START NON-TRANSLATABLE -->
<title>\openup_basic\tasks\impl_developer_tests.xmi</title>
</head>
<!-- WARNING: do not modify the generated comments in this file below this line. They are used as markers for the import process. -->
<body>
Element Name: impl_developer_tests.xmi<br/><br/>
<!-- END NON-TRANSLATABLE -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: presentationName<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:presentationName,_0iL1EMlgEdmt3adZL5Dmdw CRC: 3713996132 -->Implement Developer Tests<!-- END:presentationName,_0iL1EMlgEdmt3adZL5Dmdw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: briefDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:briefDescription,_0iL1EMlgEdmt3adZL5Dmdw CRC: 2809950841 -->Implement one or more tests that enable the validation of the individual software components through execution.<!-- END:briefDescription,_0iL1EMlgEdmt3adZL5Dmdw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: mainDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:mainDescription,_dWPe8KrMEdmqUqi7YGiSxw CRC: 120746317 --><p>
Developer testing is different from other forms of testing in that it is based on the expected behavior of code units
rather than being directly based on the system requirements.
</p>
<p>
It is best to do this at a small scale, much smaller than the complete code base to be authored by a developer over the
course of an iteration. This can be done for one operation, one field added to a user interface, one stored procedure,
etc. As the code base is incrementally built, new tests will be authored and existing tests might be revisited to test
additional behavior.
</p><!-- END:mainDescription,_dWPe8KrMEdmqUqi7YGiSxw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: keyConsiderations<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:keyConsiderations,_dWPe8KrMEdmqUqi7YGiSxw CRC: 2953983583 --><ol>
<li>
Automate tests via a unit regression testing tool (for example, xUnit) so that tests may be run by developers
whenever they make changes to the code.
</li>
<li>
Test to the risk of the component. For example, the more critical a component is, the more important it is to test
it thoroughly.
</li>
<li>
Pair with the <a class="elementLink" href="./../../openup_basic/roles/tester,_0ZM4MclgEdmt3adZL5Dmdw.html"
guid="_0ZM4MclgEdmt3adZL5Dmdw">Tester</a> in all steps of this task to gain insight on testing and quality
considerations.
</li>
</ol><!-- END:keyConsiderations,_dWPe8KrMEdmqUqi7YGiSxw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: purpose<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:purpose,_dWPe8KrMEdmqUqi7YGiSxw CRC: 2691434226 -->Prepare to validate a software component (e.g. an operation, a class, a stored procedure) through unit testing. The result
is one or more new developer tests.<!-- END:purpose,_dWPe8KrMEdmqUqi7YGiSxw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: alternatives<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:alternatives,_dWPe8KrMEdmqUqi7YGiSxw CRC: 7092648 -->Rely on acceptance tests to validate your software. This will likely be time consuming, late, and not as effective as
developer testing in identifying bugs and finding their location in the code.<!-- END:alternatives,_dWPe8KrMEdmqUqi7YGiSxw -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_2LYo8KuPEdmhFZtkg1nakg CRC: 2273716744 -->Refine scope and identify the test(s)<!-- END:name,_2LYo8KuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_2LYo8KuPEdmhFZtkg1nakg CRC: 2741027733 --><p>
Select the increment of work to be tested and identify developer test(s) to verify that the <a class="elementLink"
href="./../../openup_basic/workproducts/implementation,_0YoQcMlgEdmt3adZL5Dmdw.html"
guid="_0YoQcMlgEdmt3adZL5Dmdw">Implementation</a> being developed behaves correctly. One source for the expected
behavior for a software component is the <a class="elementLink"
href="./../../openup_basic/workproducts/design,_0WuL8slgEdmt3adZL5Dmdw.html"
guid="_0WuL8slgEdmt3adZL5Dmdw">Design</a>.&nbsp;
</p>
<p>
In identifying the&nbsp;tests or in any other part of this task, consider collaborating with a <a class="elementLink"
href="./../../openup_basic/roles/tester,_0ZM4MclgEdmt3adZL5Dmdw.html" guid="_0ZM4MclgEdmt3adZL5Dmdw">Tester</a> who
should be well-versed in the issues of testing.
</p><!-- END:sectionDescription,_2LYo8KuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_g8npoC5UEduVhuZHT5jKZQ CRC: 1377779743 -->Write the test setup<!-- END:name,_g8npoC5UEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_g8npoC5UEduVhuZHT5jKZQ CRC: 774218038 -->To successfully run a test the system must be in a known state so that the correct behavior can be defined. Implement the
setup logic that must be performed as part of the <a class="elementLink"
href="./../../openup_basic/workproducts/developer_test,_0YuXEclgEdmt3adZL5Dmdw.html"
guid="_0YuXEclgEdmt3adZL5Dmdw">Developer Test</a>.<!-- END:sectionDescription,_g8npoC5UEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_g1eDUC5VEduVhuZHT5jKZQ CRC: 2701737739 -->Define the expected results<!-- END:name,_g1eDUC5VEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_g1eDUC5VEduVhuZHT5jKZQ CRC: 1052907200 --><p>
Define the expected results of each test so that it can be verified.
</p>
<p>
After a test runs, you need to be able to compare the results of running the test against what was expected to happen.
The test is successful when the actual results match the expected results.
</p><!-- END:sectionDescription,_g1eDUC5VEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_5WtVcKuPEdmhFZtkg1nakg CRC: 2746982786 -->Write the test logic<!-- END:name,_5WtVcKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_5WtVcKuPEdmhFZtkg1nakg CRC: 617361698 -->Write the steps that perform the actual test(s).<!-- END:sectionDescription,_5WtVcKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_j30aAC5VEduVhuZHT5jKZQ CRC: 3452165955 -->Define the test response<!-- END:name,_j30aAC5VEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_j30aAC5VEduVhuZHT5jKZQ CRC: 1078148829 -->Define the information the test(s) must produce to successfully indicate success or failure. Consider if a response of True
or False is sufficient, or if a detailed message should be logged as well.<!-- END:sectionDescription,_j30aAC5VEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_ku06gC5VEduVhuZHT5jKZQ CRC: 4075690081 -->Write clean-up code<!-- END:name,_ku06gC5VEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_ku06gC5VEduVhuZHT5jKZQ CRC: 4275660162 -->Identify, and then implement, the steps to be followed in order to restore the environment to the original state for each
test. The goal is to ensure that there are no side effects from running the tests.<!-- END:sectionDescription,_ku06gC5VEduVhuZHT5jKZQ -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: name<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:name,_6wZFMKuPEdmhFZtkg1nakg CRC: 2628067035 -->Test the test<!-- END:name,_6wZFMKuPEdmhFZtkg1nakg -->
<br/><br/><br/>
<!-- START NON-TRANSLATABLE -->
Attribute: sectionDescription<br/><br/>
<!-- END NON-TRANSLATABLE -->
<!-- START:sectionDescription,_6wZFMKuPEdmhFZtkg1nakg CRC: 3768184763 --><p>
Verify that each developer test works correctly. To do this:
</p>
<ul>
<li>
Run the test(s), observe their behavior, and fix any defects in the tests.
</li>
<li>
Ensure that the expected results are defined properly and that they're being checked correctly.
</li>
<li>
Check the clean-up logic for each test.
</li>
<li>
Ensure that each developer test works within your test suite framework.
</li>
</ul><!-- END:sectionDescription,_6wZFMKuPEdmhFZtkg1nakg -->
</body>
</html>