You are on page 1of 2


Programming methods includes a number of features that allow us to select among alternative pathways, or to repeat the execution of a particular block of statements. For example, we can choose to execute one of several different blocks of statements, depending on the value of an expression. This process is known as selection. Or, we can choose one of two different paths, depending on the outcome of a logical test (i.e., depending whether a logical expression is true or false). This process is known as branching

Many programs require that a group of instructions be executed repeatedly, until some particular condition has been satisfied. This process is known as Looping. Sometimes the number of passes through the loop will be known in advance (Unconditional looping). In other situations the looping action will continue indefinitely, until some logical condition has been satisfied (conditional looping) Software testing discipline The effective functioning of modern systems depends on our ability to produce software in a cost-effective way. The term software engineering was first used at a 1968 NATO workshop in West Germany. It focused on the growing software crisis! Thus we see that the software crisis on quality, reliability, high costs etc. started way back when most of todays software testers were not even born! The attitude towards Software Testing underwent a major positive change in the recent years. In the 1950s when Machine languages were used, testing is nothing but debugging. When in the 1960s, compilers were developed, testing started to be considered a separate activity from debugging. In the 1970s when the software engineering concepts were introduced, software testing began to evolve as a technical discipline. Over the last two decades there has been an increased focus on better, faster and cost-effective software. Also there has been a growing interest in software safety, protection and security and hence an increased acceptance of testing as a technical discipline and also a career choice!. Now to answer, What is Testing? we can go by the famous definition of Myers, which says, Testing is the process of executing a program with the intent of finding errors S o f t w a r e T e s t i n g L i f e cycle Every testing project has to follow the waterfall model of the testing process. The waterfall model is as given below1.Test Strategy & Planning2.Test Design3.Test Environment setup4.Test Execution5.Defect Analysis & Tracking6.Final Reporting According to the respective projects, the scope of testing can be tailored, but the process mentioned above is common to any testing activity. Software Testing has been accepted as a separate discipline to the extent that there is a separate life cycle for the testing activity. Involving software testing in all phases of the Software development life cycle has become a necessity as part of the software quality assurance process. Right from the Requirements study till the implementation, there needs to be

testing done on every phase. The V-Model of the Software Testing Life Cycle along with the Software Development Life cycle given below indicates the various phases or levels of testing.

Recursion in computer science is a method where the solution to a problem depends on solutions to smaller instances of the same problem. The approach can be applied to many types of problems, and is one of the central ideas of computer science. "The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions." Most computer programming languages support recursion by allowing a function to call itself within the program text. Some functional programming languages do not define any looping constructs but rely solely on recursion to repeatedly call code. Computability theory has proven]that these recursive-only languages are mathematically equivalent to the imperative languages, meaning they can solve the same kinds of problems even without the typical control structures like while and for.