Introduction to Software Engineering Muhammad Nasir Software Testing Strategies (2) m.nasir@iiu.edu.pk
Agenda  Integration Testing  Validation Testing  System Testing  Recovery Testing  Security Testing  Stress Testing  Performance Testing  Deployment Testing
Integration Testing  Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing.  The objective is to take unit tested components and build a program structure that has been dictated by design.
Integration Testing
Non-Incremental Approach  There is often a tendency to attempt non-incremental integration; that is, to construct the program using a "big bang" approach.  A set of errors is encountered.
Non-Incremental Approach  Correction is difficult because isolation of causes is complicated by the large size of the entire program.  Once these errors are corrected, new ones appear and the process continues in a seemingly endless loop.
Non-Incremental Approach (Big Bang)
Incremental Approach  Incremental integration is the exact opposite of the big bang approach.  The program is constructed and tested in small increments, where errors are easier to isolate and correct;
Incremental Approach
Validation Testing  Validation testing begins at the end of integration testing, when the software is completely assembled as a package.  Validation Testing Includes  Configuration Testing – Checking all the elements in the package and their version  Alpha Testing – Controlled Testing by user at developer site  Beta Testing – Open Testing a User site
System Testing  Software is only one element of a larger computer-based system  Ultimately, software is incorporated with other system elements (e.g., hardware, people, information)  System testing is actually a series of different tests whose primary purpose is to fully exercise the computer-based system.
System Testing  System Testing Includes;  Recovery Testing  Security Testing  Stress Testing  Performance Testing  Deployment Testing
Recovery Testing  Recovery testing is a system test that forces the software to fail in a variety of ways and verifies that recovery is properly performed.  If recovery is automatic (performed by the system itself), re-initialization, check-pointing mechanisms, data recovery, and restart are evaluated for correctness.  If recovery requires human intervention, that is mean-time-to-repair (MTTR) is evaluated to determine whether it is within acceptable limits.
Security Testing  Security testing attempts to verify that protection mechanisms built into a system will, in fact, protect it from improper break through .  During security testing, the tester plays the role(s) of the individual who desires to break through the system.  Given enough time and resources, good security testing will ultimately penetrate a system.
Security Testing  The tester may attempt to acquire passwords;  May attack the system with custom software designed to break down any defenses that have been constructed;  May overwhelm the system, thereby denying service to others;  May purposely cause system errors, hoping to penetrate during recovery; may browse through insecure data, hoping to find the key to system entry.
Stress Testing  Stress testing executes a system in a manner that demands resources in abnormal quantity, frequency, or volume. For example, 1. special tests may be designed that generate ten interrupts per second 2. Input data rates may be increased by an order of magnitude to determine how input functions will respond 3. Test cases that require maximum memory or other resources are executed  A variation of stress testing is a technique called sensitivity testing
Performance Testing  Performance testing occurs throughout all steps in the testing process.  Even at the unit level, the performance of an individual module may be assessed as white-box tests are conducted.  Performance tests are often coupled with stress testing and usually require both hardware and software instrumentation  It is often necessary to measure resource utilization (e.g., processor cycles).
Deployment Testing  In many cases, software must execute on a variety of platforms and under more than one operating system environment.  In addition, deployment testing examines all installation procedures and specialized installation software that will be used by customers,  and all documentation that will be used to introduce the software to end users
Deployment Testing  A more thorough deployment test might encompass combinations of Web browsers with various operating systems (e.g., Linux, Mac OS, Windows).  Because security is a major issue, a complete set of security tests would be integrated with the deployment test.
The End  Thanks for listening  Questions would be appreciated.

Lecture 20 software testing (2)

  • 1.
    Introduction to SoftwareEngineering Muhammad Nasir Software Testing Strategies (2) m.nasir@iiu.edu.pk
  • 2.
    Agenda  IntegrationTesting  Validation Testing  System Testing  Recovery Testing  Security Testing  Stress Testing  Performance Testing  Deployment Testing
  • 3.
    Integration Testing Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing.  The objective is to take unit tested components and build a program structure that has been dictated by design.
  • 4.
  • 5.
    Non-Incremental Approach There is often a tendency to attempt non-incremental integration; that is, to construct the program using a "big bang" approach.  A set of errors is encountered.
  • 6.
    Non-Incremental Approach Correction is difficult because isolation of causes is complicated by the large size of the entire program.  Once these errors are corrected, new ones appear and the process continues in a seemingly endless loop.
  • 7.
  • 8.
    Incremental Approach Incremental integration is the exact opposite of the big bang approach.  The program is constructed and tested in small increments, where errors are easier to isolate and correct;
  • 9.
  • 10.
    Validation Testing Validation testing begins at the end of integration testing, when the software is completely assembled as a package.  Validation Testing Includes  Configuration Testing – Checking all the elements in the package and their version  Alpha Testing – Controlled Testing by user at developer site  Beta Testing – Open Testing a User site
  • 11.
    System Testing Software is only one element of a larger computer-based system  Ultimately, software is incorporated with other system elements (e.g., hardware, people, information)  System testing is actually a series of different tests whose primary purpose is to fully exercise the computer-based system.
  • 12.
    System Testing System Testing Includes;  Recovery Testing  Security Testing  Stress Testing  Performance Testing  Deployment Testing
  • 13.
    Recovery Testing Recovery testing is a system test that forces the software to fail in a variety of ways and verifies that recovery is properly performed.  If recovery is automatic (performed by the system itself), re-initialization, check-pointing mechanisms, data recovery, and restart are evaluated for correctness.  If recovery requires human intervention, that is mean-time-to-repair (MTTR) is evaluated to determine whether it is within acceptable limits.
  • 14.
    Security Testing Security testing attempts to verify that protection mechanisms built into a system will, in fact, protect it from improper break through .  During security testing, the tester plays the role(s) of the individual who desires to break through the system.  Given enough time and resources, good security testing will ultimately penetrate a system.
  • 15.
    Security Testing The tester may attempt to acquire passwords;  May attack the system with custom software designed to break down any defenses that have been constructed;  May overwhelm the system, thereby denying service to others;  May purposely cause system errors, hoping to penetrate during recovery; may browse through insecure data, hoping to find the key to system entry.
  • 16.
    Stress Testing Stress testing executes a system in a manner that demands resources in abnormal quantity, frequency, or volume. For example, 1. special tests may be designed that generate ten interrupts per second 2. Input data rates may be increased by an order of magnitude to determine how input functions will respond 3. Test cases that require maximum memory or other resources are executed  A variation of stress testing is a technique called sensitivity testing
  • 17.
    Performance Testing Performance testing occurs throughout all steps in the testing process.  Even at the unit level, the performance of an individual module may be assessed as white-box tests are conducted.  Performance tests are often coupled with stress testing and usually require both hardware and software instrumentation  It is often necessary to measure resource utilization (e.g., processor cycles).
  • 18.
    Deployment Testing In many cases, software must execute on a variety of platforms and under more than one operating system environment.  In addition, deployment testing examines all installation procedures and specialized installation software that will be used by customers,  and all documentation that will be used to introduce the software to end users
  • 19.
    Deployment Testing A more thorough deployment test might encompass combinations of Web browsers with various operating systems (e.g., Linux, Mac OS, Windows).  Because security is a major issue, a complete set of security tests would be integrated with the deployment test.
  • 20.
    The End Thanks for listening  Questions would be appreciated.

Editor's Notes

  • #4 Non-Incremental approach is based on big bang theory…