testing software systems create data driven tests for maximum flexibility and repeatabilityrely on mock objects that represent elements outside the unit that it must interact with having the tests automated means that they can be run frequentlyat the very least after initial development and after each change that affects the unit once confidence is established in the correct functioning of one unitdevelopers can then use it to help test other units with which it interfacesforming larger units that can also be unit tested oras the scale gets largerput through integration testing integration testing integration testing is where several units (or modulesare brought together to be tested as an entity in their own right typicallyintegration testing aims to ensure that modules interact correctly and the individual unit developers have interpreted the requirements in consistent manner an integrated set of modules can be treated as unit and unit tested in much the same way as the constituent modulesbut usually working at "higherlevel of functionality integration testing is the intermediate stage between unit testing and full system testing thereforeintegration testing focuses on the interaction between two or more units to make sure that those units work together successfully and appropriately such testing is typically conducted from the bottom up but may also be conducted top down using mocks or stubs to represented called or calling functions an important point to note is that you should not aim to test everything together at once (so called big bang testingas it is more difficult to isolate bugs in order that they can be rectified this is why it is more common to find that integration testing has been performed in bottom up style system testing system testing aims to validate that the combination of all the modulesunitsdatainstallationconfiguration etc operates appropriately and meets the requirements specified for the whole system testing the system has whole typically involves testing the top most functionality or behaviours of the system such behaviour based testing often involves end users and other stake holders who are less technical to support such tests range of technologies have evolved that allow more english style for test descriptions this style of testing can be used as part of the requirements gathering process and can lead to behaviour driven development (bddprocess the python module pytest-bdd provides bdd style extension to the core pytest framework