Wednesday, June 29, 2011

Agile Model


> Agile Software Development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self organizing, cross-functional teams.
> Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning.
> Iterations are short time frames (timeboxes) that typically last from one to four weeks.
> Each iteration involves a team working through a full software development cycle including planning,requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders.
> This minimizes overall risk and allows the project to adapt to changes quickly.
> Stakeholders produce documentation as required.

Prototype Model

> A prototype is a working model that is functionally equivalent to a component of the product.
> In many instances the client only has a general view of what is expected from the software product.
> In such a scenario where there is an absence of detailed information regarding the input to the system, the processing needs and the output requirements, the prototyping model may be employed.
> This model reflects an attempt to increase the flexibility of the development process by allowing the client to interact and experiment with a working representation of the product.
> The developmental process only continues once the client is satisfied with the functioning of the prototype.
> At that stage the developer determines the specifications of the client’s real needs.

Spiral Model

The spiral model, also known as the spiral lifecycle model, is a systems development
method (SDM) used in information technology (IT). This model of development
combines the features of the prototyping model and the waterfall model. The spiral
model is intended for large, expensive, and complicated projects.
The steps in the spiral model can be generalized as follows:

1. The new system requirements are defined in as much detail as possible.
2. A preliminary design is created for the new system.
3. A first prototype of the new system is constructed from the preliminary design.
4. A second prototype is evolved by a fourfold procedure: (1) evaluating the first prototype in terms of its strengths, weaknesses, and risks; (2) defining the requirements of the second prototype; (3) planning and designing the second prototype; (4) constructing and testing the second prototype.
5. At the customer's option, the entire project can be aborted if the risk is deemed too great.
6. The existing prototype is evaluated in the same manner as was the previous prototype, and, if necessary, another prototype is developed from it according to the fourfold procedure outlined above.
7. The preceding steps are iterated until the customer is satisfied that the refined prototype represents the final product desired.
8. The final system is constructed, based on the refined prototype.
9. The final system is thoroughly evaluated and tested. Routine maintenance is carried out on a continuing basis to prevent large-scale failures and to minimize downtime.

V - Model



> The V-model is a software development model which can be presumed to be the extension of the waterfall model.
> Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape.
> The VModel demonstrates the relationships between each phase of the development life cycleand its associated phase of testing.

Iterative Model


> An iterative lifecycle model does not attempt to start with a full specification of requirements.
> Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements.
> This process is then repeated, producing a new version of the software for each cycle of the model.
> Consider an iterative lifecycle model which consists of repeating the above four phases in sequence.

Waterfall Model


> Waterfall approach was first Process Model to be introduced and followed widely in
Software Engineering to ensure success of the project.
> In "The Waterfall" approach, the whole process of software development is divided into separate process phases.
> The phases in Waterfall model are: Requirement Specifications phase, Software Design, Implementation and Testing & Maintenance.
> All these phases are cascaded to each other so that second phase is started as and when defined set of goals are achieved for first phase and it is signed off, so the name "Waterfall Model".
> All the methods and processes undertaken in Waterfall Model are more visible.


SDLC(Software Development Life cycle) Models

There are various software development approaches defined and designed which are
used/employed during development process of software, these approaches are also
referred as "Software Development Process Models". Each process model follows a
particular life cycle in order to ensure success in process of software development.
Different types of SDLC Models are listed below -

1. Waterfall Model
2. Iterative Model
3. V Model
4. Spiral Model
5. The Big Bang Model
6. RAD Model
7. Prototyping Model
8. Agile Model

Test Plan

A software test plan is a document that describes the objectives, scope, approach, and focus of a software testing effort. The complete document will help people outside the test group understand the 'why' and 'how' of product validation.
The following are some of the items that might be included in a est plan, depending on the particular project -

> Title of Project
> Identification of document including version numbers
> Purpose of document, intended audience
> Objective of testing effort
> Software Product Overview
> Relevant standards or legal requirements
> Assumptions & dependencies
> Project Risk Analysis
> Scope and limitation of testing
> Test environment
> Database setup requirements
> Test Automation- justification and overview
> Software entrance and exit criteria
> Test site/location
> Appendix - glossary, acronyms, etc.

Tuesday, June 28, 2011

