Published on

  • Be the first to comment

  • Be the first to like this

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

No notes for slide


  1. 1. Software Development Software Testing
  2. 2. Testing Definitions <ul><li>There are many tests going under various names. The following is a general list to get a feel for the different types of testing required by during typical high quality software development. </li></ul>
  3. 3. Acceptance Test <ul><li>The test performed by users of a new or changed system in order to approve the system and go live </li></ul><ul><li>Usually carried out at the customer’s premises or using customer’s data with the customer being present </li></ul><ul><li>This is usually the final phase of development and results in the handover of the software product to the customer </li></ul>
  4. 4. Active / Passive Testing <ul><li>An active test introduces specific test data and the results of processing that data are observed for correctness </li></ul><ul><li>Passive testing works on real data and the outputs are observed for correctness </li></ul>
  5. 5. Alpha and Beta Testing <ul><li>Alpha testing is the first test phase carried out by the developers in the lab </li></ul><ul><li>Beta testing is carried out when alpha testing is complete and the developers can find no errors (ideally). Beta testing is carried out by selected real users who report back to the developers. This enables the users to get early exposure to the software and the developers get usability and error feedback </li></ul>
  6. 6. Automated Testing <ul><li>This is when software is used to test software. This enables test repeatability and is faster as the user is not generally required to enter lots of data manually </li></ul><ul><li>If the code is changed in a single module, all the tests would be re-run on the whole application to ensure that the changes have not impacted on any other modules. Retesting everything in this way is often referred to as “regression testing” </li></ul>
  7. 7. White and Black Box Testing <ul><li>White box testing requires knowledge of the internal operation of the software. This enables the test to chack all paths through a function for example </li></ul><ul><li>Black box testing assumes no knowledge of the internal operation and based on the specification will input test data at a system level and observe the correctness of the output </li></ul>
  8. 8. Dirty or Negative Testing <ul><li>This method requires data to be input such that it will maximise the chances of failure so is used to test the application’s error recovery effectiveness </li></ul><ul><li>Examples could be user input validation through to memory allocation failure </li></ul>
  9. 9. Functional Testing <ul><li>Does the application do what it has been specified to do? </li></ul><ul><ul><li>Check all menu and tool bar options </li></ul></ul><ul><ul><li>Check all keyboard input </li></ul></ul><ul><li>Likely to take the form of a task list which a tester goes through to check all options and navigation paths. This is not a usability test but initial feedback on usability could be collected at the same time </li></ul>
  10. 10. Recovery Testing <ul><li>How well does the application recover from hardware and software failure? </li></ul><ul><ul><li>Reading a data file which you know is always available will still need error recovery code in case the disk you are reading from fails </li></ul></ul><ul><ul><li>How well does the system recover from the dirty test phase? </li></ul></ul><ul><ul><li>What happens if the device your application is trying to communicate with does not respond? </li></ul></ul>
  11. 11. Test Case Testing <ul><li>This consists of a set of test data, test programs (test harnesses) and a set of expected results </li></ul><ul><li>Typically a set of test cases is prepared (this is a test scenario). A file of input test data and expected results for example is read by the test harness (test driver program). A function (unit of code so is often referred to as a unit test) for example is called with the test data and the results are compared with the expected results. The success or failure of the test is reported and the next test is carried out. This method of testing tends to be totally automated if possible </li></ul>
  12. 12. Test Suite <ul><li>This is a collection of test scenarios which themselves are a collection of test cases </li></ul><ul><li>In oop for example, a test suite may consist of a test scenario for each class. The test scenario may consist of a series of tests for each of the member functions </li></ul>
  13. 13. Usability Testing <ul><li>A series of tests carried out by users or subject experts to determine the ease of use </li></ul><ul><li>Various techniques such as </li></ul><ul><ul><li>Task driven </li></ul></ul><ul><ul><li>Observation </li></ul></ul><ul><ul><li>Keystroke and mouse recording </li></ul></ul><ul><ul><li>Interview </li></ul></ul><ul><ul><li>Think aloud </li></ul></ul><ul><ul><li>Questionnaires </li></ul></ul>
  14. 14. Test Driven Development <ul><li>This is not a test method as such but is test oriented. Based on the system requirements, a series of tests is specified which, when they pass, mean that a piece of working code has been produced. i.e. the test is specified before the software is written and the software is written to pass the test. </li></ul><ul><li>Often used in Extreme Programming (XP) but can be used in its own right as a development method </li></ul>
  15. 15. Compatibility Testing <ul><li>Ensures that the software is compatible with the hardware, operating systems, and other software packages that it will be working with such as: </li></ul><ul><ul><li>Works on required software platforms such as Windows and Linux </li></ul></ul><ul><ul><li>Works on required hardware platform such as 16, 32 and 64 bit systems </li></ul></ul><ul><ul><li>Works with various software releases if required such as Win 95, XP, Vista </li></ul></ul>
  16. 16. Performance Testing <ul><li>Ensures that the software runs fast enough to meet speed requirements e.g. executing algorithms in time specified </li></ul><ul><li>Ensures that the software does not consume more memory than anticipated </li></ul>
  17. 17. Function Stubs <ul><li>When developing an application as part of a team, you may need to call functions (or objects) that do not yet exist (because someone is still writing them </li></ul><ul><ul><li>Write a function which does nothing other than enable the caller to call it and return a value or series of values depending on the function spec. </li></ul></ul><ul><ul><li>The caller can test the calling function’s response to a variety of return values from the stubs </li></ul></ul>
  18. 18. Test Harness Example <ul><li>Performs 16 and 32 bit compatibility tests </li></ul><ul><li>Performs Test Case Testing on a function </li></ul><ul><li>Uses Automated Testing </li></ul><ul><li>Uses Active Testing </li></ul><ul><li>Data and results taken from a Test Scenario </li></ul><ul><li>Function under test is a C function to convert a String to an Integer (like atoi but with extra features). </li></ul><ul><li>Errors found would need source header updating with mod date and author and an overview of the problem and fix </li></ul>