SOFTWARE TESTING Designed By: The Purpose of the Testing To measure the quality of the software To detect the faults in the software To improve the quality and reliability by removing the faults from the software Why Do Faults occurs in the software? One of the major causes is the specification. Also there are deadlines to deliver the project on time Another reason is human beings create software Importance of software Testing Software testing is one of the most important phase in Software development life cycle . Although reviews and SQA activities can uncover the errors but thorough Testing is required to deliver the quality product to the Customer. Therefore it’s always better to find the bugs ,Than the customer finds them. SOFTWARE DEVELOPMENT LIFE CYCLE Is the overall process of developing information systems through a multi step process from investigation of initial requirement through analysis design implementation and maintenance. There are many different models and methodologies but each generally consists of a series of defined steps or stages. ILLUSTRATION How the customers explained it How the project leader understood it How the analyst designed it Problem Definition Status Quo Technical Development Solution Integration SDLC Models •Water Fall Model (Linear Sequential Model) •Spiral Model •Prototype Model •Rapid Application Development •V Model Water Fall Model Analysis Design Code Test Support Prototype Model Listen to Customer Build/revise mock-up Customer test-drives mock-up Rapid Application Model Team #1 Business Modeling Data Modeling Process Modeling Application Modeling Test and turnover Team #2 Business Modeling Data Modeling Process Modeling Application Modeling Team #3 Business Modeling Data Modeling Process Modeling Application Modeling Test and turnover Test and turnover T e V Model User Manual Requirements Specification SRS System/Acceptance Test Tested Software System Design Detail Design System Integration Test Integration Test Module Design Coding Tested Module Unit Test Code Importance of Testing in SDLC Software testing is one of the important phases in SDLC because of the following reasons: It helps to very that all the software requirement are implemented correctly. It helps in identifying defects and ensuring that they are addressed before software deployment. Data collection as testing is conducted provide a good indication of software reliability and some indication of Software reliability and some indication of software Quality as a whole. Errors, Bugs and Faults in Software Errors & Bugs – Is a human action that produces the incorrect result,and the presence of the error at the time of execution of the software is know as bug . Faults – Is a software defect that cause a failure and Failure is a deviation of the software. Testing and Quality • Testing is the process of checking the functionality and correctness of software by executing it and it measure the software quality. • If a software product is of high quality, it will meet Why does software have bugs? Miscommunication or no communication Software complexity Programming errors changing requirements time pressures Testing life cycle Comparisons & Relationships SDLC STLC VV Model Standards and Guidelines VV Model Verification & Validation Start Implementation •SRS •Build •Install •Prooduction •Maintenance Start Test •Test Plan •Test Design •Test Execute •Acceptance •Report •Evaluation Correction Complete Levels of testing Insight into various levels in a test phase Unit testing Integration or module System Acceptance Alpha , Beta TESTING LIFE CYCLE Effort Estimation Project Initiation System study Summary Reports Analysis Regression Test Report defects Test plan Design Test cases Test Automation Execute Test cases TEST PLAN Test plan is a document that describes the objectives, scope, approach and focus of a Software testing efforts. Some items that might be included in a test plan depending on particular project: • Title • Identification of software including version number • Revision history of document including authors,dates • Table of contents • Purpose of document • Objective of testing effort • Software product overview Some items that might be included in a test plan depending on particular project: Cont… • Relevant related document list, Exe requirements, design documents etc. • Assumptions and dependencies • Project risk and analysis • Testing priorities and focus • Test outline • Test environment • Test tools to be used • Personal allocation etc…………………. Test Case, Test Logs, Test Harness TEST CASES: A Test cases is a document that describes an input, action or event and an expected response to determine if a feature of an application is working correctly. contd…. Test Case, Test Logs, Test Harness TEST LOGS: Cont… A collection of raw output captured during a unique execution of one or more tests, usually representing the output resulting from the execution of a Test suite for a single test cycle. TEST HARNESS: A test harness is a small program specially written to test a particular subroutine or module. AUTOMAED Vs MANUAL TESTING Software testing assisted with software tools that require very little operator input, or evaluation is referred to as AUTOMATED TESTING Whereas that part of software testing that requires human input, analysis or evaluation is know as MANUAL TESTING. Acceptance Testing A formal test conducted to determine whether or not system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system. It is the final test action before deploying the software.the goal of acceptance testing is to verify that software is ready and can be used by end users. BLACKBOX TESTING Also known as functional testing. Asoftware testing technique whereby the internal workings of the item being tested are not known by the tester. For example, in a black box test on a software design the tester only knows the inputs and what the expected outcomes should be and not how the program arrives at those outputs. The tester does not ever examine the programming code and does not need any further knowledge of the program other than its specifications. WHITEBOX TESTING Also known as glass box, structural, clear box and open box testing. A software testing technique whereby explicit knowledge of the internal workings of the item being tested are used to select the test data. Unlike black box testing, white box testing uses specific knowledge of programming code to examine outputs. The test is accurate only if the tester knows what the program is supposed to do. He or she can then see if the program diverges from its intended goal. White box testing does not account for errors caused by omission, and all visible code must also be readable.