santoshcharandas@gmail.

Testing Q&A

What is Software Development Life Cycle? The Software Development Life Cycle is a step-by-step process involved in the development of a software product. It is also denoted as Software Development process in certain parts of the world. The whole process is generally classified into a set of steps and a specific operation will be carried out in each of the steps. Classification The basic classification of the whole process is as follows • • • • • • • • Planning Analysis Design Development (Software Development) Implementation Testing (Software Testing) Deployment Maintenance

Each of the steps of the process has its own importance and plays a significant part in the product development. The description of each of the steps can give a better understanding. Planning This is the first and foremost stage in the development and one of the most important stages. The basic motive is to plan the total project and to estimate the merits and demerits of the project. The Planning phase includes the definition of the intended system, development of the project plan, and Parallel management of the plan throughout the proceedings of the development. A good and matured plan can create a very good initiative and can positively affect the complete project. Analysis The main aim of the analysis phase is to perform statistics and requirements gathering. Based on the analysis of the project and due to the influence of the results of the planning phase, the requirements for the project are decided and gathered. Once the requirements for the project are gathered, they are prioritized and made ready for further use. The decisions taken in the analysis phase are out and out due to the requirements analysis. Proceedings after the current phase are defined. Design Once the analysis is over, the design phase begins. The aim is to create the architecture of the total system. This is one of the important stages of the process and serves to be a benchmark stage since the errors performed until this stage and during this stage can be cleared here. Most of the developers have the habit of developing a prototype of the entire software and represent the software as a miniature model. The flaws, both technical and design, can be found and removed and the entire process can be redesigned. Development and Implementation The development and implementation phase is the most important phase since it is the phase where the main part of the project is done. The basic works include the design of the basic technical architecture and the maintenance of the database records and programs related to the

development process. One of the main scenarios is the implementation of the prototype model into a full-fledged working environment, which is the final product or software. Testing The testing phase is one of the final stages of the development process and this is the phase where the final adjustments are made before presenting the completely developed software to the end-user. In general, the testers encounter the problem of removing the logical errors and bugs. The test conditions which are decided in the analysis phase are applied to the system and if the output obtained is equal to the intended output, it means that the software is ready to be provided to the user. Maintenance The toughest job is encountered in the maintenance phase which normally accounts for the highest amount of money. The maintenance team is decided such that they monitor on the change in organization of the software and report to the developers, in case a need arises. The information desk is also provided with in this phase. This serves to maintain the relationship between the user and the creator. Introduction to Software Testing Before moving further towards introduction to software testing, we need to know a few concepts that will simplify the definition of software testing. • • • • Error: Error or mistake is a human action that produces wrong or incorrect result. Defect (Bug, Fault): A flaw in the system or a product that can cause the component to fail or misfunction. Failure: It is the variance between the actual and expected result. Risk: Risk is a factor that could result in negativity or a chance of loss or damage.

Thus Software testing is the process of finding defects/bugs in the system, that occurs due to an error in the application, which could lead to failure of the resultant product and increase in probability of high risk. In short, software testing have different goals and objectives, which often include: 1. finding defects; 2. gaining confidence in and providing information about the level of quality; 3. preventing defects. If you are new to the field of software testing, then the article software testing for beginners will be of great help. Scope of Software Testing The primary function of software testing is to detect bugs in order to correct and uncover it. The scope of software testing includes execution of that code in various environment and also to examine the aspects of code - does the software do what it is supposed to do and function according to the specifications? As we move further we come across some questions such as "When to start testing?" and "When to stop testing?" It is recommended to start testing from the initial stages of the software development. This not only helps in rectifying tremendous errors

scalability. Validation: This checks whether the product meets the customer requirement? Software Quality Assurance: Software testing is an important part of the software quality assurance. due to the lack of time and budget. which is potentially endless but has to be stopped somewhere.before the last stage. Read more on checklists for software tester. such as usability. It also saves the cost of the defect required to find it. a baseline has to be set. 1. which proves the suitability of the product by taking care of the quality of a product and ensuring that the customer requirements are met. performance and security. testability. a non-functional requirement such as usability. but most commonly due to the requirement gaps in the non-functional requirement. • • • • Software Testing Types: Software test type is a group of test activities that are aimed at testing a component or system focused on a specific test objective. But not all defects result to failures. Manual Scripted Testing: • • • Black Box Testing White Box Testing Gray Box Testing The levels of software testing life cycle includes : • • • Unit Testing Integration Testing System Testing . software code is executed to demonstrate the results of running tests. which is done in the form of checklists. Software Testing Key Concepts • Defects and Failures: As we discussed earlier. It is required to achieve maximum profit with good quality product. within the limitations of time and money. Input Combination and Preconditions: Testing all combination of inputs and initial state (preconditions). A failure is caused due to the deviation between an actual and an expected result. but also reduces the rework of finding the bugs in the initial stages every now and then. This means finding large number of infrequent defects is difficult. The tester has to follow some procedural way through which he can judge if he covered all the points required for testing or missed out any. Software testing is classified according to two basic types of software testing: Manual Scripted Testing and Automated Testing. testability or reliability. whereas in dynamic testing. Various types of software testing are used with the common objective of finding defects in that particular component. is not feasible. maintainability. A defect can turn into a failure due to the change in the environment and or the change in the configuration of the system requirements. Quality assurance is an activity. Verification: This verifies whether the product is done according to the specification? 2. defects are not caused only due to the coding errors. Software testing is an ongoing process. To help testers to carry out these day-to-day activities. Verification and Validation: Software testing is done considering these two factors. Static and Dynamic Analysis: Static testing does not require execution of the code for finding defects.

