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.

Saturday, June 6, 2009

Software Development Life Cycle

The Software development life cycle consists of the following phases.
  • Requirement Analysis
  • Design
  • Development
  • Testing
  • Implementation
  • Maintenance
Requirements and Analysis Specification:
The main objective of the requirement analysis is to produce a document that properly specifies all requirements of the customer. That is, the software requirement specification (SRS) document is the primary output of this phase.

Design:
The Development process is the process by which the user requirements are elicited and software satisfying these requirements is designed, build, tested, and delivered to the customer. The development process is used when a new application is being developed or a major enhancement is planned for an existing application.

High-Level Design:
High-level design is the phase of the life cycle when a logical view of the computer implementation of the solution to the customer requirements is developed.

Low Level Design:
During the detailed design phase, the view of the application developed during the high level design is broken down into modules and programs.

Coding and Unit Testing:
During the build phase, the detailed design is used to produce the required programs in a programming language. This stage produces the source code, executables, and databases (if applicable) following the appropriate coding standards. The output of this phase is the subject of subsequent testing and validation.

Software Process

Process: "A particular method of doing something, generally involving a number of steps or operations is a process." In software engineering, the phrase Software Process refers to the method of developing software.

The process that deals with the technical and management issues of software development is called Software Process. Clearly, many different types of activities need to be performed to develop software. A software development project must have at least development activities and project management activities. All these activities together comprise of software process.

Processes, Projects, Products

  • A Software Process specifies a method of developing software
  • A Software Project, on the other hand, is a development project in which a software process is used.
  • A Software Product is the outcome of a software project.

Quality Assurance Vs Quality Control

Quality Assurance is a planned and systematic set of activities necessary to provide adequate confidence that products and services will conform to specified requirements and meet user needs. Quality assurance is staff function, responsible for implementing the quality policy defined through the development and continuous improvement of software development process.

Quality Control is the process by which product quality is compared with applicable standards and the action taken when non-conformance is detected. Quality control is line function, and work is done within a process to ensure that work product conforms to standards and/or requirements.

Quality Principles

Overview

Quality is based on customer satisfaction, our organization must define quality before it can be achieved, and management must lead the organization through any improvement efforts.

What is Quality?

Quality is defined as meeting the customer's requirements in the first time and every time. Quality is much more than the absence of defects, which allows us to meet customer's expectations.

Objective of Software Tester

  • The goal of a software tester is to find bugs.
  • The goal of a software tester is to find bugs and find them as early as possible.
  • The goal of a software tester is to find bugs and find them as early as possible and make sure they get fixed.
Best Testing Practices to be followed during testing

  • Testing and evaluation responsibility is given to every memeber, so as to generate team responsibility among all.
  • Develop Master Test Plan so that resource and responsibilities are understood and assigned as early in the project as possible.
  • Systematic evaluation and preliminary test design are established as a part of all system engineering an specification work.
  • Testing is used to verify that all project deliverables and components are complete, and to demonstrate and track true project progress.
  • Conduct Reviews as early and as often as possible to provide developer feedback and get problems found and fixed as they occur.

Principle of Testing


Testing is the process of executing a program with an intent of finding error and it should be planned long before testing begins.

Test cases must be written for invalid and unexpected, as well as for valid and expected input conditions. A necessary part of a test case is a definition of the expected output or result. A good test case is one that has high probability of detecting an as yet undiscovered error.

Purpose and Benefit of Testing

The main objective of testing is to help clearly describe system behavior and to find defects in requirements, design, documentation and code as early as possible. The test process should be such that it should reduce the number of defects in the software product that will be delivered to the customer.

Why Software Testing?


Software Testing is important as it may cause mission failure, impact on operational performance and reliability if not done properly. Effective software testing helps to deliver quality software products that satisfy user's requirements, needs and expectations. If done poorly, defects are found during operation, it results in high maintenance cost and user dissatisfaction.

The Most Common Software Problems

  • Incorrect calculations
  • Incorrect data edits
  • Ineffective data edits
  • Incorrect coding/implementation of business rules
  • Incorrect matching and merging of data
  • Incorrect processing of data relationships
  • Incorrect file and data handling
  • Inadequate security controls
  • Inability to handle production data capacities
  • Inadequate support of business needs or objectives