I T SOLUTIONS

 

 

 

Application Development

Business Analysis

Data Warehousing

eBusiness / eCommerce

Project Management

Software Quality Assurance

System Integration

Technical Support

Web Services

 

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............