1. Software Testing is a process of identifying bugs in an application by running the application through a series of designed tests.
2. Software Testing involves multiple stake holders such as testers, management, business, customers, consultants, and end users.
Why Software Testing Required?
Software Testing
is very important for the following reasons:
It can detect errors or defects made during development phase.
It increases reliability and quality of the software.
It validates or checks if software is behaving as expected based on requirements.
It is required for effective performance of software application.
Software Testing Life Cycle
Software Testing Life Cycle (STLC)
refers to various phases involved in testing of a software.
STLC
in general includes the following phases:
Requirements Review
Test Planning
Test Designing
Test Environment Set Up
Test Execution
Test Reporting
Testing
is generally classified into three
levels based on the component being tested.
The three
levels are:
- Unit Testing
- Integration Testing
- System Testing
Unit Testing
Unit Testing
: Testing the smallest possible code snippets of a program.Practically, breaking down of these code snippets into further smaller pieces is not achievable.
For e.g: considering below function as a single unit makes sense.
def square(n):
"Returns square of a number."
return n**2
Integration Testing
Integration Testing
: It focuses on testing interactions across related units.These tests are still run in isolation in order to overcome inputs from outside or other units.
The inputs required from outside units are simulated.
System Testing
System Testing
: It checks parts of the program once all units are plugged together.It is an extreme form of
Integration Testing
.System tests will not be useful, if these tests are not supported by the results of integration tests and unit tests.
Acceptance Testing
Unit Testing
,Integration Testing
andSystem Testing
are done to verify software product as a whole or it's individual components.On the other hand, the testing that you perform to confirm that the software behaves as expected is known
Acceptance Testing
.Acceptance Testing
doesn't check any core functionality of the software, it only aims at checking the software behavior.
Regression Testing
Regression Testing
is another type of testing which ensures that previously built software performs the same way after making some changes to it or interfacing it with other software.Regression Tests
can be written before or after a bug is found.They provide an assurance that an increase in a program's complexity doesn't introduce new bugs.
Tests in Python :
doctest
: It is the simplest framework which combines documentation and tests.unittest
: It is the framework having xUnit-Style architecture.nose
: It extendsunittest
and makes testing easier.pytest
: It has a rich set of useful plugins and is compatible withunittest
andnose
.
No comments:
Post a Comment
If you have any doubts, Please let us know.