UNIT I TESTING BASICS
1.1 Testing as an engineering activity
This is an exciting time to be a software developer. Software systems are becoming more
challenging to build. They are playing an increasingly important role in society. People with
software development skills are in demand. New methods, techniques, and tools are
becoming available to support development and maintenance tasks. Because software now
has such an important role in our lives both economically and socially, there is pressure for
software professionals to focus on quality issues. Poor quality software that can cause loss of
life or property is no longer acceptable to society. Failures can result in catastrophic losses.
Conditions demand software development staffs with interest and training in the areas of
software product and process quality. Highly qualified staff ensure that software products are
built on time, within budget, and are of the highest quality with respect to attributes such as
reliability, correctness, usability, and the ability to meet all user requirements.
Using an engineering approach to software development implies that:
the development process is well understood;
projects are planned;
life cycle models are defined and adhered to;
standards are in place for product and process;
measurements are employed to evaluate product and process quality;
components are reused;
validation and verification processes play a key role in quality
engineers have proper education, training, and certification.
1.2 Role of process in software quality
The need for software products of high quality has pressured those in the profession to identify
and quantify quality factors such as usability, testability, maintainability, and reliability, and to
identify engineering practices that support the production of quality products having these
favorable attributes. Among the practices identified that contribute to the development of highquality software are project planning, requirements management, development of formal
specifications, structured design with use of information hiding and encapsulation, design and
code reuse,inspections and reviews, product and process measures, education and training of
software professionals, development and application of CASE tools, use of effective testing
techniques, and integration of testing activities into the entire life cycle. In addition to identifying
these individual best technical and managerial practices, software researchers realized that it was
important to integrate them within the context of a high-quality software development process.
Process, in the software engineering domain, is the set of methods, practices, standards,
documents, activities, policies, and procedures that software engineers use to develop and
maintain a software system and its associated artifacts, such as project and test plans,
design documents, code, and manuals.