Sunday, December 27, 2009

Software Testing Fundamentals


Testing performed in most organizations, is a process designed to compensate for an ineffective software development process.  The objective of life cycle testing is to spend more effort testing right from the start of the project, and less time debugging the coding and testing phase of development.

What is primary role of software testing?
  • Determine whether the system meets specifications
  • Determine whether the system meets business and user needs
What is Defect
The purpose of testing is to find defects.  A defect is a variance from a desired product attribute.  Two categories of defects are
  1. Variance  from product specifications
  2. Variance from customer / user expectation
Variance from Product Specifications - The product build varies from the product specified.  For example, the specifications may say that A is to be added to B to produce C.  If the algorithm in the build product varies from that specification, it is considered to be defective.

Variance from Customer / user expectation - This variance is something that the user wanted, that is not in the build product, but also was not specified to be included in the build product.  The missing piece may be a specification or requirement, or the method by which the requirement was implemented may be unsatisfactory.

Defects generally fall into one of the following three categories:
  1. Wrong - The specifications have been implemented incorrectly.  This defect is variance from customer / user specification.
  2. Missing - A specified or wanted requirement is not in the built product. This can be a variance from specification, an indication that the specification was not implemented, or a requirement of the customer identified during or after the product was built.
  3. Extra - A requirement incorporated into the product that was not specified.  This is always a variance from specifications, but may the user of the product desire an attribute.  However, it is considered a defect.

Requirements Management

Requirements Changes & Management
Requirement management is managing changes in the evolving software in a cost effective manner.  Changes may come externally or internally.  External changes may be due to problem, customer, environment.  Internal changes may be due to requirements, design, implementation, maintenance.

A Process for managing changes
  • Recognize that change is inevitable
  • Baseline the requirements - stable version
  • Establish a single channel - one in change
  • Use a change control system
  • Manage change hierarchically - ripple effect

Project Management

Project Management is nothing but organizing, planning and scheduling software projects.  It concerned with activities involved in ensuring that software id delivered on time and on schedule and in accordance with the requirements of the organization developing the procuring the software.  Project Management is needed because software development is always subject to budget and schedule constraints that are set by the organization developing the software.  Project Management activities includes Proposal writing, Project planning and scheduling, Project costing, Project monitoring and reviews, Personnel selection and evaluation, Report writing and presentations.


Project Staffing
An organization may wish to develop employee skills on a software project.  Managers have to work within these constraints especially when there is an international shortage of skilled IT staff.


Project planning
Project management activity from initial concept through to system delivery.  Plans must be regularly revised as new information becomes available.  Various different types of plan may be developed to support the main software project plan that is concerned with schedule and budget.




Plan
Description


Quality plan
Describes the quality procedures and standards that will be used in a project


Validation plan
Describes the approach, resources and schedule used for system validation


Configuration management plan
Describes the configuration management procedures and structures to be used


Maintenance plan
Predicts the maintenance requirements of the system, maintenance costs and effort required


Staff development plan
Describes how the skills and experience of the project team members will be developed.




 Project scheduling includes splitting project into tasks and estimate time and resources required to complete each task.