Alpha Testing 2. Stress Testing Smoke Testing Sanity Testing Regression Testing Recovery Testing Usability Testing Compatibility Testing Configuaration Testing Exploratory Testing For further explanation of these concepts. Software Testing Methodologies The software testing methodologies or process includes various models that built the process of working for a particular product. Rational Robot. Software Testing Artifacts Software testing process can produce various artifacts such as: • • Test Plan: A test specification is called a test plan. These models are as follows: • • • • • • Waterfall Model V Model Spiral Model Rational Unified Process(RUP) Agile Model Rapid Application Development(RAD) These models are elaborated briefly in software testing methodologies. Test automation is a process of writing a computer program in the form of scripts to do a testing which would otherwise need to be done manually. Quick Test Professional (QTP).• Acceptance Testing 1. Some of the popular automation tools are Winrunner. . Beta Testing Other types of software testing are: • • • • • • • • • • Functional Testing Performance Testing 1. Automation tools category also includes maintenance tool such as TestDirector and many other. Automation testing involves automating a manual process. LoadRunner. read more on types of software testing. Load Testing 2. etc. This verifies that the test results are correct and is also used to change tests when the source documents are changed. A test plan is documented so that it can be used to verify and ensure that a product or system meets its design specification. Traceability matrix: This is a table that correlates or design documents to test documents. Automated Testing: Manual testing is a time consuming process. SilkTest.

Also expects interface requirements requirements. Software Testing Process Software testing process is carried out in the following sequence. These test cases are developed with the objective of judging the application for its capabilities or features. User Id and Password textboxes should be available with appropriate labels. Invalid. Invalid UserId. are available with appropriate captions TC2. :{Valid. 7. 4. in order to find faults in the software system: 1. Create Test Plan Design Test Case Write Test Case Review Test Case Execute Test Case Examine Test Results Perform Post-mortem Reviews Budget after Experience Here is a sample Test Case for you: # Software Test Case for Login Page: • • Purpose: The user should be able to go to the Home page. 2.No Case Test Case Name Steps/Action Expected Results 1. Login page should appear. Invalid. 4. empty}. 5. 2.eg: User Id: {Valid UserId. i)Error message is displayed for numeric data. Test Data: Required list of variables and their values should be available. Password:{Valid. Submit and Cancel buttons with appropriate captions should be available. S/w should be compatible with the Operating system. Textbox for UserId should: i)allow only alphai)User types numbers into the textbox. Test Scripts: The test script is the combination of a test case. . 2. 6. that Submit and Cancel buttons according to the user.• • • • Test Case: Test cases and software testing strategies are used to check the functionality of individual component that is integrated to give the resultant product. Test Suite: Test suite is a collection of test cases. the test values and changeable environmental components are collected in separate files and stored as test data. 8. empty}. Test Id • • Sr. 3. empty}. Pre-requisite: 1. 3. Test Data: When multiple sets of values or data are used to test the same functionality of a particular feature in the test case. appropriate labels. User views the page to check whether it includes UserId and Password textboxes with Screen dispalys user Checking User Interface TC1. test procedure and test data.

This life cycle is named as the bug life cycles. ii)System clears the data available in the UserId and Password textbox when user clicks on the 'CANCEL' button.. Checking functionality of characters in the the Password textbox: password textbox. ii)User clicks on the 'SUBMIT' button and expects to view the 'Home' page of the application. 3. it becomes difficult and tedious to go back for finding the problems in the initial conditions of the components. textboxes for UserId and Password are reset to blank by clicking on the 'CANCEL' button. enabled. like{'$'.'*'. i)System displays i)User checks whether 'CANCEL' 'CANCEL' button as button is enabled or disabled. i)Error message is displayed when user i)User enters only two characters enters less than six in the password textbox. i)System displays i)User checks whether 'SUBMIT' 'SUBMIT' button as button is enabled or disabled. As we move forward towards the different levels of the software. This procedure is combined into the life cycle of the bug in the form of contents of a bug. The cost of finding the defect also increases. characters in the password than six characters into ii)Data should be textbox.'~'. There is a procedure that is to be followed for finding a bug in the application. ii)System is redirected to the 'Home' page of the application as soon as he clicks on the 'SUBMIT' button.. enabled 4.'!'. A-Z} ii)not allow special ii)User types alphanumeric data characters in the textbox. ii)User checks whether his data the encrypted format is displayed in the encrypted else displays an error format. 5. TC4.} iii)not allow numeric characters like{0-9} ii)Text is accepted when user enters alphanumeric data into the textbox. Thus it is recommended to start testing from the initial stages of the life cycle. TC5.. There are various techniques involved alongwith the types of software testing. message. which helps the tester in answering the question .'#'. displayed in encrypted System accepts data in format. when user enters more six characters. the password textbox. Fault Finding Techniques in Software Testing Finding of a defect or fault in the earlier parts of the software not only saves time and money.numeric characters{a-z. but is also efficient in terms of security and profitability. Checking functionality of 'SUBMIT' button.how to log a bug? . Checking functionality of ii)User checks whether the 'CANCEL' button. depending upon the severity and priority of that bug. i)Textbox for Password System accepts data should accept more than ii)User enters more than six TC3.

