The document discusses various topics related to software testing:
1. It defines software testing as executing a program to find bugs and ensure it meets requirements. Testing verifies and validates software.
2. It outlines seven principles of testing including that exhaustive testing is impossible and testing shows presence but not absence of defects.
3. It describes different software development life cycle models like waterfall and V-model and discusses their advantages, disadvantages, and when to use them.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
42 views
Software Testingppt
The document discusses various topics related to software testing:
1. It defines software testing as executing a program to find bugs and ensure it meets requirements. Testing verifies and validates software.
2. It outlines seven principles of testing including that exhaustive testing is impossible and testing shows presence but not absence of defects.
3. It describes different software development life cycle models like waterfall and V-model and discusses their advantages, disadvantages, and when to use them.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 32
Software Testing:
Software Testing is a process of executing a
program or application with the intent of finding the software bugs. It can also be stated as the process of validating and verifying that a software program or application or product, which meets the business and technical requirements that guided its design and development, works as expected, and can be implemented with the same characteristic. Software Quality Quality software means reasonably bug or defect free, delivered on time and within budget, meets requirements and/or expectations, and is maintainable. What are Principles of testing There are seven principles of testing. They are as follows: 1) Testing shows presence of defects: Testing can show the defects are present, but cannot prove that there are no defects. Even after testing the application or product thoroughly we cannot say that the product is 100% defect free. Testing always reduces the number of undiscovered defects remaining in the software but even if no defects are found, it is not a proof of correctness. 2) Exhaustive testing is impossible: Testing everything including all combinations of inputs and preconditions is not possible. So, instead of doing the exhaustive testing we can use risks and priorities to focus testing efforts. 3) Early testing: In the software development life cycle testing activities should start as early as possible and should be focused on defined objectives. 4) Defect clustering: A small number of modules contains most of the defects discovered during pre- release testing or shows the most operational failures. 5) Pesticide paradox: If the same kinds of tests are repeated again and again, eventually the same set of test cases will no longer be able to find any new bugs. To overcome this “Pesticide Paradox”, it is really very important to review the test cases regularly and new and different tests need to be written to exercise different parts of the software or system to potentially find more defects. 6) Testing is context depending: Testing is basically context dependent. Different kinds of sites are tested differently. For example, safety – critical software is tested differently from an e- commerce site. 7) Absence – of – errors fallacy: If the system built is unusable and does not fulfil the user’s needs and expectations then finding and fixing defects does not help Key aspects of quality for the customer include Good design – looks and style. Good functionality – it does the job well. Reliable – acceptable level of breakdowns or failure. Consistency. Durable – lasts as long as it should. Good after sales service. Value for money. Main purpose of Software testing Software testing has three main purposes : The verification process confirms that the software meets its technical specifications. The validation process confirms that the software meets the business requirements. A defect is a variance between the expected and actual result. The defect’s ultimate source may be traced to a fault introduced in the specification, design, or development (coding) phases. Why Does Software Testing Does it really work as expected? Does it meet the users’ requirements? Is it what the users expect? Do the users like it? Is it compatible with our other systems? How does it perform? How does it scale when more users are added? Which areas need more work? Is it ready for release? What to Test First, test what’s important. Focus on the core functionality—the parts that are critical or popular —before looking at the ‘nice to have’ features. Concentrate on the application’s capabilities in common usage situations before going on to unlikely situations. For example, if the application retrieves data and performance are important, test reasonable queries with a normal load on the server before going on to unlikely ones at peak usage times. It’s worth saying again: focus on what’s important. Good business requirements will tell you what’s important Who Does Testing Software testing is not a one person job. It takes a team, but the team may be larger or smaller depending on the size and complexity of the application being tested. Testers must be cautious, curious, critical but non-judgmental, and good communicators. How well does it work? What does it mean to you that “it works”? How do you know it works? What evidence do you have? In what ways could it seem to work but still have something wrong? In what ways could it seem to not work but really be working? What might cause it to not to work well? A good developer does not necessarily make a good. Why is testing necessary Testing is necessary because we all make mistakes. Some of those mistakes are unimportant, but some of them are expensive or dangerous. We need to check everything and anything we produce because things can always go wrong – humans make mistakes all the time. Since we assume that our work may have mistakes, hence we all need to check our own work. However some mistakes come from bad assumptions and blind spots, so we might make the same mistakes when we check our own work as we made when we did it. So we may not notice the flaws in what we have done. What are the Software Development Life Cycle phases There are various software development approaches defined and designed, which are used/employed during development process of software, these approaches are also referred as “Software Development Process Models”(e.g. Waterfall model, incremental model, V-model, iterative model, etc.). There are following six phases in every Software development life cycle model: Requirement gathering and analysis. Design. Implementation or coding. Testing. Deployment. Maintenance. What is Waterfall model The Waterfall Model is the first Process Model to be introduced. It is also referred to as a linear sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed fully before the next phase can begin. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. In waterfall model phases do not overlap. Advantages of waterfall model Simple and easy to understand and use. Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process. Phases are processed and completed one at a time. Works well for smaller projects where requirements are very well understood. Disadvantages of waterfall model Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage. No working software is produced until late during the life cycle. High amounts of risk and uncertainty. Not a good model for complex and object- oriented projects. Poor model for long and ongoing projects. Not suitable for the projects where requirements are at a moderate to high risk of changing. When to use the waterfall model If requirements are very well known, clear and fixed. If product definition is stable. If technology is understood. If there are no ambiguous requirements. If ample resources with required expertise are available freely. If the project is short. What is V-model V- Model means Verification and Validation model. Just like the waterfall model, the V- Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins. Testing of the product is planned in parallel with a corresponding phase of development. Requirements: Like BRS and SRS begin the life cycle model just like the waterfall model. But, in this model before development is started, a system test plan is created. The test plan focuses on meeting the functionality specified in the requirements gathering. The high-level design (HLD): Phase focuses on system architecture and design. It provides overview of solution, platform, system, product and service/process. An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together. The low-level design (LLD): Phase is where the actual software components are designed. It defines the actual logic for each and every component of the system. Class diagram with all the methods and relation between classes comes under LLD. Component tests are created in this phase as well. The implementation: Phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use. Coding: This is at the bottom of the V-Shape model. Module design is converted into code by developers Advantages of V-model Simple and easy to use. Testing activities like planning, test designing happens well before coding. This saves a lot of time. Hence higher chance of success over the waterfall model. Proactive defect tracking – that is defects are found at early stage. Avoids the downward flow of the defects. Works well for small projects where requirements are easily understood. Disadvantages of V-model Very rigid and least flexible. Software is developed during the implementation phase, so no early prototypes of the software are produced. If any changes happen in midway, then the test documents along with requirement documents has to be updated. When to use the V-model The V-shaped model should be used for small to medium sized projects where requirements are clearly defined and fixed. The V-Shaped model should be chosen when ample technical resources are available with needed technical expertise. High confidence of customer is required for choosing the V-Shaped model approach. Since, no prototypes are produced, there is a very high risk involved in meeting customer expectations What is Spiral model The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model) Disadvantages of Spiral model Can be a costly model to use. Risk analysis requires highly specific expertise. Project’s success is highly dependent on the risk analysis phase. Doesn’t work well for smaller projects. When to use Spiral model When costs and risk evaluation is important. For medium to high-risk projects.
Long-term project commitment unwise
because of potential changes to
economic priorities. Users are unsure of their needs.
Requirements are complex.
New product line.
What is Incremental model In incremental model, the whole requirement is divided into various builds. Multiple development cycles take place here, “making the life cycle a multi-waterfall” cycle. Cycles are divided up into smaller, more easily managed modules. Each module passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first module, so you have working software early on during the software life cycle. Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved. Advantages of Incremental model Generates working software quickly and early during the software life cycle. More flexible – less costly to change scope and requirements. Easier to test and debug during a smaller iteration. Customer can respond to each built. Lowers initial delivery cost. Easier to manage risk because risky pieces are identified and handled during it’d iteration. Disadvantages of Incremental model
Needs good planning and design.
Needs a clear and complete definition of the whole system before it can be broken down and built incrementally. Total cost is higher than waterfall When to use the Incremental model Requirements of the complete system are clearly defined and understood. Major requirements must be defined; however, some details can evolve with time. There is a need to get a product to the market early. A new technology is being used. Resources with needed skill set are not available. There are some high risk features and goals.