What is Test case

A Test case is a document that describes an input, action, or event and an expected response, to determine if a feature of an application is working correctly.
It's useful to prepare test cases early in the development cycle if possible. Because that can help find problems in the requirement or design of an application.

Verification & Validation(V&V)- Verification means to check whether all the requirements are implemented.
while
Validation means to check whether all requirements are implemented in a right manner.

Types of Testing

Alpha testing- Testing of an application when development is nearing completion; minor design changes may still be made as a result of such testing. Typically done by end-user or others, not by programmers or testers.

Beta testing- Testing when development and testing are essentially completed and final bugs and problems need to be found before final release. Typically done by end-user or others, not by programmers or testers.

Sanity testing- Typically an initial testing effort to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems in every 5 minutes, then we cant apply testing effort to that software.

Compatibility testing- Testing how well software performs in a particular hardware/software/OS/network/etc. environment.

Exploratory testing- Often taken to mean a creative, informal software test that is not based on formal test plan or test cases; testers may be learning the software as they test it.

Ad-hoc testing- Similar to exploratory testing, but often to mean that the testers have significant understanding of software before testing it.

Comparison testing- Comparing software weakness and strengths to its competing products.

Load testing- Testing an application under heavy loads,such as testing of a website under a range of loads to determine at what point the system's response time degrades or fails.

System testing- Black-box type testing that is based on overall requirements specifications ; covers all combined parts of a system.

Functional testing- Black-box type testing geared to functional requirements of an application; this type of testing should be done by testers.

Volume testing- Volume testing involves testing a software or web application using corner cases of "task size" or input data size.
For example-
* If the application reads text files as inputs, try feeding it both an empty text file and a huge (hundreds of megabytes) text file.
* If the application stores data in database, exercise the application's functions when the database is empty and when the database contains an extreme amount of data.

Stress testing- Same as load testing.

Sociability testing- This means that you test an application in its normal environment, along with other standard applications, to make sure they all get along together.

Usability testing- Testing for the user friendliness of the software.

Recovery testing- Testing how well a system recovers from crashes,, hardware failures, or other catastrophic problems.

Security testing- Testing how well the system protects against unauthorized internal or external access, willful damage etc.

Performance testing- Term often used interchangeably with 'stress' and 'load' testing. Ideally defined in SRS(Software requirement Specification) or Test Plan.

End-to-end testing- Similar to system testing; involves testing of a complete application environment in a situation that mimics real-world use.

Regression testing- Re-testing after fixes or modifications of the software or its environment.

Install/uninstall testing- Testing of full, partial, or upgrade install/uninstall processes.

Sunday, June 26, 2011

Testing Techniques

Black Box Testing
It is not based on any knowledge of internal design or code. Tests are based on requirements and functionality. This type of testing attempts to find errors in the following categories -

1. incorrect or missing functions,
2. interface errors,
3. errors in data structures or external database access,
4. performance errors, and
5. initialization and termination errors.

White Box Testing
It is based on knowledge of the internal logic of an application's code. Tests are based on coverage of code statement, branches, paths, conditions. It is done for following -

1. guarantee that all independent paths within a module have been exercised at least once,
2. exercise all logical decisions on their true and false sides,
3. execute all loops at their boundaries, and
4. exercise internal data structures to ensure their validity.

Levels of Testing

There are 3 levels of testing -

1. Unit Testing- It is the most micro scale of testing; to test particular functions or code modules of an application. It s typically done by the software developer and not by testers.

2. Integration Testing- Testing of combined parts of the application to determine if they function together properly.

There can be two approach for integration testing-

Top-down approach
It starts with main application and successively replaces dummy part with the real modules.

Bottom-up approach
It builds larger module by integrating primitive modules.

Sandwich testing is mainly top-down with bottom-up integration and testing applied to certain most used components..

3. Acceptance Testing- It is final testing based on specifications of the end-user or customer.

Software Testing

Most of the people are confused between QA(Quality Assurance) & Testing. Here is the difference -

Software QA involves the entire software development Process i.e. monitoring and improving the process, making sure that all agreed standards and procedures are followed. It is all about 'prevention'.

But

Software testing is a process to run a system or application under controlled condition and evaluating the result. It is all about 'detection'.