both. cost and effort estimation. Other than the test plan. as well as configuration and compatibility issues. needs to be controlled. varying user requirements. collection of data. which are used for implementing the test plan. There are some important uses of measuring the software: • Software metrics helps in avoiding pitfalls such as 1. productivity and performance evaluation. The tutorial deals with almost all the basics used in manual testing. It helps in judging the quality of the software. 3. In this type of testing. with respect to. Stages of Manual Testing . It answers questions such as: 1. • • Some of the common software metrics are: • • • • • • • • Code Coverage Cyclomatic complexity Cohesion Coupling Function Point Analysis Execution time Source lines of code Bug per lines of code In short. How is the quality of the code that has been developed?. it is essential to do so. changing environmental conditions. The elements that are not able to be measured. measurement of a software is for understanding. we will now turn towards the software testing tutorial. What is the estimation of each process activity?. etc. 2. Manual Testing Tutorial After the introduction to software testing. if the behavior of the software is exactly according to the expectations of the customer.Measuring Software Testing There arises a need of measuring the software. clarifying goals. which he uses for testing. 3. Software is subject to changes. the tester wears the grabs of the end user. there should be some source of getting back to the older versions easily and working on them efficiently. Manual Testing Q&A What is Manual Testing? Manual testing is the method used to check a software for defects manually. But. there are test cases written. the tester has a test plan. Normally. cost overruns. Testers play a vital role in this. Though it is difficult to measure such an abstract constraint. controlling and improvement of the software system. All the features of a software are tested to know. How can the under developed code be improved?. 2. Here is where change management comes into picture. This gives rise to the development of newer and updated versions of software. when the software is under development and after the system is ready for use. in identifying where the problem has raised.

