Wednesday, December 10, 2008

Various Kinds of Testing

Different Types of Testing

Static V/s Dynamic Testing

• Development V/s Independent Testing

• Black v/s White box Testing

• Automated v/s Manual

• Sanity, smoke & Acceptance Testing

• Regression Testing

• Exploratory and Monkey Testing

• Debugging v/s Bugging
Dynamic V/s Static testing
Dynamic testing is the testing that involves testing, running and using the software whereas
Static testing is testing something that’s not running i.e. examining and reviewing it.

For example: Inspecting a car without running is the static testing while test driving a car is the dynamic testing.
Dynamic testing-When we run the Software.

Static testing-When system is not running.
Development V/s Independent Testing

Development Testing denotes the aspect the aspects of test design and implementation most appropriate for the team developers to undertake. In most cases test execution initially occurs with the developer testing group who designed and implemented the test, but it is a good practice for the developer to create their tests in such a way so as to make them available to independent testing groups for execution.

Independent testing denotes the test design and implementation most appropriately performed by someone who is independent from the team of developers. In most cases test execution initially occurs with the independent testing group that design and implement the test, but the independent tester should create their testes to make them available to the developer testing groups for execution.
Development testing - In which developer himself test the software.
Independent Testing-Group of people and they are concerned with the development part.
Black Box Vs White Box Testing
Black box testing also knows as Behavioral testing is a software testing technique in which the internal workings of the item being tested are not known to tester.
For example, When black box testing is applied to software engineering, the tester would only know the “legal “inputs and what the expected outputs should be, but not how the program actually arrives at those outputs. It is because of this, black box testing can be considered as the testing with respects to the specifications, and no other knowledge of program is necessary.
Black box testing attempts to finds errors in the following categories:-
  • Incorrect or missing functions.
  • Interface errors.
  • Errors in data structures or external database access.
  • Initialization and termination errors.
Black box testing treats the software as a "black box"—without any knowledge of internal implementation. Black box testing methods include:

Equivalence Partitioning
Boundary Value Analysis
All-Pairs Testing
Fuzz Testing
Model-Based Testing
Traceability Matrix
Exploratory Testing
Specification-Based Testing.

White box testing
White box testing is when the tester has access to the internal data structures and algorithms including the code that implement these.
Types of white box testing
The following types of white box testing exist:
· API testing (application programming interface) - testing of the application using public and private APIs
· Code coverage - creating tests to satisfy some criteria of code coverage (e.g., the test designer can create tests to cause all statements in the program to be executed at least once)
· Fault injection methods - improving the coverage of a test by introducing faults to test code paths
· Mutation testing methods
· Static testing - White box testing includes all static testing
Test coverage
White box testing methods can also be used to evaluate the completeness of a test suite that was created with black box testing methods. This allows the software team to examine parts of a system that are rarely tested and ensures that the most important function points have been tested.
Two common forms of code coverage are:
· Function coverage, which reports on functions executed
· Statement coverage, which reports on the number of lines executed to complete the test

They both return code coverage metric, measured as a percentage.

Testing levels
Unit testing
Integration testing
System integration testing
Regression testing
Acceptance testing
Alpha testing
Beta testing

Regression testing
Regression means testing “again n again”.
Regression testing focuses on finding defects after a major code change has occurred. Specifically, it seeks to uncover software regressions, or old bugs that have come back













Links to other posts

Monday, December 8, 2008

Software Testing & Software Development Life Cycle

Software Testing

Software testing is an essential part of s/w development process which is used to identify the correctness, completeness and quality of developed s/w.
its main objective is to detect errors in software.

SDLC: - SDLC is overall process of developing information on system through a multi-step process from investigation of initial requirements through analysis, design, implementation and maintenance.




Role of Testing in Various phase of SDLC
S/w Development phase
Testing
Requirement Phase
1. Determine the test strategy.
2. Determine requirement.
Design phase
1. Determine consistency of design with
requirements.
2. Determine adequacy of design.
3. Generate structural and functional test condition
Coding Phase
1. Determine consistency with design
2. Determine adequacy of implementation
3. Generate structural and functional test condition for program unit
Testing Phase
1.Determine adequacy of the test plan
2.Test application system
Installation and Maintenance Phase
1. Place tested system into production
2. Modify and retest

Water fall model: - Also know as linear sequential model or Classical life cycle model
This model was introduced by Winston Royce in 1970 and is currently the most commonly used model for s/w.




Prototype Model

This model is applied when there is an absence of detailed information regarding input and output requirement in s/w.
Advantages:
1. Helps in reducing risk associated with the project.
2. There is a great involvement of user in s/w development.

Disadvantages:
This model is time consuming and expensive. Because if the user is not satisfied by the developed prototype then a new prototype is developed. This process goes on until a perfect prototype is developed.




Spiral Model- Proposed by Bohem in 1988.
1. Each Loop of the spiral represents a phase of the s/w process.
2. The innermost loop might be concerned with system feasibility.
3. The next loop with system requirement definition.
4. The next one with system design and so on.