CUNY B r o o k l y n C o l l e g e
Department of Computer and Information Science
CIS
763X: Software Methodology
with Dr. D. Kopec
Fall, 2000
Back tondividual Class Presentations
Software Testing in the Real World
by Edward Kit,
Chapter 1—Chapter 6: Testing process maturity and the
framework for test process improvement
Presented by Yu Yang
The six essentials of software testing:
1. Quality—The quality of the test process determines the success of the
test effort
The quality of a software system is primarily determined by the quality
of software process that produced it. Testing has its own cycle. The testing
process begin with the product requirements phase and from there parallels
the entire development process. In other words, for each phase of the development
process there is an important testing activity. An immature test process
within an immature development organization will result in an unproductive,
chaotic, frustrating environment that produces low-quality results and
unsatisfactory product.
2. Prevent defect migration—Prevent defect migration by using early life-cycle
testing techniques
From the chart 1, we can see that more than half the errors are
usually introduced in the requirements (includes the functional design)
phase. The cost of errors is minimized if they are detected in the same
phase as the are introduce, and an effective test program prevents the
migration of errors from any development phase to any subsequent phases.
In other words, errors are not self-contained. As they migrate to the units
downstream, they take on new forms.
Defect distribution
(Chart 1)
3. Time—The time for software testing tools is now
After many years of software testing development, there is a wide
variety of tool vendors to choose from, many of which have mature, healthy
products. It is important to have a strategy for tool acquisition, and
a proper procedure for handling tool selection. Tool acquisition is an
area where there may be a strong case for seeking independent expert advice.
4. Responsibility—A real person must take responsibility for improving
the testing process
Management should appoint an architect or small core team to prioritize
potential improvements and lead the testing improvement effort, and must
make it clear that they will give their ongoing support. When all is said
and done, software testing is a process that requires people who take responsibility
for its improvement. For the testing process to improve, someone must plan
and manage the progress.
5. Human resource—Testing is a professional discipline requiring trained,
skilled people
Testing is not an entry-level job. The software testing process
has evolved considerably, and has reached the point where it is a discipline
requiring trained professionals. To succeed today, an organization must
be adequately staffed with skilled software testing professionals who get
proper support from management. Testing should be independent, unbiased,
and organized for the fair sharing of recognition and rewards for contributions
made to product quality.
6. Attitude—Cultivate a positive team attitude of creative destruction
Cultivate a positive team attitude of creative destruction is very
important for the software development. Establishing the proper “test to
break” mental attitude has a profound effect on testing success. Good testers
must have testing attitude:
(1) Testers hunt errors, (2) testers are destructive-but creatively
so, (3) testers pursue errors, not people, (4) testers add value.
Critical choice: what, when, and how to test
Fifty percent or more of the development organization’s time is
frequently devoted to error detection and removal. Risk management is very
important for testing. We need to work out how risky they are before we
do them, and take all reasonable precautions against their coming out badly.
(Chart 2) see presentation outline
Chart 2 is a typical software life-cycle phases. It’s included
concept, requirements, design, implementation, test, operation and maintenance.
Testing also has a life cycle that parallels the software development cycle,
one that includes both verification testing and validation testing. Testing
processes should, as far as possible, be integrated at the most effective
points in the development life cycle. From chart 1 we can see that more
than 50% of all defects are usually introduce in the requirements stage
alone. Test early prevent defect migration. Every time there is an opportunity
to find a defect and we don’t find it, and it is allowed to migrate to
next stage, it’s going to cost much more to fix when we do find it.
(Chart 3) see presentation outline
The basic forms of testing are full testing, partial testing,
endgame testing and audit-level testing. Effective testing is testing that
is successful at detecting errors. Effective testing removes errors. But
how do we know how much testing we should aim to do? Chart 3 shows the
cost effectiveness. The more effective the error detection, the greater
the savings in development and maintenance costs over the life of the product.
Typically we use full testing for critical software or any software that
will have heavy and diverse usage by a large user population, and we use
partial testing for small, non-critical software products with a small,
captive user population.
Framework for testing
Any software engineering method that is common practice
in software development projects is usually also applicable to software
testing efforts. This means that the disciplines of planning and analysis,
formal documents, configuration management, measurement, standards, tools,
and procedures can be applied to testing.
1. Planing
It is easy to see why medium-size software development project becomes
out of control if the planning is not done properly. Planning is the first
step of every testing activity. If testing is to be included as a serious
part of software engineering, testers have to take time to analyze the
product. Time spent on early planing is never wasted, and usually the total
time cycle is significantly shorter. On the planning, we need to consider
the issues both the verification planning and the validation planing.
For each type of verification, the issues to be addressed are as follows:
-
The verification activity to be performed;
-
The methods used
-
The specific areas of the work product that will and will not be verified;
-
The risks associated with any areas that will not be verified;
-
Prioritizing the areas of the work product to be verified;
-
Resources, schedule facilities, tools, and responsibilities.
-
For each validation activity we have to do as follows:
-
Detailed planning
-
Testware design and development
-
Test execution
-
Test evaluation
-
Testware maintenance
-
Test methods
-
Facilities
-
Test automation
-
Testing tools
-
Support software
-
Configuration management
-
Risks
2. Software engineering maturity and the SEI
The mission of the SEI is to provide leadership to advance the state-of-the-practice
of software engineering to improve the quality of system that depends on
software. The SEI defines five process maturity levels as part of a process
model: (1) Initial, (2) Repeatable, (3) Defined, (4) Managed, (5) Optimizing.
The SEI CMM describes goals and activities that are of vital importance
to anyone striving to improve their everyday testing process.
There are special consultancy service organizations trained
in the SEI model which conduct software processes assessments (SPAs) on
request. SPA is a method developed by the SEI to help organizations evaluate
their software process maturity and identify key areas for improvement.
They look at the practices an organization is using and recommend practices
that should be implemented now to improve processes.
3. Configuration management
Configuration management is a four-part discipline for: (1)
Configuration identification, (2) Configuration and change control, (3)
Configuration status accounting, (4) Configuration audit.
It is essential for software project with more than a
few people, and with more than a modest change volume. Configuration management
problems come from confusion and lack of control. These problems can waste
enormous amounts of time; they often happen at the worst possible moment;
they are almost always very frustration, and they are totally unnecessary.
4. Standards
Some standards are particularly important to the testing practitioner.
They can provide a benchmark for writing documents like requirements, so
that testers and others doing verification have a framework for what they
can expect to find. It also tells us what to put into key test documents,
such as a test plan. We can use some standards as guide to our software
testing. such as IEEE standards, ANSI standards, ISO 9000 standards, SPICE
and other standards.
5. Formal documents
A formal document is a document of which the form, general content, and
timing have been agreed in advance. It is a deliverable. It has proven
to be an absolutely essential element of any successful project. We need
documents in order to put decisions in writing. These include requirement
specification, functional design specification and internal design specification.
A mature development organization will produce these documents and faithfully
maintain them for the life of the product. Testing produces its own formal
documents corresponding to its own life cycle.
6. Testware
Testware is produce by both verification and validation testing
methods. Testware includes verification checklists, verification error
statistics, test data, and supporting documentation, like test plans, test
specifications, test procedures, test cases, test data, and test reports.
It is important to maintain testware, just as software
and hardware are maintained. Testware management, though not directly related
to error detection, has an enormous impact on the efficiency of the test
effort.
7. Measurement
Measurement provides an idea of the real program complexity.
It helps in planning the test effort, and in prediction how many errors
there are and where they occur. Measurement of the number and types of
errors detected provides and accurate idea of our efficiency at verification
and the weaknesses in our development process. Without measurements, we
never know whether we’re moving forward or backward or standing still.
8. Tools
There are a wide variety of tools available today to
provide assistance in every phases of testing process. Like all testing
activities, the use of tools needs to be integrated with the larger picture
of our development process.
Summary
Software testing is very important for the software product. It is
professional, not an entry-level job. To understand testing and to improve
testing practice, it is essential to see the software testing process in
its broadest terms—as the means by which people, methodology, tools, measurement,
and leadership are integrated to test a software product.
Comments and suggestions e-mail to Sergey
D.