In this article, we will discuss on System Testing. To
Understanding System Testing, we need to understand what a system is. Let us
take our self away from software testing and go to Politics. In Politics, when
we say System is corrupt, it means our political system, Administrative, and
support system is corrupt. If a project comes with requirement to test
this system as a whole, We need to test political, administrative and support
system are working correctly and we need to validate also the integration
between them is also working fine.
So now we have identified system and
sub-systems. It is important to identify what all needs to be tested in system,
i.e. we need to identify testing types required to test the system. Testing
Types needs to be identified based on the requirement in hand.Testing type for a financial site and can be different from
an e-commerce website.
While a financial domain will stress more on functional
testing – The requirement is completely tested and the calculations and
functionality is complete is utmost priority as a small mistake can lead to
huge losses and impact the business value. Next priority can be security
testing as to avoid loss to customer due to security functionality not
matching. Performance Testing can or cannot be priority to the financial project.
E.g. for a front –end system (e.g. Market Order Placement Website), Performance
testing can be priority so as to ensure the user transaction is completed in
time and issues like crashing do not take place, Whereas for a back-end system (where
accounting and settlement happens in back-end for the transactions),
Performance testing can be lower priority compared to various other testing
types.
So now we know which testing needs to be done depends upon the system requirements and on basis of testing type, we identify the tools and resources required for the testing type.
- GUI Testing – Testing the graphical user interface.
- Usability testing – Testing whether the software developed
is usable for the end users
- Performance testing – Testing how system performs in terms of responsiveness and
stability
- Compatibility testing – Tests the compatibility of software
with different environment conditions
- Exception handling – Tests different error conditions are
properly handled.
- Load testing- tests the behavior of system under both normal and peak load conditions
- Volume testing – tests the system under varying volume of
data.
- Stress testing - Tests robustness of system under stress
condition.
- Security testing - Test for Security features of the
application.
- Scalability testing – tests whether the software is
scalable.
- Sanity and Smoke testing – initial tests to identify basic
tests are working and the software is good to continue further testing.
- Exploratory/ Ad-hoc testing – Performed mostly by experience
tester without any proper documentation.
- Regression testing – Performed in the final phase of
software testing to identify any defect fixes has not resulted in residual
effect in rest of software.
- Installation testing – Testing the installing of software on
different environment.
- Accessibility testing - Test the application meets the accessibility
requirement
Also based on application type, the testing can vary. E.g.: Web Services testing for SOA Application, Localization testing for same application used across different geographies and so on. All of above testing types are a topic in itself.
Right, Once we are done with System testing, It means the
software developer team( and this includes testers too) have developed and
tested the application and feels the system is good enough to be delivered to
the client once all the open defects are closed, or some minor issues exists
which can be shared with client. Once system testing is completed, it is passed
to the client to perform acceptance testing on the same to provide itself and
release it to the required audience. So next topic will be around acceptance
testing. Perhaps next weekend. Will keep you posted.