What is the best way to test the program?

Hi all.

Has developed a program that consists of modules. All modules are to some extent covered by Unit tests. One module can process the information, make any calculations and to pass to the input of another module. It turns out that the modules are in a relationship.

The program is transferred to the customer and he wants to develop their own modules. In this regard, the question arose: what can be done so that the customer modified the program and its new modules didn't break the existing system?

In the head only turns one big test (but this is costly in time and support the relevance of the tests), but could there be any other options?
July 2nd 19 at 17:55
2 answers
July 2nd 19 at 17:57
To make myself and the customer to use TDD

Maintaining tests = stability software
If the customer does not need stability, you do not care
Do not be misled. The tests clearly needed, but the maintenance of tests != the stability of the software. Maintaining tests = stability software in tested cases. - glennie_Mer commented on July 2nd 19 at 18:00
: then you need to decide what is the stability of software

For me, stability = the functionality works as described in the tests - marilyne_Roh commented on July 2nd 19 at 18:03
the test is nice. But suppose such a situation: the customer developed a module covered by tests. And gives me a check and said: how can I be sure that the interaction of the developed module I have won't break others? That's the main issue - Katrina83 commented on July 2nd 19 at 18:06
: run their acceptance / functional tests look like they pass - marilyne_Roh commented on July 2nd 19 at 18:09
July 2nd 19 at 17:59
if the system has interfaces and new functionality is being built using existing interfaces, the "break" system is impossible. Interfaces on that and interfaces.
https://habrahabr.ru/post/30444/
Your task - to guarantee immutability of interfaces. For this you need code to cover unit tests that would indicate to developers if the refactoring breaks existing interface. Yet there is certainly concern that not having an idea about the available functions will be to build a bike around. But then you need to provide documentation.

Find more questions by tags DesignTesting softwareProgrammingOOPModular testing