Cost of Quality is a term used to quantify the total cost of prevention and
appraisal, and costs associated with the production of software.
Prevention Costs
- Up-front costs for benefits that will be derived later
- Establishing procedures, training, tools and planning
- Spent before the product is actually built
Appraisal Costs
- Review completed products against requirements
- Includes the cost of inspections, testing, and reviews.
- After the product is built but before it is shipped to the user
Failure Costs
- Defects that make it to the user or to production.
- Repairing products to make them meet requirements.
- Cost of operating faulty products and operating a Help Desk.
The majority of costs associated with the Cost of Quality are associated with
the identification and correction of defects.
Software Quality Factors
The software quality factors are attributes of the software that, if they are
wanted and not present, pose a risk to the success of the software..
Identifying the software quality factors is done by surveying the decision makers.
Their answers prioritize testing.
The common thread that runs through today's quality improvement efforts is
the focus on the customer and, more importantly, customer satisfaction.
Why Do We Test Software?
Developers are unable to build defect-free software.
Developers are not Good Testers
The disadvantages of a person checking their own work using their own
documentation are as follows:
Misunderstandings will not be detected, because the checker will assume that
what the other individual heard from him was correct.
Improper use of the development process may not be detected because the
individual may not understand the process.
To close the user’s gap, the IT quality function must understand user needs
with customer surveys and customer testing.
Testers need to ensure that software not only meets the requirements, but is in
fact usable by the customer.
Why Does a Development Process Produce Defects?
Ideally, the software development process should produce the same results each
time the process is executed.
The example..
If a process that produces one function-point-of-logic in 100 person hours the
first time, that process should produce one function-point-of-logic in 100
hours when ran again. If the process takes 110 hours to produce one function-
point-of-logic, then there is “variability” in the software development process.
Someone please help with this. I don’t think this really says to ignore special
causes so the statistics look good.
Bringing a process into a state of statistical control is not really improving the
process; it is just bringing it back to its typical operation. Reducing variation
due to common causes is process improvement and the real essence of
continuous process improvement.
As the model moves from Level 1 to Level 5, the variability in the process is
significantly reduced. Thus, those at Level 5 have minimal variability in their
software development process, while Level 1 organizations have significant
variability.
Level 2 – Control
There are two major objectives to be achieved at Level 2. The first is to instill
discipline in the culture of the information organization so that through the
infrastructure, training, and leadership of management individuals will want to
follow defined processes. The second objective is to reduce variability in the
processes by defining them to a level that permits relatively constant outputs.
Level 5 – Innovative
Organizations are finally becoming convinced that testers truly can not test in
quality at the end of the development process and that the traditional waterfall
methodology has lead to many of the issues surrounding testing today.
I’m rusty on the waterfall methodology. Anyone want to explain this statement?
Some attitudes that have shaped a negative view of testing and testers are:
Testers hold up implementation.
Giving testers less time to test will reduce the chance that they will find defects.
Letting the testers find problems is an appropriate way to debug.
Defects found in production are the fault of the testers.
Testers do not need training; only programmers need training.
Essential testing skills include test planning, using test tools (automated and
manual), executing tests, managing defects, risk analysis, test measurement,
designing a test environment, and designing effective test cases.
People Relationships
The scope of testing is the extensiveness of the test process. A narrow scope
may be limited to determining whether or not the software specifications were
correctly implemented. The scope broadens as more responsibilities are
assigned to software testers.
When testing is constrained to a single phase and confined to the later stages
of development, severe consequences can develop.
An error discovered in the latter parts of the life cycle must be paid for four
different times.
The first cost is developing the program erroneously, which may include writing
the wrong specifications, coding the system wrong, and documenting the
system improperly.
Second, the system must be tested to detect the error.
Third, the wrong specifications and coding must be removed and the proper
specifications, coding, and documentation added.
Fourth, the system must be retested to determine that it is now correct.
The recommended test process involves testing in every phase of the life cycle.
During the maintenance phases, the system will be retested to determine that
the changes work and that the unchanged portion continues to work.
When Should Testing Occur?
Requirements
The adequacy of the requirements must be thoroughly analyzed and initial test
cases generated with the expected behavior
Generating these tests and the expected behavior of the system clarifies the
requirements and helps guarantee that they are testable.
Design
Test plan is produced.
Test schedule with observable milestones is constructed
Program (Build/Construction)
Test Process
Test sets, test results, and test reports should be catalogued and stored in
a database.
Installation
Placing tested programs into production is an important phase normally
executed within a narrow time span.
Testing during this phase must ensure that the correct versions of the
program are placed into production.
When Should Testing Occur?
Maintenance
If test cases from initial development have been catalogued and preserved,
duplication of effort will be minimized.
How the Test Plan Should be Developed
The applicable test objectives would be listed and ranked, and the phases of
development would be listed as the phases in which testing must occur.
Most problems associated with testing occur from one of the following
causes:
Failing to define testing objectives
Testing at the wrong phase in the life cycle
Using ineffective test techniques
Testing Constraints
Incomplete Statement of Work
If requirements are lacking or poorly written, then the test team must have a
defined method for uncovering and defining test objectives.
Changes in Technology
Integration
Technology is being more closely integrated into day-to-day business
System Chains
Problems in one can cascade into and affect others.
The Domino Effect
One problem condition, can cause hundreds or even thousands of similar
errors within a few minutes.
Reliance on Electronic Evidence
The validity of transactions is dependent upon controls, and thus a control
error may result in extensive losses.
Multiple Users
Systems belong to multiple users, making it difficult to identify a single
organizational unit responsible for a system.
Testing Constraints
Finding Defects
Life cycle testing involves continuous testing of the solution even after software
plans are complete and the tested system is implemented.
Testing should not use the same methodology that was used for developing
the system.
Testing does not stop once you’ve completely implemented your system; it
must continue until you replace or update it again!