Page 9 - SOFTWARE TESTING & QUALITY ASSURANCE
P. 9
Software Testing and Quality Assurance
iterative process to detect a mismatch, a defect or an error. As pointed by Myers, “Testing is a process of
executing a program with the intent of finding errors”.
According to IEEE 83a, “Software testing is the process of exercising or evaluating a system or system
component by manual or automated means to verify that it satisfies specified requirements.”
1.1 Software Testing
Software testing is an integral part of the software development life cycle which identifies the defects,
flaws or the errors in the application. It is incremental and iterative in nature. The goal of testing as
described by Millers states that, “The general aim of testing is to affirm the quality of software systems
by systematically exercising the software in carefully controlled circumstances”. Let us now list out the
objectives of software testing:
1. It ensures if the solutions meet the business requirements, thereby enhancing customer
confidence.
2. It catches the bugs, errors and defects.
3. It ensures if the system is stable and ready for use.
4. It identifies the areas of weakness in an application or product.
5. It establishes the degree of quality.
6. It determines user acceptability
The scope of testing can be comprehensive and could examine components like business requirements,
design requirements, programmer’s code, hardware configuration, and systems administration
standards and constraints. The ambit of testing could also involve testing with respect to industry
standards and professional best practices. Testing thus provides an opportunity to validate and verify
all aspects of software engineering.
Thus, software testing brings many benefits to an organization. It saves time and money, since defects
are identified early. Testing ensures that the product is stable with less downtime, thereby gaining
customer satisfaction.
Did you know? In the year 2003, social security checks for 50,000 people were mailed by the U.S.
Treasury Department without any beneficiary name. It was later found out that the
missing names were due to a software program maintenance error.
1.1.1 Evolution of Software Testing
During the early days, software was developed by small groups of people, but had to be maintained by
a different set of people. It was at this time that people who were maintaining the software had
nightmarish experiences, as the software would throw up a lot of errors. Due to this, it was difficult to
handle large projects and thus, tasks were not completed on time and within budget. As a result,
projects were delayed and some of them were abandoned halfway.
Software testing evolved over time. Advances in software development brought in new changes in the
way testing was perceived, which led to systematic improvement in testing.
Deve Gelperin and William C. Hetzel classified software testing based on the goals and phases of
testing, which are as follows:
1. Until 1956 - Debugging Oriented: Until 1956, testing and debugging were not differentiated, and
testing connoted debugging.
2. 1957–1978 - Demonstration Oriented: During this period, the goal of testing was to make sure
that the software satisfies its specifications. The period of 70s also witnessed the acceptance of
the idea that software could be tested exhaustively.
3. 1979–1982 - Destruction Oriented: During this period, testing grew in importance with
contributions from Myers (author of “The Art of Software Testing”). Test cases that had the intent
of finding errors were designed and verification and validation activities were initiated.
2 LOVELY PROFESSIONAL UNIVERSITY