canmove, Confirmed users
2,041
edits
Line 16: | Line 16: | ||
But not all automation is the same just because it targets the UI, just as not all testing is the same just because it targets the SUT. | But not all automation is the same just because it targets the UI, just as not all testing is the same just because it targets the SUT. | ||
In particular, integration automation run before landing a commit is | In particular, integration automation run before landing a commit is subject to a series of restrictions meant to ensure that the test results are returned quickly and in an unambiguous fashion. Those restrictions reduce the usefulness of the automation for use in acceptance testing, which must often accept a higher level of fragility and longer runtime to be more comprehensive. | ||
When viewed through the lens of the other purpose, each type of automation is inferior: | When viewed through the lens of the other purpose, each type of automation is inferior: | ||
Commit integration automation is incomplete and shallow, trading expedience for coverage, and is generally written from a developer's perspective to ensure the behavior of what they did write--which might not actually meet the requirements of what they should have written. | Commit integration automation is incomplete and shallow, trading expedience for coverage, and is generally written from a developer's perspective to ensure the behavior of what they did write--which might not actually meet the requirements of what they should have written. As the tests tend to be written against a particular section or application of the SUT, broad interactions may go uncovered. Large portions of the SUT may go untested because they rely on unreliable external conditions. As such, these tests frequently fall short of the needs of acceptance. | ||
Conversely, acceptance automation is too slow, device-bound, and sometimes has spurious failures due to non-determinism inherent in the SUT and its externals. As the user scenarios it tests often bridge multiple parts of the system, it's | Conversely, acceptance automation is too slow, device-bound, and sometimes has spurious failures due to non-determinism inherent in the SUT and its externals. As the user scenarios it tests often bridge multiple parts of the system, it's more fragile with poor isolation. The need to rely on user-like behavior and check after every step slows the tests down. The wider scope means it often can't be written adequately until entire subsystems are in place. So these tests are often wholly unsuitable for the incremental growth, quick land-or-not decisions, and debugging assistance that a good continuous integration suite provides. | ||
However, these are weaknesses in perception. When used for their own specific purposes, each type of automation provides great value. Further, the compromises each makes are compensated for by the other. | However, these are weaknesses in perception. When used for their own specific purposes, each type of automation provides great value. Further, the compromises each makes are compensated for by the other. |