Component Testing
Component testing is the testing of individual software components.
It is the lowest level of testing. It refers to the testing of the smallest
items, the building blocks of the system. It is also known as: -
·
Unit Testing
·
Module Testing
·
Program Testing
BS7925-2 Standard for software component testing defines a generic process
for the testing of software components. It also defines techniques for the design and measurement of component testing.
Before component testing starts the component test strategy and project component
test plan are specified.
The project component test plan will consist of the following: -
·
Component Test Planning
The component test planning specifies how the strategy and project plan
described above apply to the component under test. This includes any exceptions to the strategy and details any stubs and
drivers that may be needed.
·
Component Test Specification
Test cases are designed using techniques selected in the strategy. Test
cases must state their objective, initial state, inputs and expected outcome. Every test case must be repeated.
·
Component Test Execution
Each Test case is executed.
·
Component Test Recording
The identity and version of the component and specification are recorded.
The actual outcome is recorded and compared to the expected outcome. Any discrepancy is logged and analysed to determine where
the error lies and the earliest test activity that needs to be repeated in order to remove the discrepancy in the test specification
or verify the removal of the fault in the component. The failure and success of the test are recorded and the test coverage
determined.
·
Checking for Test Completion
The test records are checked against the previously specified completion
criteria. If these criteria are not met, the earliest test activity that must be repeated in order to meet the criteria is
identified and the test process is restarted from that point. It may be necessary to repeat the test specification activity
to design further test cases to meet a test coverage target.
Integration Testing
Testing performed to expose faults in the interfaces and in the interaction
between integrated components BS7925-1.
The integration test plan will also consist of the following: -
·
Integration test plan
·
Integration test specification
·
Integration test execution
·
Integration test recording
·
Checking for completion.
Integration
testing is divided into two phases, which are: -
Integration testing in the small
This is concerned with bringing individual components together to test
them as a whole. The individual components may work very well on their own but you need to check the interfaces and interaction
between them. Through integration testing in the small we start assembling components into sub systems. We can then integrate
the sub-systems together to create the overall system being delivered.
Integration testing in the large
This is concerned with bringing individual systems together to ensure
that there is smooth interaction between the two systems.
When systems are integrated together there are various problems that
can arise, the most common being that the correct information is not passed from the source system to the target system.
When data is transferred between systems there is always the risk that
data will get lost in transfer, especially if it is being transmitted externally. Integration testing acts as a solution to
most of these problems.
Top to bottom integration testing
·
This is when the components at the top of the component hierarchy are tested first.
·
Stubs simulate lower level components.
·
Tested components are used to test lower level components.
·
The test process is repeated until the lowest level components are tested.
Bottom to Top integration testing
·
Lowest level components are tested first.
·
Drivers simulate higher-level components.
·
Lower level tested components are the used to test higher-level components.
·
The process is repeated until the highest-level component is tested.
System Testing
This is a requirement based testing and is divided into two phases, which
are: -
Functional system testing
Non-Functional system testing
Functional system testing
This is the testing of a system in relation to its functional requirements.
A functional requirement is a requirement that specifies a function that a system or system component must perform.
The functionality of the system is what the system does. It is the processes
that it carries out. Therefore we can say that functional testing is testing to see that the system does what it is supposed
t do.
·
Tests are derived from user requirements or system requirements.
·
Tests are based on documented requirements and not the delivered code.
·
Test preparation can occur as soon as the user requirements have been agreed.
·
Promotes quality within the finished system.
By preparing test earlier in the SDLC, any errors detected will be cheaper
to fix and any valuable test execution time will not have to be spent on test creation. Testing against requirements as opposed
to the code will also ensure that the users are getting a system that conforms to those requirements, which are actually what
they want. It is the requirements document that forms the contract of “what is asked for” and “what is delivered”.
Business process functional testing is a testing based on expected user profiles.
It should reflect the business environment and the business processes.
However, it must be ensured that all functionality is tested within the system.
Non-Functional system testing
This is the testing of everything that doesn’t relate to the functionality
of the system. This type of testing covers aspects such as ease of use and performance. The system may provide all the necessary
functionality but if it is not easy to use or does not perform very well then it will not be “fit for purpose”.
Non-Functional Test Types
Load
Performance
Stress
Security
Usability
Storage
Volume
Recovery
Non-functional system testing is more concerned with how well a system performs
its function.
All systems are written with a purpose in mind; usually with the intention
of making money and being profitable. It is the non-functional attributes that give the system a competitive edge over their
competitors.