As an integral part of our development life-cycle, our extensive automated testing is used to identify strengths, weaknesses, and potential issues within our code-base in order to help us continually produce a very high quality product.
Our automated tests can be categorized into five primary groups:
- Build Testing
- Unit Testing
- Component Testing
- Integration Testing
- System Testing
Build Testing verifies that the Asterisk SCF source-code builds properly on a broad spectrum of operating systems, distributions, and architectures.
Unit Testing focuses on a testing specific software classes. Unit Tests provide a mock environment for a specific class to operate in, and exercises the class's interface. The test framework instantiates the class within the test process itself.
Component Testing focuses on a specific Asterisk SCF component. Asterisk SCF consists of a set of deployable components which expose defined public interfaces to the rest of the system. Any dependent components of the component under test are supplied by the test framework as mock components which provide responses under control of the tests. The test framework uses the public interfaces of the component under test to verify its behavior.
Integration testing verifies that specific components are interoperable with one another. Ideally, pairs of components with strong dependencies are tested, and then larger collections that address specific areas of functionality.
This level of testing is designed to validate that the fully integrated system functions as intended and meets certain performance criteria. Since it will be possible to deploy and configure Asterisk SCF in a wide variety of configurations, we are continually trying to identify specific deployment Use Cases to base additional tests on.
System Testing refers to all tests of the fully integrated system, and can be subdivided into more specific categories:
- Functional Testing
- Performance Testing
- Stress Testing