Search This Blog

Software Testing in Python


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 TestingIntegration Testing and System 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 extends unittest and makes testing easier.

  • pytest : It has a rich set of useful plugins and is compatible with unittest and nose.







No comments:

Post a Comment

If you have any doubts, Please let us know.