Project Testing - Types of Tests


Published on

1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Project Testing - Types of Tests

  1. 1. Project Testing A guide to types of tests for engineering projects Thomas G. Cleaver University of Louisville Department of Electrical and Computer Engineering February 25, 2005
  2. 2. References <ul><li>This presentation was developed using the following sources: </li></ul><ul><li>Suresh, “General Testing Types,” [online article] (2002, April 5) Available at HTTP: =20000349 </li></ul><ul><li>“ Software Development and QA,” [online article] (2003) Available at HTTP: </li></ul><ul><li>“ Automated Test Concepts,” [online article] (2003) Available at HTTP: </li></ul><ul><li>“ Testing, Verification, Debugging CS577B Workshop,” [Adobe Acrobat pdf file] (2002, Spring) Available at HTTP: </li></ul><ul><li>C. Kaner, “Architectures of Test Automation,” [online article] (2000, August) Available at HTTP: </li></ul>
  3. 3. Types of Tests <ul><li>Unit Test/Component Test </li></ul><ul><li>Integration Test </li></ul><ul><li>Interface Test </li></ul><ul><li>Paths Test </li></ul><ul><li>Functional Test </li></ul><ul><li>System Test </li></ul><ul><li>Performance Test </li></ul><ul><li>Alpha Test </li></ul><ul><li>Beta Test </li></ul><ul><li>Acceptance Test </li></ul><ul><li>Regression Test </li></ul><ul><li>Smoke Test </li></ul><ul><li>Stress Test </li></ul><ul><li>Validation Test </li></ul><ul><li>White Box Test </li></ul><ul><li>Black Box Test </li></ul><ul><li>Field Test </li></ul>
  4. 4. Unit Test/Component Test <ul><li>Software: </li></ul><ul><ul><li>A Unit Test or Component Test is a test of the smallest functional segment of code. This is usually done by the developer at the time of coding. Tests usually consist of applying sample inputs and verifying that the outputs are as expected. </li></ul></ul><ul><li>Hardware: </li></ul><ul><ul><li>A Unit Test or Component Test is a test of a small hardware module. This is usually done by the engineer who designed the module. It frequently consists of applying a range of inputs, and then measuring the corresponding outputs for accuracy. </li></ul></ul>
  5. 5. Integration Test <ul><li>Software: </li></ul><ul><ul><li>Integration tests are designed to test integrated software components to determine if they actually run as one program. </li></ul></ul><ul><ul><li>Integration tests follow unit tests. </li></ul></ul><ul><ul><li>Integration tests expose flaws that arise from interaction of (presumably perfect) software components. </li></ul></ul><ul><li>Hardware: </li></ul><ul><ul><li>Integration tests are designed to test the functionality of a system of individually tested hardware modules when they are connected together. </li></ul></ul><ul><ul><li>Integration tests follow unit tests. </li></ul></ul><ul><ul><li>Use the integration test to determine if subsystems are interacting correctly. </li></ul></ul>
  6. 6. Integration and Interface Tests <ul><li>Integration tests see whether components that work separately work together. </li></ul><ul><li>Interface tests focus on the points of contact between two components. </li></ul>
  7. 7. Paths Test (software) <ul><li>A Paths Test is a test of various paths through the system, usually based on the paths that a user is expected to take. </li></ul><ul><li>It is usually not practical to test all paths. </li></ul><ul><li>Test all of the most frequent and most important paths. </li></ul>
  8. 8. Functional Test <ul><li>Functional tests ensure that the application (hardware and/or software) works the way the stakeholders intend it to work. </li></ul><ul><li>Unit tests, integration tests, etc. are often functional tests. </li></ul>
  9. 9. Functional Test Features <ul><li>Valid Input - identified classes of valid input must be accepted. </li></ul><ul><li>Invalid Input - identified classes of invalid input must be rejected. </li></ul><ul><li>Functions - identified functions must be exercised. </li></ul><ul><li>Output - identified classes of application outputs must be exercised. </li></ul><ul><li>Systems/Procedures - interfacing systems or procedures must be invoked. </li></ul>
  10. 10. System Test <ul><li>System testing ensures that the entire integrated system (software and/or hardware) meets requirements. It tests a configuration to ensure known and predictable results. </li></ul><ul><li>Integration tests and acceptance tests are examples of system tests. </li></ul><ul><li>Between unit tests and system tests, there may also be module tests and subsystem tests. </li></ul>
  11. 11. Performance Test (software) <ul><li>Performance tests determine the runtime performance of the application. </li></ul><ul><li>Performance testing is used to measure: </li></ul><ul><ul><li>processing speed </li></ul></ul><ul><ul><li>response time </li></ul></ul><ul><ul><li>resource consumption </li></ul></ul><ul><ul><li>throughput </li></ul></ul><ul><li>Performance testing is sometimes coupled with stress testing. </li></ul>
  12. 12. Alpha Test <ul><li>Alpha and beta testing are terms used almost exclusively with software projects. </li></ul><ul><li>In an Alpha Test, the software or hardware is exposed to a number of “friendly” users, who were not involved in development or previous testing. </li></ul>
  13. 13. Beta Test <ul><li>In a Beta Test, the hardware or software is assumed to have nearly-commercial quality so it is exposed to “non-friendly” users. The information gathered is fed into a final build of the system which becomes the commercial version. </li></ul><ul><li>Beta testing is performed to uncover errors that only the end user seems able to find. The beta test is a &quot;live&quot; application of the system. The customer records all the problems that are encountered during beta testing and reports these to the developer. The developer makes modifications, and then prepares the release of the product to the entire customer base. </li></ul>
  14. 14. Acceptance Test <ul><li>Acceptance testing is performed before the application is implemented into the production environment. </li></ul><ul><li>Acceptance testing is conducted to determine whether a system satisfies its acceptance criteria by validating requirements have been met. </li></ul><ul><li>Based on the results of the Acceptance Test, the customer determines whether to accept or decline the system. </li></ul><ul><li>Acceptance testing is frequently done by the customer. </li></ul>
  15. 15. Regression Test (software) <ul><li>In a software system, when one component is changed, it may cause unforeseen changes in other, seemingly unrelated, components. </li></ul><ul><li>A Regression Test is basically a retest of the entire system after a modification is made. </li></ul><ul><li>Regression tests assure that no adverse changes are introduced as a result of maintenance or upgrade of the software. </li></ul><ul><li>Procedurally, regression testing applies a rigorously defined set of inputs and outputs, to ensure the new version has introduced no inconsistencies with old versions. </li></ul>
  16. 16. Smoke Test <ul><li>Software: This is a standard, relatively brief test suite. Every time there’s a new build, these tests are run to check whether there is anything fundamentally wrong with the software. If so, the build is rejected. Only builds that pass the smoke test get more thorough testing. </li></ul><ul><li>Hardware: </li></ul><ul><ul><li>1. A stress test, or </li></ul></ul><ul><ul><li>2. An error made by a student that causes the project to emit smoke. </li></ul></ul>
  17. 17. Stress Test <ul><li>A Stress Test deliberately applies overload conditions to a system to test limit conditions, scalability and fault tolerance. </li></ul><ul><li>The system’s performance limits are stretched (and broken, usually). </li></ul><ul><li>Stress tests are used to gather performance statistics, and to determine whether the system handles failure gracefully. </li></ul>
  18. 18. Validation Test <ul><li>A Validation Test determines how well a component corresponds to its specification in the design. </li></ul>
  19. 19. White Box Test (software) <ul><li>A White Box Test (aka Glass Box Test) is an examination of the code, looking for errors or ways to break the code. </li></ul><ul><li>It is usually done as part of a unit test. </li></ul><ul><li>It is usually done by the programmer or someone else familiar with the code. </li></ul><ul><li>The tester must consider boundary conditions, errors, and limits. </li></ul>
  20. 20. Black Box Test <ul><li>The “black box” refers to a piece of software or hardware treated as a single unit. </li></ul><ul><li>The contents of the “black box” is treated as unknown. </li></ul><ul><li>Only the inputs and outputs of the “black box” are considered. </li></ul><ul><li>A Black Box Test isn’t concerned with the system’s implementation, but only gauges whether it accepts the correct inputs and produces correct outputs. </li></ul>
  21. 21. Black Box Test (Continued) <ul><li>Group inputs and outputs: </li></ul><ul><li>– group valid inputs together. </li></ul><ul><li>– group invalid inputs together. </li></ul><ul><li>– group questionable inputs together. </li></ul><ul><li>– group outputs and identify erroneous groupings. </li></ul><ul><li>Focus on boundary values, and inputs which may be strange or unexpected. </li></ul>
  22. 22. Field Test <ul><li>A Field Test is a test conducted “in the field,” that is, in the place where the hardware or the software is deployed. </li></ul><ul><li>Sometimes a field test is done by the supplier upon delivery to the customer. </li></ul><ul><li>Sometimes a field test is done in response to an error report by the customer. </li></ul>