| |
|
|
Software Quality Assurance
Software Quality
Assurance (SQA) and testing is an extremely important component of
application implementation. These activities may be required either as a
natural part of the software development lifecycle or for proving fitness
for purpose of an already developed systems prior to implementation or
even acquisition. SQA and testing can take many forms as it is required at
multiple levels and for various components within the target application.
Pinnacle Business Solutions have in-depth and comprehensive SQA and
testing experience in many systems and environments across a variety of
business sectors. Services can be provide at our premises by migrating the
application into a suitable environment established along the lines of the
final target production environment or we can provide personnel to
undertake SQA and testing at a customers premises. We are quite used to
incorporating our activities into previously defined project and quality
plans in conjunction with the requirements, standards and procedures
required by the project and the customer.
The various types and levels of SQA and testing can be defined as Unit
testing, Integration testing, Systems testing, Requirements testing, Beta
testing, Stress testing, Regression testing, Reliability testing,
Performance testing and Usability testing. These are explained below :-
| |
Unit Testing
This is testing of compiled program code at the lowest level and is
source code that does not include any called subroutines or
functions. Fundamentally, every source statement is executed at
least once during testing. The tests are performed to find unit
execution problems, which represent the second most frequent type of
bug.
|
| |
Integration Testing
Here the testing of interfaces between otherwise correct components
and modules is covered to ensure compatibility. Integration bugs are
just behind Unit bugs in frequency although for Objected Oriented
software, they may be more frequent.
|
| |
System Testing
Testing an entire software system end to end to discover any common
system bugs such as loss of resource, synchronisation and timing
problems, multi-user sharing problems etc. After fixing the low
level bugs any system bugs can be addressed.
|
| |
Requirements Testing
These will cover end to end tests from the User perspective to
verify operability of each feature. It may not be good to presume
that ‘user’ just means ‘end-user’. In typical software, only 10% -
15% of the code directly concerns things immediately seen by the end
user. The remaining 85% concerns infrastructure items such as
resource management, protocols, databases and files that the user
does not know about or want to know about.
|
| |
Beta Testing
Beta testing is usually done by representative users, typically in
the final stages of testing prior to official release. A small
representative sample, normally under 1%, of an installed user base
can be an effective way to discover any latent configuration
sensitivity and performance bugs not previously found.
|
| |
Stress Testing
It involves subjecting a software system to an unreasonable load
while denying it the resources needed to process the load. This can
be one of the most economical ways to find system bugs. Proper
stress testing is useful in finding synchronisation and timing bugs,
interlock problems, priority problems, resource loss bugs and
general abuse of application program interfaces.
|
| |
Regression Testing
This is more specifically Equivalency testing; i.e. re-running a
suite of tests to assure that the current version behaves
identically to the previous version except in areas where changes
have been applied.
|
| |
Reliability Testing
This will determine the expected failure rate of software under a
statistically specified user load or operational profile.
Reliability testing can give an effective method to determine when
enough testing has been completed to warrant migration to
production.
|
| |
Performance Testing
This is the testing to determine the expected processing delay as a
function of the applied load (and to determine the resource
utilisation under load). This testing may involve determination of
the maximum simultaneous users or transactions that a system can
sustain. Simple tests may be feasible. For example, inspection of
memory being used or simple batch process job timings.
|
| |
Usability Testing
This involves testing the human / machine interface including the
screen menu layouts, help features, instruction manuals and icon
style and placement in order to confirm that such things are well
thought out and the system can be learnt and used with a minimum of
effort. This type of testing should commence during early
development stages otherwise in may be too late to make any
substantive changes. |
Pinnacle Business Solutions also utilise
Independent Test Groups where appropriate. An independent test group
reports along a different hierarchy to the development group. True
independence implies the ability to block a release if it is not in the
organisation’s best interest to do so. Contracting testing services as a
separate contract to development can provide the benefits of independence
with specific dedicated resources able to undertake testing most
effectively. Among the kinds of testing effectively done by a value-added
independent test group are: network configuration compatibility,
usability, performance, security, acceptance, hardware / software
integration, recovery, distributed processing, platform compatibility,
third-party software etc.
Testing Case Studies............ |