|
Software Testing

What is 'Software Quality Assurance'?
Software QA involves the entire software development PROCESS -
monitoring and improving the process, making sure that any
agreed-upon standards and procedures are followed, and ensuring that
problems are found and dealt with. It is oriented to 'prevention'.
What
is 'Software Testing'?
Testing involves operation of a system or application under
controlled conditions and evaluating the results (eg, 'if the user
is in interface A of the application while using hardware B, and
does C, then D should happen'). The controlled conditions should
include both normal and abnormal conditions. Testing should
intentionally attempt to make things go wrong to determine if things
happen when they shouldn't or things don't happen when they should.
It is oriented to 'detection'.
Does every software project need testers?
While all projects will benefit from testing, some projects may not
require independent test staff to succeed.
Which
projects may not need independent test staff? The answer depends on
the size and context of the project, the risks, the development
methodology, the skill and experience of the developers, and other
factors. For instance, if the project is a short-term, small, low
risk project, with highly experienced programmers utilizing thorough
unit testing or test-first development, then test engineers may not
be required for the project to succeed
How can new Software QA processes be
introduced in an existing organization?
-
A lot depends on the
size of the organization and the risks involved. For large
organizations with high-risk (in terms of lives or property)
projects, serious management buy-in is required and a formalized
QA process is necessary.
-
Where the risk is
lower, management and organizational buy-in and QA
implementation may be a slower, step-at-a-time process. QA
processes should be balanced with productivity so as to keep
bureaucracy from getting out of hand.
-
For small groups or
projects, a more ad-hoc process may be appropriate, depending on
the type of customers and projects. A lot will depend on team
leads or managers, feedback to developers, and ensuring adequate
communications among customers, managers, developers, and
testers.
-
The most value for
effort will often be in (a) requirements management processes,
with a goal of clear, complete, testable requirement
specifications embodied in requirements or design documentation,
or in 'agile'-type environments extensive continuous
coordination with end-users, (b) design inspections and code
inspections, and (c) post-mortems/retrospectives.
What is 'good design'?
'Design' could refer to many things, but often refers to 'functional
design' or 'internal design'. Good internal design is indicated by
software code whose overall structure is clear, understandable,
easily modifiable, and maintainable; is robust with sufficient
error-handling and status logging capability; and works correctly
when implemented. Good functional design is indicated by an
application whose functionality can be traced back to customer and
end-user requirements.
What is the
'software life cycle'?
The life cycle begins when an application is first conceived and
ends when it is no longer in use. It includes aspects such as
initial concept, requirements analysis, functional design, internal
design, documentation planning, test planning, coding, document
preparation, integration, testing, maintenance, updates, retesting,
phase-out, and other aspects.
|