
June 1996 Newton Technology Journal
22
INTRODUCTION
Quality does makes a difference. It makes a difference to your customers and
ultimately to your bottom line. But quality assurance goes beyond just making
sure you find and fix bugs – that’s a given. However, you can’t test quality into
your application. Quality consists of meeting or exceeding customer
expectations in all facets of the user experience. Aspects such as the simplicity,
robustness, and utility of your application are critical to your success.
Whether you’re a large or small developer, a strong quality assurance
program can add a lot of value to your product. Besides giving you the
confidence to ship a well-tested product, Software Quality Assurance (SQA)
can act as the focal point for customer feedback upon which to build
increasingly customer-driven products.
Qualifying software on the Newton is not much different from doing so
on other platforms. There are three basic building blocks which comprise a
good Newton SQA program:
• an understanding of software development
• a foundation of general SQA practices
• knowing the specifics of testing on the Newton platform
SOFTWARE DEVELOPMENT
Your product development should be planned before you begin
implementation and you should execute to that plan. Marketing should
define the target customers and gather and relate their requirements.
Engineering should respond with a description of how those requirements
will be met by the software, both at the human interface and low level.
Based on the marketing and engineering requirements, SQA develops a test
plan defining how testing will be done to converge on a high quality
product. All of the teams must agree on what the end product will look like,
who it’s for, and what problems it solves. Never get so caught up in the
details of the project that you lose sight of the big picture.
Software development is an iterative process. What does it mean for
your software to reach the alpha, beta, final, and golden master milestones?
What metrics do you choose to measure your progress, and by what
milestone criteria do you judge the status of the project? These questions
are largely dependent upon the goals of the project. Choose metrics and
criteria with care. Minimalism is better than weighing your project down
with bureaucracy.
A well planned product development process provides the guidelines for
getting the work done, but software development is intrinsically dynamic.
Make sure your day-to-day decisions still reflect the project goals and
customer requirements.
GENERAL SQA PRACTICES
The following concepts underlie any good SQA program.
• Prioritized Test Coverage
Since you can’t test everything, prioritized testing is key.
What absolutely has to work from the customer’s perspective to make
your product successful? Concentrate more of your resources on those
features and less on others based on their relative importance.
Coverage should be partially driven from development engineering.
Ask the development engineers about the areas of their code and hacks
that concern them the most.
Look for interdependencies and assumptions. These might be bug-rich
areas.
Test any error-checking. Simulate the errors and validate the error-
handling.
Development and quality engineers should collaborate on creative ways
to break the code.
Weaknesses might be uncovered in code or design reviews.
Inexperienced programmers might require more test coverage, especially
in the system-specific features.
• Shared Knowledge
As much as possible, development and quality engineers should share a
common understanding of the features of the software and the underlying
code paths.
• Scientific Method to Isolate Bugs
The best quality and development engineers have internalized the formal
scientific method and subconsciously use it when debugging. “The real
purpose of the scientific method is to make sure Nature hasn’t misled you
into thinking you know something you don’t actually know.” [1] The
following is a terse description of the scientific method as applied to SQA:
1) statement of the problem
2) hypotheses as to the cause of the problem
3) test cases to test each hypothesis
4) predicted results of the test cases
5) observed results of the test cases
6) conclusions from the results of the test cases
• Managed Risk
Most decisions related to qualifying and shipping the product entail
varying degrees of risk. The challenge lies in correctly analyzing the risk and
taking steps to minimize it. Risk analysis should be undertaken seriously,
and any judgments should be based on facts, not conjecture. Always try to
think of creative ways to minimize the risk. Here are some examples:
Code changes
If there are code changes late into the project or near critical milestones,
there are some obvious ways to minimize the risk of the change:
Creating Quality Newton Applications
by Peter Murray, Apple Computer, Inc.
Product Development
Comentários a estes Manuais