Course Outline Testing techniques and principles: Defects vs. failures, equivalence classes, boundary testing. Types of defects. Black-box vs. Structural testing. Testing strategies: Unit testing, integration testing, profiling, test driven development. State based testing; configuration testing; compatibility testing; web site testing. Alpha, beta, and acceptance testing. Coverage criteria. Test instrumentation and tools. Developing test plans. Managing the testing process. Problem reporting, tracking, and analysis. Definition of a Software A Software is a set of Programs developed to perform a particular task It mainly acts a mediator between the user and the system to fulfill the user requirements. Types of Software Banking Software ATM Software Mobile Application Software Automobile Software Educational Software Etc. Software Process SDLC(Software Development Life Cycle) Software requirements gathering Software design and development Implementation Testing Maintenance Software Testing Software Testing is a Process of finding errors or bugs in a Software. Categories in Software Testing
Manual Testing &
Automation Testing Bugs a.k.a. … Defect Fault Problem Error Incident Anomaly Variance Defective Software We develop programs that contain defects
How many? What kind?
Hard to predict the future, however… it is highly likely, that the software we (including you!) will develop in the future will not be significantly better. Sources of Problems Requirements Definition: Erroneous, incomplete, inconsistent requirements. Design: Fundamental design flaws in the software. Implementation: Mistakes in chip fabrication, wiring, programming faults, malicious code. Support Systems: Poor programming languages, faulty compilers and debuggers, misleading development tools. Adverse Effects of Faulty Software Communications: Loss or corruption of communication media, non delivery of data. Space Applications: Lost lives, launch delays. Transportation: Deaths, delays, sudden acceleration, inability to brake. Safety-critical Applications: Death, injuries. Electric Power: Death, injuries, power outages, long-term health hazards (radiation). Therac-25 Radiation “Therapy In Texas, 1986, a man received between 16,500-25,000 rads in less than 1 sec, over an area of about 1 cm. He lost his left arm, and died of complications 5 months later. In Texas, 1986, a man received at least 4,000 rads in the right temporal lobe of his brain. The patient eventually died as a result of the overdose. Therac-25 Radiation “Therapy” (Cont’d) In Washington, 1987, a patient received 8,000-10,000 rads instead of the prescribed 86 rads. The patient died of complications of the radiation overdose. AT&T Bug: Hello? ... Hello? In mid-December 1989, AT&T installed new software in 114 electronic switching systems. On January 15, 1990, 5 million calls were blocked during a 9 hour period nationwide. Bank Generosity A Norwegian bank ATM consistently dispersed 10 times the amount required. Many people joyously joined the queues as the word spread. Bank Generosity (Cont’d) A software flaw caused a UK bank to duplicate every transfer payment request for half an hour. The bank lost 2 billion British pounds! The bank eventually recovered the funds but lost half a million pounds in potential interest. Most bugs are not because of mistakes in the code … Specification (~= 55%) Design (~= 25%) Code (~= 15%) Other (~= 5%) Software Quality Assurance Software Quality Assurance involves reviewing and auditing the software products and activities to verify that they comply with the applicable procedures and standards . What makes a good test engineer?
A good test engineer has a 'test to break'
attitude, an ability to take the point of view of the customer, a strong desire for quality, and an attention to detail. Verification and Validation Verification: It is a Process to check whether the software conforms to the specifications, it typically involves reviews and meetings to evaluate documents, plans, requirements, and specifications. Validation: It is a Process to check whether the software meets the customer requirements, it typically involves testing at the user end and takes place after verifications are completed. Objects of Software Testing To unearth and correct defects. To detect defects early and to reduce cost of defect fixing. To ensure that product works as user expected it to. To avoid user detecting problems. What is a Software Bug It is a term used to indicate a defect in a Software A Software Defect can be mainly categorized as Critical Major Minor Types of Testing Black Box Testing White Box Testing Regression Testing Ad hoc Testing Smoke Testing Load Testing Security Testing Test Life Cycle SRS Preparations and Documentations Preparation of Test Plan Design of Test Cases Execution of Test Cases Evaluate Results Document Test Results Casual Analysis/ Preparation of Validation Reports Regression Testing / Follow up on reported bugs. Levels of Testing Unit Testing Integration Testing System Testing Acceptance Testing Testing Principles THE EIGHT BASIC PRINCIPLES OF TESTING 1. Define the expected output or result.
2. Don't test your own programs .
3. Inspect the results of each test completely.
4. Include test cases for invalid or unexpected
conditions. 5. Test the program to see if it does what it is not supposed to do as well as what it is supposed to do.
6. Avoid disposable test cases unless the program
itself is disposable.
7. Do not plan tests assuming that no errors will be
found. 8. Fading effectiveness The effectiveness of software testing fades over time. If test-cases are only repeated, they do not expose new errors. Errors, remaining within untested functions may not be discovered. In order to prevent this effect, test-cases must be altered and reworked time by time.