under which all the software testing activities are carried out. when bigger chunks of codes are integrated to form a bigger block of code. which are used. They are: • • • White Box Testing Strategy Black Box Testing Strategy Gray Box Testing Strategy There are other types of software testing. which are used to test the product to ensure that the software meets the requirements of the end user. the software also goes through the software testing life cycle. Either black box or white box testing is carried out in this phase. It is the job of the developer to test the units of the code written by the developer himself.Load Testing and Stress Testing Testing is a process of gathering information by making observations and comparing them to expectations. In this phase. The different phases in the software testing life cycle are: • • • • • • • • • • Requirement Phase Test Planning Phase Test Analysis Phase Test Design Phase Test Verification and Construction Phase Test Execution Phase Result Analysis Phase Bug Tracking and Reporting Phase Rework Phase Final Test and Implementation Phase Software Testing Strategy There are three software testing types. the code may also be tested by a peer. – Dale Emery . The next phase is the system testing phase.The entire process of manual testing goes through four phases. Normally black box testing technique is used in the system testing phase. It is often seen that the software testing interview questions and answers revolve a lot around the software testing life cycle. Integration testing is the second phase of software testing. Software Testing Life Cycle Like the software development life cycle. In some cases. The software is tested for all possibilities to rule out any kind of abnormality in the system. There are two types of acceptance testing. the software is tested keeping the end user in mind. User acceptance testing is per say the last stage of manual testing. The first phase is called as unit testing. It is carried out. They include: • • • • • • • • • • • Functional Testing Smoke Testing Usability Testing Validation Testing Compatibility Testing Sanity Testing Exploratory Testing Security Testing Regression Testing Recovery Testing Performance Testing (This includes 2 sub-types . namely alpha testing and beta testing.

but also to check whether the program is behaving according to the given specifications and testing strategies. we test the pen before actually purchasing it i. So. though its the software. etc. before executing it. To determine the true functionality of the application being tested. Software testing includes two basic types of software testing. This model contains software development life cycle on one side and software testing life cycle on the other hand side. pens. test cases are designed to help the developers.e Verification and Validation Model is a perfect model which is used in the improvement of the software project. The list goes on as we move on towards different layers of testing. does it break if it falls. There are various types of software testing strategies such as white box testing strategy. • • Manual Scripted Testing: This is considered to be one of the oldest type of software testing methods. executing test cases. Test cases provide you with the guidelines for going through the process of testing the software. when we go out. black box testing strategy. which needs to be fixed. Manual Scripted Testing and Automated Testing. grey box software testing strategy. For example. Checklists for software tester sets a baseline that guides him to carry on the day-to-day activities. Those who are new to this subject. does it work in extreme climatic conditions. testing turns to be mandatory. Automated Testing: This software testing type applies automation in the testing. etc.In our day-to-day life. explains the contents of a bug that is to be fixed. clothes. Other Software Testing Types Software testing life cycle is the process that explains the flow of the tests that are to be carried on each step of software testing of the product. Security Testing is done to detect bugs/defects in the security of the system. It is the process of analyzing or operating software for the purpose of finding bugs. depends upon different types of defects. Black Box Testing It explains the process of giving the input to the system and checking the output. Types of Software Testing Various software testing methodologies guide you through the consecutive software testing types. which can be applied to various parts of a software process such as test case management. when we intend to buy a pen.how to go about for beginners. What is Software Testing? Software Testing is a process of verifying and validating whether the program is performing correctly with no bugs. if its writing.e. This can be done with the help of various bug tracking tools such as Bugzilla and defect tracking management tools like the Test Director. here is some information on software testing . Software bug testing or software testing to log a bug. For example: • • • • Functional testing is done to detect functional defects in a system. Need of Software Testing Types Types of Software Testing. The V. hardware or any product. reporting of the bugs/defects. shopping any product such as vegetable. in which test cases are designed and reviewed by the team. viz. The bug life cycle helps the tester in deciding how to log a bug and also guides the developer to decide on the priority of the bug depending upon the severity of logging it. etc.Model i. Performance Testing is performed to detect defects when the system does not perform according to the specifications Usability Testing to detect usability defects in the system. Testing not only means fixing the bug in the code. defect management. without . It also helps to identify the defects / flaws / errors that may appear in the application code. we do check it before purchasing them for our satisfaction and to get maximum benefits.

This type of software testing is also called as Narrow Regression Testing. Configuration Testing: This testing is done to test for compatibility issues. Stress Testing : In this type of performance testing. Functional Testing: In this type of testing. with various combinations of hardware and software packages. it checks whether the application is ready for further major testing and working. that is internally or externally applied to the system. the system is raised beyond the limits in order to check the performance of the system when higher loads are applied. Read more on introduction to usability testing. Smoke Testing: Smoke testing is used to check the testability of the application. Installation Testing: This type of software testing identifies the ways in which installation procedure leads to incorrect results. disk drives and CPU. Manual-Support Testing: This type of software testing is an interface between people and application system. Inter-Systems Testing: This type of software testing method is an interface between two or more . 2. Load Testing : In this type of performance testing. according to the user's requirements. Testing is done by re-executing the previous versions of the application. the system is tested beyond the normal expectations or operational capacity Usability Testing: This type of testing is also called as 'Testing for User Friendliness'. procedures and guidelines. It is also called 'Build Verification Testing or Link Testing'. Error-Handling Testing: This software testing type determines the ability of the system to properly process erroneous transactions. Parallel Testing: Parallel testing is done by comparing results from two different systems like old vs new or manual vs automated. and determines the effect of adding or modifying resources such as memory. the software is tested for the functional requirements. catastrophic problems or any type of system crash. This checks whether the application is behaving according to the specification. It is also called as Behavioral Testing. Regression Testing: Regression testing is one of the most important types of testing.considering how the system generates the output. That means. without dealing with the finer details. 1. Performance testing depends upon the Load and Stress Testing. Read more on compatibility testing. Sanity Testing: Sanity testing checks for the behavior of the system. Recovery Testing: Recovery testing is very necessary to check how fast the system is able to recover against any hardware failure. Compliance Testing: This type of testing checks whether the system was developed in accordance with standards. It determines minimal and optimal configuration of hardware and software. in which it checks whether a small change in any component of the application does not affect the unchanged components. Compatibility Testing: Compatibility Testing determines if an application under supported configurations perform as expected. Performance Testing: This type of testing checks whether the system is performing properly. This testing checks the ease of use of an application.

each and every condition is executed by making it true and false. Static and Dynamic Analysis: In static analysis. This testing is done after system testing. while performing these tests. Condition Coverage: In this type of software testing. Statement Coverage: This type of testing assures that the code is executed in such a way that every statement of the application is executed at least once. 2. 1. Alpha Testing: Alpha testing is performed at the developer's site by the customer in a closed environment. White Box Testing It is the process of giving the input to the system and checking. is not mandatory.application systems. Exploratory Testing: Exploratory Testing is a type of software testing. and is performed to explore the software features. Volume Testing: This testing is done. Beta Testing: This type of software testing is done at the customer's site by the customer in the open environment. The user should be able to use the application. Unit Testing: This type of testing is done at the developer's site to check whether a particular piece/unit of code is working fine. This type of software testing validates that the system meets its functional and non-functional requirements and is also intended to test beyond the bounds defined in the software/hardware requirement specifications. User Acceptance Testing: Acceptence Testing is performed to verify that the product is acceptable to the customer and it's fulfilling the specified requirements of that customer. how user-friendly the application is. when huge amount of data is processed through the application. Decision Coverage: This type of testing helps in making decision by executing the application. User Interface Testing: This type of testing is performed to check. which is similar to ad-hoc testing. Whereas. The presence of the developer. it is required to go through the code in order to find out any possible defect in the code. to evaluate the system's compliance with the specified requirements. Read more on exploratory testing. to generate the output. Unit testing deals with testing the unit as a whole. It is mandatory for a tester to have the knowledge of the source code. without any assistance by the system personnel. Path Coverage: Each and every path within the code is executed at least once to get a full path coverage. which is one of the important parts of the white box testing. This testing includes Alpha and Beta testing. in each of the ways at least once. how the system processes the input. in dynamic analysis the code is executed and analyzed for the output. . rather than artificial combinations that are obtained through domain or combinatorial test design. Scenario Testing: This type of software testing provides a more realistic and meaningful combination of functions. integrated system. System Testing: System testing is the testing conducted on a complete. This is considered to be the last step in the software development life cycle as the product is almost ready. at least once to judge whether it results in true or false.

Bottom-Up Integration Testing: In this type of integration testing. Mutation Testing: In this type of software testing. Integration testing is further classified into Bottom-Up Integration and Top-Down Integration testing. Software testing is indeed a vast subject and one can make a successful carrier in this field. Read more on brief introduction to security testing. to prepare yourself for some software testing tutorials. before it is released to the end user for use.Integration Testing: Integration testing is performed when various modules are integrated with each other to form a sub-system or a system. components are tested first and then alleviate the testing of higher level components using 'Drivers'. Top-Down Integration Testing: This is totally opposite to bottom-up approach. You could go through some software testing interview questions. or willful damage of code. The phases in the bug life cycle are: • • • • • • • • • • • New Open Assign Test Deferred Rejected Duplicate Verified Reopened Closed For further information on bug life cycle. 1. the lowest level 2. Specification based testing techniques. Equivalence partitioning is one of the important strategy used in specification based testing technique. using the above mentioned software testing types. which come under static testing techniques. This mostly focuses in the design and construction of the software architecture. Software review and static analysis by using tools are the methods. These various software testing methods show you the outputs. the application is tested for the code that was modified after fixing a particular bug/defect. you may want to read on: . Security Testing: Testing that confirms. means security testing of the system. The bug life cycles starts after the tester logs a bug. Bug Life Cycle The aim of the entire software testing activity is to find defects in the software. Software Testing Techniques The software testing methodologies are divided into static testing techniques and dynamic testing techniques. as it tests the top level modules are tested and the branch of the module are tested step by step using 'Stubs' until the related module comes to an end. Security testing assures that the program is accessed by the authorized personnel only. Software testing methodologies and different software testing strategies help to get through this software testing process. and helps you check if the software satisfies the requirement of the customer. how well a system protects itself against unauthorized internal or external. Take a look at the article titled ‘software testing technique’ for detailed information. structure based testing techniques and experience based testing techniques are all included under dynamic testing technique.

the work product (the ready part of the Software being developed and various documentations) is reviewed/examined personally by one ore more persons in order to find and point out the defects in it.’ ‘A right product is developed in a right manner’. as they are based on different principles. Walkthroughs: . ‘Verification & Validation Model’ makes it sure that. which incorporates Software inspections. buddy checks etc. before a particular model is chosen. certain rules are followed at the time of development of a software product and product that is developed fulfills the required specifications. This process helps in prevention of potential bugs. which are unknowingly done during the development process. reviews. which may cause in failure of the project. which helps the system designers and test engineers to confirm that a right product is build right way throughout the development process and improve the quality of the software product.• • Bug and Statuses Used During a Bug Life Cycle Contents of a Bug Software Testing Models (Methodologies) There are different software testing models. The Verification part of ‘Verification and Validation Model’ comes before Validation. Verification is a process that makes it sure that the software product is developed the right way. The different models that are used are: • • • • • • Waterfall Model in Testing Validation and Verification Model Spiral Model Rational Unified Process (RUP) Model Agile Model Rapid Application Development (RAD) Model Validation and Verification Model ‘Software Verification & Validation’ is one such model. which the software testing team can choose from. walkthroughs. The work product and related documents are presented in front of the inspection team. led by a leader. in each phase of verification (every phase of Verification is a phase of the Testing Life Cycle) During the Verification. What is Verification? The standard definition of Verification goes like this: "Are we building the product RIGHT?" i.e. The software should confirm to its predefined specifications. The bugs that are detected during the inspection are communicated to the next level in order to take care of them. as the product development goes through different stages. audits. Methods and techniques used in the Verification and Validation shall be designed carefully. the member of which carry different interpretations of the presentation. Each of these models have different methods. an analysis is done to ensure that all required specifications are met. which formally reviews the documents and work product during various phases of the product development life cycle. This reduces the risk associated with any software project up to certain level by helping in detection and correction of errors and mistakes. the planning of which starts right from the beginning of the development process. A number of factors are taken into consideration. Few terms involved in Verification: Inspection: Inspection involves a team of about 3-6 people.

they are used for knowledge sharing or communication purpose.An Introduction What is Validation? Validation is a process of finding out if the product being built is right? i. it should satisfy all the functional requirements set by the user. Validation and Verification processes go hand in hand. is verified! Software Verification & Validation Model .e. to find out bugs which the author couldn’t find previously. Buddy Checks: This is the simplest type of review activity used to find out bugs in a work product during the verification. During the walkthrough meeting. the presenter/author introduces the material to all the participants in order to make them familiar with it. Functional design verification. internal/system design verification and code verification (these phases can also subdivided further). In buddy check. Validation is done during or at the end of the development process in order to determine whether the product satisfies specified requirements. whatever the software product is being developed. The software product should functionally do what it is supposed to.e. but visibly Validation process starts after Verification process ends (after coding of the product ends). Even when the walkthroughs can help in finding potential bugs. design code etc.Walkthrough can be considered same as inspection without formal preparation (of any presentation or documentations). Each Verification activity (such as . Each activity makes it sure that the product is developed right way and every requirement. one person goes through the documents prepared by another person in order to find out if that person has made mistake(s) i. The activities involved in Verification process are: Requirement Specification verification. every specification. it should do what the user expects it to do.

which the developers conduct in order to find out any bug in the code unit/module developed by them. Functional design Verification etc. As the user/paid testers use the software. Test plan. It is among the first few models to be introduced in software development. System/Integration Validation etc. test suits and test cases are developed. User Acceptance Testing or System Validation: In this type of testing. the developed product is handed over to the user/paid testers in order to test it in real time scenario. where the changes to the model after the phase in the waterfall model life cycle has passed often prove to be very costly. The phases involved in Validation process are: Code Validation/Testing. Waterfall Model In software engineering. It uses linear and sequential approach in software design as well as development. We will read about waterfall model as well as about the advantages and disadvantages of this model now. Like every other software development model. This model was adapted initially for software development. Code Validation/Testing. This helps in improvement of the final product. similar to that of a waterfall. Functional Validation/Functional Testing. In this type of testing. and System/User Acceptance Testing/Validation.). which are used during the various phases of Validation process. The progress of the software is steady downward flow. Integration Validation/Integration Testing. This test helps in finding out if there is any defect in the interface between different modules. All types of testing methods are basically carried out during the Validation process.) has its corresponding Validation activity (such as Functional Validation/Testing. it checks if the system behaves as per the expectations. Waterfall model is one of the model. the system is validated for its functional behavior. Terms used in Validation process: Code Validation/Testing: Developers as well as testers do the code validation. When a software has to be developed it is not uncommon to see that there is debate between the different models. come up. The phases in the waterfall model in software engineering are looked upon as separate process in . This model originated in the manufacturing and construction industry. The product is validated to find out if it works according to the system specifications and satisfies all the user requirements. It flows a highly structured pattern. in stead. Integration Validation/Testing: Integration testing is carried out in order to find out if different (two or more) units/modules coordinate properly. which can be used for developing the software. There are advantages as well as disadvantages of using this model for software development. which is often used for software development. What is the Waterfall Model in Software Engineering? Waterfall model uses the classic approach towards software development. it may happen that bugs that are yet undiscovered. Unit Code Validation or Unit Testing is a type of testing. which are communicated to the developers to be fixed. It is a classic software development model. as no other model was available at that time. this model has a set path which is followed. there are a number of development models used. Functional testing does not deal with internal coding of the project. while developing a software.Requirement Specification Verification. Code testing other than Unit Testing can be done by testers or developers. Functional Validation/Testing: This type of testing is carried out in order to find if the system meets the functional requirements.

Often there are problems. the problems have to be rectified. There is strict division of work between the different phases of the model. Sometimes. Delivery and Maintenance Phase After the software is working as per the specifications of the end user. the system is ready for delivery. The software development team is liable to rectify the problems in the system for a certain period of time. we will move forward to know the positives and negatives of using the waterfall model for software development. This tests helps in identifying the problems created after the entire system has been integrated. Requirement Specification and Analysis Phase This is the first phase in the waterfall software development model. additional features may also have to be added to the system. that there are different phases in waterfall model in software engineering. It is not uncommon to see that a particular module has created a problem for other module or modules. Once the test results are positive. We will now see how waterfall model SDLC progresses. Once the entire system has been integrated. which helps in assessing if the requirements can be incorporated in the system. In some cases. When the problems arise. System Integration After all the modules of the software have been developed and unit tested. The software is delivered to the end user. Along with the software requirements. which was created after the answer to the question ‘what’ from the previous phase found. It is here that the verification is carried out to know if the system works as per the specifications of the end user. Implementation The third phase in the waterfall model diagram is the implementation phase. the system integration phase starts. At the end of the phase. there is no going back to the phase. In short the entire system architecture is chalked out. which arise after the end user starts using the system. There is unit testing carried out after the particular module has been developed as well.itself. The specifications of the system are taken into consideration and on the basis of the study of the specification the system design is made. After the phase is over. so that the chances of the system going wrong are minimized. The waterfall model examples prove to be of immense help in understanding the model better. In this phase the actual software is developed. Design Phase This is one of the important waterfall model phases. If this phase has to be summed up in one line. There are waterfall model . as the problems in the system are identified early into the software development phase. This document is like a guide to the next phases of the model. after the system has been deployed. requirement specification document is made. the hardware requirements and the other system requirements are also decided in this phase. Waterfall Model Advantages and Disadvantages Now that the the waterfall model is explained. In this phase it is important that the purpose of the system and the target audience be taken into consideration. It is in this phase that all the requirements from the user are captured. In this phase the software to be developed is designed. Analysis of the requirements is carried out to find out the possibility and validity of the requirements. Waterfall Model Life Cycle I have previously mentioned. the process moves to the next step. the problems in the system are seen after substantial amount of time. system testing is carried out. Carrying out the tests in this phase often proves to be beneficial. we can say that this phase provides the answer to the question ‘how’. The different functionality required along with the constraints are also taken into consideration in this phase.

one can not go back to the previous stage. In case of any mistake. there are certain disadvantages of the model as well. namely the planning stage. while the system is been developed. testing and documenting stage and at last the deployment and maintenance stage. Waterfall Model Advantages It is the advantages of using the waterfall model. agile development. iterative and incremental development model. etc. urgency level. which can be used to develop a software. the project. depending on the team. as he was not really sure about the flow of the software. Whichever model be chosen for software development. Therefore. Designing and implementing the model is easier and simpler also because of the fact that the documentation work is carried out in the early phase of the software development life cycle itself. This model follows the linear pattern in development. spiral life cycle model. due to which arises the waterfall model vs agile debate as well. any changes introduced in the middle of the software development leads to a number of problems. After the units are created there is testing carried out. Therefore. This often leads to a number of complications in the implementation phase. that the client makes changes to the requirements.advantages and disadvantages. The resources required to implement the model are on the minimal side. Waterfall Model Disadvantages Every coin has two sides. the steps are broadly divided into three stages. availability of the resources. . which can be used in the software development life cycle. therefore some people choose to opt for other models. The order in which the software goes through the model may vary. due to which the model has sustained itself even after a number of software development models have been introduced. etc. In this model a loop was added to the previous stage due to which making changes to the system became more convenient. Therefore. It is not uncommon to see waterfall model in testing as well. like waterfall model. as there are advantages of the waterfall model. After taking the drawbacks of the waterfall model into consideration. One of the commonly used model is the agile model. Each of the models. depending on the needs of the project. The most important advantage of this model is that it is simple and easy to implement. which helps in eradicating the number of bugs in the system. In each of the models. There is also a possibility of number of models been combined together. has its own pros and cons. The other disadvantage which deters a lot of people from using the model is that a working software is not ready till one reaches the last stage of development. So that one can go back to the previous stag. came the modified waterfall model into existence. therefore there is no chaos. There are a number of models. Spiral Model Software development process is a structured process of developing a software. The most important disadvantage of this model is that it is compartmentalized. the modified waterfall model came into existence. the software in the end has to go through these stages. the model to be adopted is chosen by the development team. implementation. There is also a possibility.

This is due to the fact. as well as prototyping in stages. the requirement is perfected to the last details. This is said to be the most important step of the spiral model. the activities of software development in this model are organized like a spiral. In this step. Due to which it can reap the advantages of both top down as well as bottom up approach as well. it was the first model. The spiral model used in software engineering combines the features of the waterfall model and the prototyping model. The spiral life cycle model combines the elements of both design. It is often used for large. which explained the importance of iteration in software development. who represent the external and/or internal users of the proposed system. Although this model did not come up with the iterative approach in software development.Spiral Life Cycle Model Spiral Life Cycle Model The definition of spiral model was made by Barry Boehm in his article ‘A Spiral Model of Software Development and Enhancement’ in 1986. the key characteristics of this model is risk management at regular stages in the entire software development cycle. by interviewing a number of users. expensive and complicated projects. The different aspects of the system are also found out in this step. a preliminary design is made of the proposed system. After the system definition is made. An analysis is carried out of • . The steps in the spiral model are generalized as follows: • The very first step in this life cycle model is detailed system requirement definition. Like the name suggests.

The methods to resolve them are also determined immediately. The success of the project is highly dependent on the risk analysis phase of the life cycle model. weakness and risks. The first prototype is evaluated to make the second prototype. is the process. However. till the entire system is ready. etc. After the analysis.Advantages and Disadvantages Every software development model has its own strengths and weaknesses. They include the waterfall model. the issues are addressed early in the project and the total cost of the project is also lowered. incremental model. Then comes the planning and designing of the second prototype. which represents an approximation of the final product. Disadvantages of Spiral Model of Software Development High cost involved in using this model can be called as a deterrent in using this software development model. The other type of application.• • • • all the possible as well as available alternatives are searched for. It may not prove to be useful for smaller projects. There are different models. spiral model. Along with it the strategies to implement the alternatives are also decided upon. It helps because the size of the project is often times large and the project has constantly shifting goals of these large projects. The spiral life cycle model proves to be beneficial for projects. prototyping is used to make way with the available data and find out the solution to be able to deal with any potential changes. It proves beneficial to run a series of risk reduction iterations. The evaluation is made on terms of strengths. The characteristics of the first prototype and the final version similar to one another up to a large extent. In case of any problems. the first prototype is made using the preliminary design. to develop a cost effective system. which have been used to develop software. The term ‘software development’. Then the requirements for the second prototype are defined. designing the software through to the final development of the software. Accordingly the phases keep going in spirals. where this model is used. is for game development. What is Agile Model? . The bugs from the previous prototype are fixed in the next prototype. followed by constructing and testing of the second prototype. Spiral Model . agile model. prototype model. which may not be forthcoming all the time. It is a good model to be used for large and mission critical projects. Advantages of Spiral Model of Software Development The most important advantage of this model is the high amount of risk analysis. due to which the project does not face too many problems towards the end of the project. The software is actually made early in the life cycle. which are mission critical and have risky elements in it. it needs highly specific expertise. which point to uncertainty in the requirements. which may come about in the requirements. In case of any risks. which is then handed over to the client. When the risk analysis is carried out. but a scaled down version. Same is the case with the spiral model of software development as well. which involves writing and maintaining the code used to develop a software. All the possible risks in the project are also identified in the same phase. Agile Model Software development uses a planned and structured process to develop software products. often the process of software development includes the idea of the software. It is not a full version.

The term agile stands for ‘moving quickly’. The measure of progress used in agile modeling is the different working models delivered to the client. chances of the project going off the track easily are much more. which were famous for been heavily regulated. Traditional modeling methods in software development projects have given way to these practices which are applied in a more flexible manner. as the requirements keep coming from the business people at regular intervals. This ensures that the efforts of the development team are not wasted. Disadvantages of Agile Model If the projects are smaller projects. let’s turn our attention to know. which is laid on designing and documentation. It supplements the different agile methodologies like extreme programming. where does the agile model score over the other models of software development and what are the shortcomings of the agile model. Therefore. The software development team has to adapt regularly to the changing circumstances. There is a lot of emphasis laid on technical excellence and good design of the software. Since the requirements are ever changing. micromanaged. but the focus is rather on conducting the tests iteratively on the newly . which leaves hardly any place for newbie programmers. The delivery of the software happens at regular intervals as opposed to after a number of months. which saves trouble later. Agile modeling is a methodology. It is a lightweight software development model. Agile model testing is carried out from the perspective of the end user. changes can easily be introduced into the software product. Since the software is developed in small batches. Advantages of Agile Model The most important of the advantages of agile model is the ability to respond to the changing requirements of the project. but if it is a large project. The documents are to the point. This model was developed against the background of the heavyweight models. which makes use of practice for modeling and documentation of software based systems. there is hardly any emphasis. which developed in the 1990’s. The changes are integrated immediately. There is no guesswork between the development team and the customer. then the project going off track increase manifold. which no leaves no space for ambiguity. There were certain principles on which the agile model was to be based. There is a lot of scope for cooperation between the business people and the developers. Only senior developers are in a better position to take the decisions necessary for the agile type of development. which is the case with the waterfall model. which is often the case with the other methodologies. but also for software testing. The requirements and the solutions are a product of collaboration between self organizing and cross functional teams. regimented. The added problem is if the customer representative is not sure. which is laid on the rigid testing procedures. This software development methodology is based on iterative and incremental model of software development. then using the agile model is certainly profitable. This is the point where in the waterfall model vs agile debate the agile model scores over the waterfall model. Agile Model Advantages and Disadvantages After having understood the agile model. There is no emphasis. Agile Model in Software Testing Agile model is not only used in software development. until it is combined with the seniors resources. as there is face to face communication and continuous inputs from the client. agile unified process and scrum models. The most important of the principles is customer satisfaction by giving rapid and continuous delivery of small and useful software. The culmination of this is that a high quality software is delivered to the client in the shortest period of time and leaves the customer satisfied. then it becomes difficult to judge the efforts and the time required for the project in the software development life cycle.

In the agile testing model. the focus shifts from ‘testers as quality watchdog’ to ‘the entire team quality watchdog’. the principle ‘maximize stakeholder value’ can actually be put into practice. As the name of the testing methodology suggests. as well as regression tests are carried out on the entire software to check if any new bugs were introduced into the software. rather than after the development has come to the final stages. they give the necessary information. In this software testing type. Because the testers are involved early on in the entire process of software development. Therefore. the testers have to adapt themselves to rapid development cycles and make the required changes to the test suite. Agile model has given the software development process an effective and practice based methodology. feedback and suggestions to the development team. leaving the customer satisfied and happy . the aim is to test from the perspective of the customer as early as possible in the development process.developed software component.