UNIT II System and Acceptance Testing
UNIT II System and Acceptance Testing
GCC BCA V SEM (2020) SOFTWARE PRACTICES AND TESTING Prof: Vaibhav Ambekar
FUNCTIONAL SYSTEM TESTING
Functional testing is performed at different phases and the focus is on product level features. As functional
testing is performed at various testing phases, there are two obvious problems. One is duplication and other
one is gray area.
Duplication refers to the same tests being performed multiple times and gray area refers to the certain test
being missed out in all the phases.
Gray areas in testing happen due to lack of product knowledge, lack of knowledge of customer usage, and lack
of co-ordination across test teams.
Some of the common Functional Testing techniques are given below.
1. Design/architecture verification
2. Business vertical testing
3. Deployment testing
4. Beta testing
5. Certification, standards, and testing for compliance.
Design/ architecture verification
In this method of functional testing, the test cases are developed and checked against the design and architecture
to see whether they are actual product-level test cases. Comparing this with integration testing, the test cases for
integration testing are created by looking at interfaces whereas system level test cases are created first and
verified with design and architecture to check whether they are product-level or component-level test cases.
Some of the guidelines used to reject test cases for system functional testing include the following.
1. Is this focusing on code logic, data structures, and unit of the product?(if yes, then it
belongs to unit testing.)
2. Is this specified in design and architecture specification for integration testing? (if yes,
then it belongs to integration testing.)
3. Is this specified in the functional specification of any component? (if yes, then it belongs
to component testing.)
4. Is it focusing on product implementation but not visible to customer?(this is focusing on
implementation-to be covered in unit/component/integration testing.)
5. Is it the right mix of customer usage and product implementation?(customer usage is a
prerequisite for system testing.)
Another important aspect is called terminology. To explain this concept let us take the example
of e-mail. An e-mail sent in the insurance context may be called a claim whereas when an e-mail
is sent in a loan-processing system, it is called a loan application. The users would be familiar
with this terminology rather than the generic terminology of “e-mail.”
Yet another aspect involved in business vertical testing is syndication: Solution integrators, service providers
pay a license free to a product organization and sell the products and solutions using their name and image. In
this case the product name, company name, technology names, and copyrights may belong to the latter parties
or associations.
Business vertical testing can be done in two ways-simulation and replication.
In simulation of a vertical test, the customer or the tester assumes requirements and the business flow is
tested.
In replication, customer data and process is obtained and the product is completely customized,
tested, and the customized product as it was tested is released to the customer.
Deployment testing
System testing is the final phase before product delivery. By this time the prospective customers and their
configuration would be known and in some cases the products would have been committed for sale. Type of
deployment testing that happens in a product development company to ensure that customer deployment
requirements are met is called offsite deployment.
Deployment testing is also conducted after the release of the product by the utilizing the resources and setup
available in customer‟ locations. This is a combined effort by the product development organization and the
organization trying to use the product. This is called onsite deployment. Onsite deployment testing is done at
two stages.
In the first stage(stage1), actual data from the live system is taken and similar machines and configurations
are mirrored, and the operations from the users are rerun on the mirrored deployment machine. This gives an
idea whether the enhanced or similar product can perform the existing functionality without affecting the user.
In the second stage (stage2), after a successful first stage, the mirrored system is made a live system that runs
the new product. Regular backups are taken and alternative methods are used to record the incremental
transactions from the time mirrored system became live the recorded that was used in the first stage can also be
used here.
Beta Testing
• A product may be rejected by a customer even after delivery due to following reasons:
– Not meeting the implicit requirements
– Failure to reflect the requirement changes in the product.
– Not resolving the ambiguity in the requirement.
– Understanding of the requirement may be correct, but implementation may be wrong.
– Lack of usability and documentation
• To reduce the risk of such rejection, periodic feedback is obtained on the product.
GCC BCA V SEM (2020) SOFTWARE PRACTICES AND TESTING Prof: Vaibhav Ambekar
One of the mechanisms used is sending the product that is under test to the customer and receiving the
feedback. This is called beta testing.
This testing is performed by the customer and helped by the product development organization. During the
entire duration of beta testing, there are various activities that are planned and executed according to a
specific schedule. This is called a beta program.
Some of the activities involved in the beta program are as follows.
• Collecting the list of customers and their beta testing requirements.
• Schedule Beta program & inform the customers. End date should be reasonably before the release
date so that defects can be fixed.
• Sending documents & training the customers about the product.
• Sending the product for Beta testing.
• Collecting the feedback periodically.
• Responding to customer feedback with fixes & document changes.
• Analyzing and concluding whether the beta program met the exit criteria.
• Communicate the progress and action items to customers and formally closing the beta program.
Standard Testing:
There are many standards for each technology area and the product may need to conform to those standards.
This is very important as adhering to these standards makes the product interact easily with other products.
Some of the standards are evolved by the open community and published as public domain standards(for
example, open LDAP standard).
Testing the product to ensure that these standards are properly implemented is called as Testing for
Standards. Tools associated with those open standards can be used free of cost to verify the standards
implementation.
Compliance Testing:
There are many contractual and legal requirements for a product. Failing to meet these may result in business
loss and bring legal action against the origanization and its senior management.
The following are some examples of compliance testing.
Compliance to FDA This act by the food and drug administration requires that adequate testing be done for
products such as cosmetics, drugs, and medical sciences.
508 accessibility guidelines This accessibility set of guidelines requires the product to meet some
requirements for its physically challenged users. These guidelines insist that the product should be as accessible
to physically challenged people as it is to people without those disabilities.
GCC BCA V SEM (2020) SOFTWARE PRACTICES AND TESTING Prof: Vaibhav Ambekar
Compared to functional testing, non-functional testing is less repeated as it involves more effort, time &
resources.
Challenges
6.5.1 Setting up the configuration
Setting up a configuration is a challenge for the following reasons.
1. Given the high diversity of environments and variety of customers, it is very difficult to predict the type of
environment that will be used commonly by the customers.
2. Testing a product with different permutations and combinations of configurations may not prove effective
since the same combination of environment may not be used by the customer and testing for several
combinations involves effort and time.
3. The cost involved in setting up such environments is quite high.
4. The people may not have the skills to set up the environment.
6. It is difficult to predict the exact type and nature of data that the customer may use.
Scalability testing
The objective of scalability testing is to find out the maximum capability of the product Parameters. As the
exercise involves finding the maximum, the resources that are needed for this kind of testing are normally very
high.
For example, one of the scalability test case could be finding out how many client machines can
simultaneously log in to the server to perform some operations.
Hence a high-end configuration is selected and the scalability parameter is increased
step by step to reach the maximum capability.
• It Helps to identify major bottlenecks in a product.
• After the test, collected data is analyzed & appropriate actions are taken.
• Needs fine analysis to find out where is the problem & what exactly is the corrective action.
• Demand on the resources increases exponentially, scalability parameter increases & reaches
saturation-max capability.
• Takes care of product bottleneck & resource up gradation.
• Whenever tuning is performed, recommended values of the parameters is documented, called a
“sizing guide” .
• Requires experience & detailed study of the product.
• Impact caused by fixing scalability defects is taken care by reliability testing.
In scalability testing, the demand on resources tends to grow exponentially when the scalability parameter is
increased. The scalability reaches a saturation point beyond which it cannot be improved. This is called the
maximum capability of a scalability parameter. Even though resources may be available, product limitation may
not allow scalability. This is called a product bottleneck.
GCC BCA V SEM (2020) SOFTWARE PRACTICES AND TESTING Prof: Vaibhav Ambekar
Reliability testing
Reliability testing is done to evaluate the product’s ability to perform its required functions under stated
conditions for a specified period of time or for a large number of iterations.
Examples: queering a database continuously for 48 hours and performing login operations 10,000 times.
The reliability of a product should not be confused with reliability testing.
Producing a reliable product requires sound techniques, good discipline, robust processes, and strong
management, this product reliability is achieved by focusing on the following activities.
1. Defined engineering processes Software reliability can be achieved by following clearly
defined processes.
2. Review of work products at each stage At the end of each stage of the product
development life cycle, the work products produced are reviewed. This ensures early
detection of and their fixes as soon as they are introduced.
3. Change management procedures Many errors percolate to the product due to improper
impact analysis of changes made to the product.
4. Review of testing converges Allocating time for the different phases and type of testing can
help in catching errors as and when the product is being developed, rather than after the
product is developed.
5. Ongoing monitoring of the product Once the product has been delivered, it is analyzed
proactively for any possibly missed error in this case the process as well as the product is
fixed for missed defects. This prevents the same type of defects from reappearing.
Reliability testing on the other hand refers to testing the product for a continuous period of time.Performing
good reliability testing does not ensure a reliable product on its own, reliability testing only delivers a
“reliability tested product” but not a reliable product.
In figure 6.4, it can be seen that the product is very close to meeting the reliability criteria towards the end.
Figure 6.4(a) suggests that the progress towards meeting the criteria is smooth,whereas in figure 6.4 (b), the
transition contains spikes. These spikes indicate that defects in the product for the reliability tests go up an
down periodically. This may be a pointer to indicate that the defect fixes are creating new defects in the system.
Analyzing the spikes and taking action to avoid the spikes, both from the process and from the product
perspective.
Stress testing
Stress testing is done to evaluate a system beyond the limits of specified requirements or
resources, to ensure that system does not break.
Stress testing is done to find out if the product‟s behavior degrades under extreme conditions and when it is
denied the necessary resources.
Stress testing help in understanding how the system can behave under extreme (insufficient memory,
inadequate hardware) and realistic situatations.
To know the conditions under which these tests fail so that the max limits, in terms of simultaneous users,
search criteria, large no of transactions is known.
• Though, tools are available for such tests, it is recommended to repeat the tests without tools.
• In these tests, the load is increased through various means (clients, transactions etc) till ans beyond
the resources are completely utilized.
• The product reaches a „Stress point‟ when some of the transactions start failing.
• At this point, the load is slightly reduced to see if the product recovers & the failure rate decreases.
This process is repeated to see consistency in product‟s behavior.
• The time required for the product to quickly recover from the failure is represented by MTTR (Mean
Time To Recover).
• MTTR may be different for different operations.
• Several iterations of tests for different operations are conducted around the Stress point & MTTR is
calculated from mean.
• The tests performed to calculate Stress point need to be closer to real life scenario.
The following guidelines can be used to select the tests for stress testing.
1. Repetitive tests: Executing repeated tests ensures that at all times the code works as expected.
2. Concurrency: Concurrent tests ensure that the code is exercised in multiple paths and
simultaneously.
3. Magnitude: This refers to the amount of load to be applied to the product to stress the system.
4. Random variation :Stress testing depends on increasing/ decreasing variable load. Tests that
stress the system with random inputs (in terms of number of users, size of data).
Interoperability testing
Interoperability testing is done to ensure the two or more products can exchange information, use
information, and work properly together.
System can be interoperable unidirectional (the exchange of information is done way) or bidirectional
(exchange of information in both ways). For example, the text available in a text
editor can be exported into a Microsoft word application using the “insert->File” option. But a
picture available in Microsoft word cannot be exported into text editor. This represents one-way
interoperability. The two-way interoperability is represented by exchange of information
between email management (Microsoft outlook) and Microsoft word, where information can be
cut and pasted on both directions.
GCC BCA V SEM (2020) SOFTWARE PRACTICES AND TESTING Prof: Vaibhav Ambekar
Interoperability can not be achieved unless two or more products are designed for exchanging
information.
It is more important in context of Internet. It is essential for more & more products to be interoperable so
that they can communicate with all OS, browsers, development tools, compilers & so on.
Acceptance testing
Definition: Acceptance testing is done by the customers or representatives of the customer to
check whether the product is ready for use in the real life environment.
The customer defines a set of test cases that will be executed to qualify and accept the product.
Acceptance tests are written to execute near real-life scenarios. Apart from verifying the functional
requirements, acceptance tests are run to verify the non-functional aspects of the system also.
Acceptance criteria
Acceptance criteria-service level agreements Service level agreements (SLA) can become part of
acceptance criteria. Service level agreements are generally part of a contract
signed by the customer and product organization.
For example, time limits to resolve those defects can be mentioned part of SLA such as
_ All major defect that come up during first three months of deployment need to be fixed
free of cost;
_ Downtime of the implemented system should be less than 0.1%;
_ All major defects are to fixed within 48 hours of reporting.
GCC BCA V SEM (2020) SOFTWARE PRACTICES AND TESTING Prof: Vaibhav Ambekar
Selecting test cases for acceptance testing
1. End-to-end functionality verification: It ensures that all business transactions are tested with real life
scenarios.
2. Domain tests :Test cases that reflect business domain knowledge are included.
3. User scenario tests Acceptance tests reflect the real-life user scenario verification. As a
result, test cases that portray them are include.
4. Basic sanity tests Tests that verify the basic existing behavior of the product are included. These tests ensure
that the system performs the basic operations that it was intended to do.
5. New functionality When the product undergoes modifications of changes, the acceptance test cases focus on
verifying the new features.
6. A few non-functional tests Some non-functional tests are include and executed as part of acceptance testing
to double-check that the non-functional aspects of the product meet the expectations.
7. Tests pertaining to legal obligations and service level agreements Tests that are
written to check if the product complies with certain legal obligations and SLAs are included in the acceptance
test criteria.
8. Acceptance test data Test cases that make use of customer real-life data are included for acceptance testing.
GCC BCA V SEM (2020) SOFTWARE PRACTICES AND TESTING Prof: Vaibhav Ambekar