You are on page 1of 6

08.804 08.

804 SOFTWARE TESTING L-T-P: 2 1 0 Credits: 3


MODULE I (13 hours) Characteristics of Software Software Development process Software quality Mana gement Processes related to software quality - Fundamentals of Software Testing Principle s of Software Testing Struc tured approach to Testing - Developing Testing methodologies Levels of Testing Acceptance Testing Special Tests T esting Tools. MODULE II (13 hours) Test planning - Test strate gy Test plan templates (System testing) Guidelines for developing test plan - Test Estimation Test standards Building Test data and Test cases -Test Scenario Test Scripts - Tools used to build test data testing object orie nted software T esting web applications. MODULE III (13 hours) Test metrics and Test reports categories of the product/project test metrics Resources consumed in Testing Effectiveness of testing defect density defect leakage ratio residual defect density test team efficiency test case e fficiency - test reports Integration test reports System Test report acceptance test report - guidelines for writing and using test report - final test reporting test status report - benc hmarking. Text Books : 1. Software Testing, Principles , Techniques and Tools - M G Limaye, TMHB 2. Introducing Software Testing - Louise Tamres, Pearson 1 References : 1. Software Testing - Effective methods, Tools and Techniques - Renu Rajani, Pradeep Oak, TMH 2. The Art of Software Testing - Gl enford J. Myers, Wiley 3. Software Testing Fundamentals Methods and Metrics -Marnie L Hutcheson, Wiley 4. Effecti ve Software Testing, 50 Specific Ways to Improve Your Testing - Elfriede Dustin Pearson



Characteristics of Software
Software is often the single largest cost item in a computer-based application. Though software is a product, it is different from other physical products. i. ii. iii. iv. v. vi. vii. Software costs are concentrated in engineering (analysis and design) and not in production. Cost of software is not dependent on volume of production. Software does not wear out (in the physical sense). Software has no replacement (spare) parts. Software maintenance is a difficult problem and is very different from hardware (physical product) maintenance. Most software are custom-built. Many legal issues are involved (e.g. intellectual property rights, liability).

As stated earlier, commercial software are generally different from computer programs written for academic or research purposes. The characteristics of real-world software are given in Box 1.1. Development of software is also different in some way from building a physical object such as a bridge, house or factory. Problems solved with software solutions are complex. Finding solutions requires some ingenuity and good planning. The progress made in a software project is not visible to the eyes as in the case of other projects. Due to the uncertainty and uniqueness of each project, it is difficult to estimate project duration and cost accurately. During the course of a project, there can be changes in the requirements and environment. Since software is not a physical product and its development is not visible to the eyes, customers often feel no compunction to put pressure for incorporating some changes at the last minute. There is no universal method for software development that can be followed in all situations. The method used in a well-managed software project may not be suitable for a similar project when the project size is different. However, keeping in view the above characteristics of software, some systematic approaches, engineering principles, tools and techniques have been devised to produce quality software within time and resource constraints.

Box 1.1: Characteristics of real-world software

It is generally developed by software firms for their clients under formal business contracts. Like any product, software is designed based on some software specification. It is usually developed in teams and not by individuals. It generally includes clear and detailed documentation (i.e. design manual and users' manual). It is meant for users who need not have good knowledge of computers.



It generally has user-friendly interfaces so that users having limited expertise in computers can operate the system. Generally. software is designed to be run on different platforms. It has a lifetime in years, after which it becomes obsolete. Hence, software is designed keeping its intended life and cost in view. It generally requires some modification from time to time to accommodate changes taking place in the organization and the environment. It is developed under formalized product reviews (quality assurance) and formalized testing procedures. The cost of software failure may amount to an economic catastrophe. Hence, software is designed for utmost reliability. A computer system is prone to misuse or sabotage by persons having ulterior motives from within or from outside the organization. Hence, software is designed to be tamper-proof and protected from misuse or damage. Ethical issues (like protecting privacy) are also taken into consideration in designing software.


This chapter describes the type of work involved in software development. It covers the following topics:

Software processes Software development life cycle models Description of some popular models Process standards

After going through this chapter a reader will get an idea as to how software is created in practice.

Development of commercial software requires a great amount of effort, time and money. Different types of activities are required to be performed for development of software. Software development also involves people and their management. Hence, software development can be considered as a project. A successful project is one that satisfies the expectations of three major goals, viz., (1) low cost, (2) completion on schedule and (3) quality. According to software engineering principles, if the process for development of any software is right, the chance of success of the software project is greatly increased. Hence, software projects utilize some standard and proven processes for organization and execution of tasks to achieve these goals.

Software Development process




A software development process is a structure imposed on the development of a software product. There are several models that describe the approaches or the way different tasks are done during the software development process. These models are called "software development process" models. In the physical sense, software does not wear out. It has no replacement (spare) parts. However, still the software has a lifespan. The system for which the software is made and the system's environment is never static. These keep changing due to developments in technology and market conditions. When the system is changed significantly, it may not be possible to update or maintain the software any longer. Hence, the software may be considered to have lived its lifespan. This kicks off development of new software and this cycle continues. Hence, software development process models are also popularly called as "software development life cycle (SDLC)" models.

The waterfall model proposed in 1970 is a traditional model for software development. It is a sequential process model. According to this model the software development project is executed in some steps or phases. The phases of software development process are as under. 1. 2. 3. 4. 5. 6. System engineering Requirement analysis Design Implementation or coding Verification or testing Maintenance


The "V" model is a recognized standard for development of IT systems. It lays down what is to be done, how it is to be done and what tools are to be used to develop an IT solution. Hence, accordingly, there are three levels of the "V" model.

Software lifecycle process model Methods to be used Tool requirements


The users generally have a general view of what is expected from the software product. They are able to tell the general objectives of the project but not the detailed requirements such as various inputs, processing needs and output. It is up to the software developers to extract the necessary information required for software development. Sometimes there is a communication gap between the users and the software developers because of differences in their professional



background. This problem is solved by the prototype model. When a prototype design is shown to the users, they are able to point out defects and offer suggestions for improvement. The prototype model allows the users to interact and experiment with a working representation of the product and thus it increases the flexibility of the development process. By seeing the prototype model, the users are better able to realize what the real system will be like. The prototype is refined till the users are reasonably satisfied. From this, the software developers are able to develop software that fulfils the real needs of the users. There are basically two main approaches to prototyping models.

The waterfall model was widely adopted in the early days of software development. However, it is intrinsically flawed. It is very rare that requirement analysis can be entirely completed before design and design before development and so on. The shortcomings of this model became apparent and other versions of the waterfall model called the iterative waterfall model have been developed.

The spiral model was proposed by Barry Boehm in 1988. It is an iterative model. It uses iterative cycles for software development. Each cycle consists of four steps.
1. Planning 2. Risk analysis 3. Engineering 4. Validation Determining objectives, alternatives and constraints Evaluating alternatives, identifying and resolving risks Developing and verifying the "next level" product Evaluating the customer/assessing the results and suggesting modifications

Software quality Mana gement Processes related to software quality Fundamentals of Software Testing Principle s of Software Testing Struc tured approach to Testing Developing Testing methodologies Levels of Testing Acceptance Testing Special Tests T esting Tools.