Thursday, January 15, 2009

MY First Testing Post is- What is Software Testing and Why is it Important?

A brief history of Software engineering and the SDLC.

The software industry has evolved through 4 eras, 50’s –60’s, mid 60’s –late 70’s, mid 70’s- mid 80’s, and mid 80’s-present. Each era has its own distinctive

characteristics, but over the years the software’s have increased in size and complexity. Several problems are common to almost all of the eras and are discussed

below.
The Software Crisis dates back to the 1960’s when the primary reasons for this situation were less than acceptable software engineering practices. In the early

stages of software there was a lot of interest in computers, a lot of code written but no established standards. Then in early 70’s a lot of computer programs started

failing and people lost confidence and thus an industry crisis was declared. Various reasons leading to the crisis included:
q Hardware advances outpacing the ability to build software for this hardware.
q The ability to build in pace with the demands.
q Increasing dependency on software’s
q Struggle to build reliable and high quality software
q Poor design and inadequate resources.

This crisis though identified in the early years, exists to date and we have examples of software failures around the world. Software is basically considered a failure if

the project is terminated because of costs or overrun schedules, if the project has experienced overruns in excess of 50% of the original or if the software results in

client lawsuits. Some examples of failures include failure of Air traffic control systems, failure of medical software, and failure in telecommunication software. The

primary reason for these failures other than those mentioned above is due to bad software engineering practices adopted. Some of the worst software practices

include:
q No historical software-measurement data.
q Rejection of accurate cost estimates.
q Failure to use automated estimating and planning tools.
q Excessive, irrational schedule pressure and creep in user requirements.
q Failure to monitor progress and to perform risk management.
q Failure to use design reviews and code inspections.

To avoid these failures and thus improve the record, what is needed is a better understanding of the process, better estimation techniques for cost time and quality

measures. But the question is what a process is? Process transform inputs to outputs i.e. a product. A software process is a set of activities, methods and practices

involving transformation that people use to develop and maintain software.
At present a large number of problems exist due to a chaotic software process and the occasional success depends on individual efforts. Therefore to be able to

deliver successful software projects, a focus on the process is essential since a focus on the product alone is likely to miss the scalability issues and improvements in

the existing system. This focus would help in the predictability of outcomes, project trends, and project characteristics.
The process that has been defined and adopted needs to be managed well and thus process management comes into play. Process management is concerned with

the knowledge and management of the software process, its technical aspects and also ensures that the processes are being followed as expected and improvements

are shown.

From this we conclude that a set of defined processes can possibly save us from software project failures. But it is nonetheless important to note that the process

alone cannot help us avoid all the problems, because with varying circumstances the need varies and the process has to be adaptive to these varying needs.

Importance needs to be given to the human aspect of software development since that alone can have a lot of impact on the results, and effective cost and time

estimations may go totally waste if the human resources are not planned and managed effectively. Secondly, the reasons mentioned related to the software

engineering principles may be resolved when the needs are correctly identified. Correct identification would then make it easier to identify the best practices that can

be applied because one process that might be suitable for one organization may not be most suitable for another.
Therefore to make a successful product a combination of Process and Technicalities will be required under the umbrella of a well-defined process.

Having talked about the Software process overall, it is important to identify and relate the role software testing plays not only in producing quality software but also

maneuvering the overall process.

The computer society defines testing as follows: “Testing -- A verification method that applies a controlled set of conditions and stimuli for the purpose of finding

errors. This is the most desirable method of verifying the functional and performance requirements. Test results are documented proof that requirements were met

and can be repeated. The resulting data can be reviewed by all concerned for confirmation of capabilities.”
There may be many definitions of software testing and many which appeal to us from time to time, but its best to start by defining testing and then move on depending

on the requirements or needs.

Many Definitions are:


"Testing is the process of executing the software components or a program with th intend of finding errors."

"Testing is a process used to help identify the correctness, completeness and quality of developed computer software."

1 comment: