The various test levels in the software testing are as
follows
1.
Component
testing
2.
Integration
Testing
3.
System
testing
4.
Acceptance
testing
The major advantage of this test level testing is to ensure
that the various product (Software) defects are rightly identified and fixed at
a quicker time during the development phase itself. The test levels make the
testing activity more efficient and effective one.
1. Component Testing
Component testing is also called as Unit/Module testing. It
identifies the defects and verifies the functioning of the software for the
components that are separately testable. Typically a Component can be defined
as a smallest of the Software, like a User name field for e-Mail system. The
component testing can be done separately from the software that is being
developed depending on the system.
Component testing is usually carried out in the development
environment by using appropriate tools for the test. Most often the programmer
will be involved in the component testing, but depending on the risk factor an
independent programmer may be involved to carry the testing of the code. Here
incidents are not reported formally but the code will be fixed as soon as possible.
2. Integration Testing
As the name defines, Integration tests are usually carried
to check the integration or interface between the components of the software
and interactions between hardware and software components. There may be one level of integration
testing and it may be carried out on test objects of varying size. For example,
Component integration testing tests the interactions between software
components and is done after component testing.
System integration testing tests the interactions between
different systems and may be done after system testing. So integration test can
be carried out after any other tests, not necessarily in an order.
There are two possibilities that there is increased risk in
integration test, first is when the Components or the systems are integrated
simultaneously as a result, testing needs to be carried at the end of the
integration. Second if the system or components are being integrated one by one
which result in the exhaustive testing and increasing the project completion
time.
The
integration test is carried out in following methods depending on the
architecture and the structure of the software being developed; this will vary
from time to time based on the testing module.
Top-down:
testing takes place from top to bottom, following the control flow or
architectural structure (e.g. starting from the GUI or main menu). Components
or systems are substituted by stubs. Stubs are used when the lower level unit
or component is not coded and not ready for testing. The stubs are nothing but
dummy programs which act like the actual component.
Bottom-up:
testing takes place from the bottom of the control flow upwards. Components or
systems are substituted by drivers. A driver is nothing but a dummy software
component which is used to replace the high level modules in case if they are
not ready for testing.
Functional
incremental: integration and testing takes place on the basis of the functions
or functionality, as documented in the functional specification.
The best
way is to start integration test with those interfaces that are likely to cause
major problems. By following this way it will prevent major defects at the end
of the integration stage. Integration test can be carried out by developers
also but to done as a separate team of specialist integration testers. It can
also be done by group of integrators/developers including non functional
specialists.
3. System Testing
System
testing is concerned with the behavior of the whole system/product as defined
in the expected or required specifications. System testing is most often the
final test on behalf of development to verify that the system is meeting its
requirements or specifications and its purpose may be to find as many defects
as possible. It is carried out by specialist tester that forms a dedicated and
sometimes independent, test team within development, reporting to the
development or project manager.
System
testing should investigate both functional and non-functional aspects of the
software being developed. The non-functional testing should include performance
test and reliability tests. In other hand the functional testing includes the
testing aspects of functionality of the software, the appropriate testing
techniques Specification based testing/Structural based technique can be
selected based on the software under test.
System
testing requires a controlled test environment. A system test is executed by
development organization under a controlled environment. The environment will
be similar to that of live environment.
4. Acceptance testing
Acceptance
test is often called as last level of test. Once the software is confirmed
defect free or defects are rectified then acceptance test should be carried
out. The main aim of the test is to ensure that the user requirements are met
and should address the level of confidence about the system to the users. The
acceptance tests should give answers to the following questions,
Is the
system fit to use?
Is the
system designed to meet the requirements?
Is the
system risk free in operation from the customers end?
Acceptance
testing can occur in multiple levels, it will be carried out when integration
modifications are done, also during component testing to find the usability of
the component. Usually the acceptance test is done by end user or the customer
representatives.
Other
types of acceptance testing that exist are contract acceptance testing and
compliance acceptance testing. Contract acceptance testing is performed against
a contract's acceptance criteria for producing custom-developed software.
Acceptance should be formally defined when the contract is agreed. Compliance
acceptance testing or regulation acceptance testing is performed against the
regulations which must be adhered to, such as governmental, legal or safety
regulations.
As
discussed the acceptance test is usually a satisfactory test from the customer
point of view, in some types of acceptance testing feedback from the end users
will gathered before the system is launched i.e. the system will be tested from
the customer end in live environment. Such types of testing include Alpha and
Beta testing.
Alpha test
takes place at the developer's site. A cross-section of potential users and
members of the developer's organization are invited to use the system.
Developers observe the users and note problems. Alpha testing may also be
carried out by an independent test team. Beta testing, or field testing, sends
the system to a cross-section of users who install it and use it under
real-world working conditions. The users send records of incidents with the
system to the development organization where the defects are repaired.
No comments:
Post a Comment