ST - Module 3: Integration, System and Acceptance Testing Integration Testing
ST - Module 3: Integration, System and Acceptance Testing Integration Testing
Test
Case Test Case Objective Test Case Description Expected Result
ID
Check the interface link Enter login credentials To be directed to the
1 between the Login and and click on the Login Mail Box
Mailbox module button
Check the interface link From Mailbox select Selected email should
2 between the Mailbox and the email and click a appear in the
Delete Mails Module delete button Deleted/Trash folder
Integration Testing Techniques
1. Top-down integration
2. Bottom-up integration
3. Bi-directional integration
4. System integration
Top-down integration
• Top-Down Integration Testing is a method in which integration testing takes place
from top to bottom following the control flow of software system.
• The higher-level modules are tested first and then lower-level modules are tested
and integrated in order to check the software functionality.
• Stubs are used during Top-down integration testing, in order to simulate the
behavior of the lower-level modules that are not yet integrated.
• Stubs are the modules that act as temporary replacement for a called module and
give the same output as that of the actual product.
• Stubs are used for testing if some modules are not ready.
• Advantages:
o Fault Localization (detecting fault in software) is easier.
o Possibility to obtain an early prototype.
o Critical modules are tested on priority
o Major design flaws could be found and fixed first.
• Disadvantages:
o Needs many Stubs.
o Modules at a lower level are tested inadequately.
• Example of Top-down integration:
• The order in which the interfaces are to be tested is shown in the following table:
Step Interfaces Tested (BFS)
1 1-2
2 1-3
3 1-4
4 1-2-5
5 1-3-6
6 1-3-6-(3-7)
7 (1-2-5)-(1-3-6-(3-7))
8 1-4-8
9 (1-2-5)-(1-3-6-(3-7))-(1-4-8)
• The order in which the interfaces are to be tested is shown in the following table:
Step Interfaces Tested
1 1-5
2 2-6, 3-6
3 2-6-(3-6)
4 4-7
5 1-5-8
6 2-6-(3-6)-8
7 4-7-8
8 (1-5-8)-(2-6-(3-6)-8)-(4-7-8)
• The number of steps in the bottom-up approach can be optimized into four steps,
by combining steps 2 and 3 and by combining steps 5–8 as shown above.
Bi-Directional integration
• It’s a combination of top-down and bottom-up integration approach used
together to derive integration steps.
System Integration
• System Integration is the process of integrating all the physical and virtual
components of a system.
• The physical components consist of the various machine systems, computer
hardware, inventory, etc.
• The virtual components consist of data stored in databases, software and
applications.
• The process of integrating all these components, so that act like a single system, is
the main focus of system integration.
• Advantages:
o System integration using the big bang approach is well suited in a product
development scenario where the majority of components are already
available and stable and very few components get added or modified.
o In this case, instead of testing component interfaces one by one, it makes
sense to integrate all the components at one go and test once.
o This saves effort and time for the multi-step component integrations.
• Disadvantages:
o When a failure/defect is encountered during system integration, it is difficult
to locate the problem, to find out in which interface the defect exists.
o The testers may need to focus on specific interfaces and test them again.
o Finding and correcting the root cause of the defect may be a difficult issue.
o When integration testing happens in the end, the pressure from the
approaching release date is very high. This pressure on the engineers may
cause them to compromise on the quality of the product.
o A certain component may take an excessive amount of time to be ready. This
prevents testing other interfaces and wastes time.
Scenario Testing
• Scenario testing is defined as a set of realistic user activities that are used for
evaluating the product.
• It is also defined as the testing involving customer scenarios.
• There are two methods to evolve scenarios:
o System scenarios
o Use-case scenarios/role-based scenario
System Scenarios
System scenario is a method whereby the set of activities used for scenario testing
covers several components in the system.
The following approaches can be used to develop system scenarios:
1. Story line:
• Develop a story line that combines various activities of the product that may be
executed by an end user.
• A user enters his or her office, logs into the system, checks mail, responds to
some mails, compiles some programs, performs unit testing and so on.
• All these typical activities carried out in the course of normal work, when coined
together become a scenario.
• A customer fills up a check and gives it to a clerk in the bank. The clerk verifies the
balance from the computer and gives the required cash to the customer.
• The customer is the actor, the clerk is the agent, and the response given by the
computer, which gives the balance in the account, is called the system response.
• This way of describing different roles in test cases helps in testing the product
without getting into the details of the product.
• In the above example, the actor (i.e., the customer) need not know what the
official is doing and what command he is using to interact with the computer. The
actor is only concerned about getting the cash.
• The agent (i.e., the clerk) is not concerned about the logic of how the computer
works. He or she is only interested in knowing from the computer whether he or
she can give the requested cash or not.
• However, the system behavior (computer logic) needs to be tested before applying
the sequence of agent activities and actor activities.
• In this example, the activities performed by the actor and the agent can be tested
by testers who do not have much knowledge of the product. Testers who have in-
depth knowledge of the product can perform the system behavior part of testing.
Example 2 of Use case scenario (withdrawing cash from an ATM)
• The agent part of the use cases is not needed in all cases.
• In a completely automated system involving the customer and the system, use
cases can be written without considering the agent portion.
• Let us extend the earlier example of cash withdrawal using an ATM.
Actor System response
User wants to withdraw cash and Request for password or PIN
inserts the card in the ATM machine
User fills in the password or PIN Validate the password or PIN.
Give a list containing types of accounts
User selects an account type Ask the user for amount to withdraw
User fills in the amount of cash Check availability of funds Update account
required balance Prepare receipt Dispense cash
Retrieve cash from ATM Print receipt
All the activities in the defect bash are planned activities, except for what to be
tested. It involves several steps:
1. Choosing the Frequency and Duration of Defect Bash:
• Frequent defect bashes will incur low return on investment, and too few
defect bashes may not meet the objective of finding all defects
• Duration is also an important factor. Optimizing the small duration is a big
saving as a large number of people are involved.
1. Design/Architecture Verification
• In this method of functional testing, the System-level test cases are developed and
checked against the design and architecture to check whether they are actual
product-level (aka system-level) test cases.
• This technique helps in validating the product features that are written based on
customer scenarios and verifying them using product implementation.
• To know whether a Test Case belongs to System Functional testing, we have the
following guidelines:
o Is this focusing on code logic, data structures, and unit of the product?
→ If yes → shift to Unit Testing
o Is this specified in the functional specification of any component?
→ If yes → shift to Component Testing
o Is this specified in design & architecture specification for integration testing?
→ If yes → shift to Integration Testing
o Is it focusing on product implementation but not visible to customers?
→ If yes → shift to Unit/Component/Integration Testing
o Is it the right mix of customer usage and product implementation?
→ If yes → System Testing
3. Deployment Testing
• System testing is the final phase before product delivery. By this time its
prospective customers and configuration used by them would be known.
• In some cases, the products would have been committed for sale.
• Hence, system testing is the right time to test the product for those customers
who are waiting for it.
• Offsite deployment
o This type of deployment testing happens in a product company.
o It ensures that customer deployment requirements are met.
• Onsite deployment
o This type of deployment testing after the release of the product.
o It utilizes the resources and setup available in customers’ locations.
o This is a combined effort by the product development organization and the
organization trying to use the product (customer).
Stage 2
• After a successful first stage, the mirrored system is made a live system that runs
the new product.
• This stage helps to avoid any major failures since some of the failures can be
noticed only after an extended period of time.
• In this stage, the old system is preserved to enable going back if any major failures
are observed at this stage.
• If no failures are observed in this stage of deployment for an extended period (for
example, one month), then the onsite deployment is considered successful and
the old live system is replaced by the new system.
• Figure: The test engineer records all transactions using a recorder and other
methods and plays back on the old live system (shown again by dotted lines).
4. Beta Testing
• A product rejected by the customer after delivery means a huge loss to the
organization. There are many reasons for a product not meeting the customer
requirements. They are as follows:
1. Product may not be meeting implicit customer requirements like ease of use
2. Customers’ business requirements keep changing constantly and a failure to
reflect these changes in the product makes the latter obsolete
3. Using ambiguous customer requirements and not resolving them with the
customer results in rejection of the product.
4. The understanding of the requirements may be correct but their
implementation could be wrong.
5. Lack of usability and documentation makes it difficult for the customer to
use the product
• To reduce the risk of rejection, which is the objective of system testing, periodic
feedback is obtained on the product.
• One of the mechanisms used is sending the product that is under test to the
customers and receiving the feedback. This is called beta testing.
• This testing is performed by the customer and helped by the product organization.
• 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:
1. Collecting the list of customers and their beta testing requirements along
with their expectations on the product
2. Working out a beta program schedule and informing the customers. Not all
the customers in the list need to agree to the start date and end date of the
beta program. The end date of a beta program should be reasonably before
the product release date so that the beta testing defects can be fixed before
the release.
3. Sending documentation for reading in advance and training the customer on
product usage.
4. Prepare sets of entry/exit criteria for beta testing.
5. Sending the beta product to the customer and enable them to carry out their
own testing.
6. Collecting the feedback periodically from the customers and prioritizing the
defects for fixing
7. Responding to customers’ feedback with product fixes or documentation
changes and closing the communication loop with the customers periodically
8. Analyzing and concluding whether the beta program met the exit criteria.
9. Communicate the progress and action items to customers and formally
closing the beta program.
10. Incorporating the appropriate changes in the product.
Does not check the system’s reliability It checks the system’s reliability and
and security security
5. Certification, Standards and Testing for Compliance
Certification
• A product needs to be certified with the popular hardware, operating system,
database, and other infrastructure pieces. This is called certification testing.
• The sales of a product depend on whether it was certified with the popular
systems or not.
• This is one type of testing where there is equal interest from the product
development organization, the customer, and certification agencies to certify
the product.
• The certification agencies produce automated test suites, the product
development organization runs those test suites and corrects the problems to
ensure that tests are successful.
• The results are then sent to the certification agencies and they give the
certification for the product. The test suite may be rerun by the certification
agencies to verify the results.
Standards
• There are many standards for each technology area and the product may need
to conform to those standards.
• So, companies select the standards to be implemented at the beginning of the
product cycle.
• This also helps the customer not to worry too much about the product’s future
compatibility with other products.
• Eg: for example, IPv6 in networking and 4G in mobile technology
• Testing the product to ensure that these standards are properly implemented
is called testing for standards.
• Once the product is tested for a set of standards, they are published in the
release documentation for the information of the customers so that they know
what standards, are implemented in the product.
Compliance
• Testing the product for contractual, legal, and statutory compliance is one of
the critical activities of the system testing team. 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. This also requires that all the test reports along with complete
documentation of test cases, execution information for each test cycle along
with supervisory approvals be preserved for checking adequacy of tests by the
FDA.
• 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.
• SOX (Sarbanes–Oxley's Act): This act requires that products and services be
audited to prevent financial fraud in the organization. The software is required
to go through all transactions and list out the suspected faulty transactions for
analysis. The testing for this act helps the top executives by keeping them
aware of financial transactions and their validity.
• OFAC and Patriot Act: This act requires the transactions of the banking
applications be audited for misuse of funds for terrorism.
Non-Functional Testing
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 required for this kind
of testing are normally very high.
• For example, one of the scalability test cases could be finding out how many client
machines can simultaneously log in to the server to perform some operations. In
Internet space, some of the services can get up to a million access to the server.
Hence, trying to simulate that kind of real-life scalability parameter is very difficult
but at the same time very important.
• At the beginning of the scalability exercise, the maximum capability of the system
may not be known. Hence a high-end configuration is selected and the scalability
parameter is increased step by step to reach the maximum capability
• If the customer’s requirements are more than what the system can provide, the
system is reworked to meet the requirements before scalability testing can begin
• Contrary to other types of testing, scalability testing does not end when the
customer requirements are met. The testing continues till the maximum
capability of a scalable parameter is found out for a particular configuration.
Having a highly scalable system that considers the future requirements of the
customer helps a product to have a long lifetime.
• Failures during scalability test include the system not responding, or the system
crashing, and so on. But whether the failure is acceptable or not has to be decided
on the basis of business goals and objectives.
• For example, a product not able to respond to 100 concurrent users while its
objective is to serve at least 200 users simultaneously is considered a failure. When
a product expected to withstand only 100 users, fails, when its load is increased to
200, then it is a passed test case and an acceptable situation.
• Scalability tests are performed on different configurations to check the product's
behavior. For each configuration, data are collected and analyzed.
• Scalability Testing Attributes:
• Response Time • Performance measurement under load
• Screen transition • Network Usage
• Throughput • CPU / Memory Usage
• Time (Session time, reboot time, • Web Server ( request and response per
printing time, task execution time) seconds)
• Performance measurement with a • Performance measurement with a
number of users number of users
• Request/Hits/Transactions per seconds
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 of reliability include querying a database continuously for 48 hours and
performing login operations 10,000 times. The result after each iteration should
remain the same i.e., it should be reliable.
• Producing a reliable product requires sound techniques, good discipline, robust
processes, strong management, and involves a complete range of activities for
every role or function in a product organization.
• 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.
▪ The team is mandated to understand requirements for reliability, right
from the beginning and focuses on creating a reliable design upfront.
▪ All the activities (such as design, coding, testing, documentation) are
planned, taking into consideration the reliability requirements of the
software.
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 helps in understanding how the system can behave under extreme
(insufficient memory, inadequate hardware) and realistic situations.
• System resources upon being exhausted may cause such situations.
• Extreme situations such as a resource not being available can also be simulated.
• The product is over-loaded deliberately to simulate the resource crunch and to
find out its behavior.
• It is expected to gracefully degrade on increasing the load, but the system is not
expected to crash at any point of time during stress testing.
• Unlike reliability testing which is performed by keeping a constant load condition
till the test case is completed (the load is increased only in the next iteration of the
test case), in stress testing, the load is generally increased through various means
such as increasing the number of clients, users, and transactions till and beyond
the resources are completely utilized.
• When the load keeps on increasing, the product reaches a stress point when some
of the transactions start failing due to resources not being available.
• To continue the stress testing, the load is slightly reduced below this stress point
to check whether the product recovers and whether the failure rate decreases
appropriately.
• This exercise of increasing/decreasing the load is performed 2/3 times to check
for consistency in behavior and expectations.
• Sometimes, the product may not recover immediately when the load is
decreased.
• There are several reasons for this:
o Some transactions may be in the wait queue, delaying the recovery.
o Some rejected transactions many need to be purged, delaying the recovery.
o Due to failures, some clean-up operations may be needed by the product,
delaying the recovery.
o Certain data structures may have got corrupted and may permanently
prevent recovery from stress point.
Acceptance Testing
• Acceptance testing is a phase after system testing that is normally done by the
customers or representatives of the customer.
• The customer defines a set of test cases that will be executed to qualify and
accept the product.
• Acceptance test cases are normally small in number and are not written with the
intention of finding defects.
• These test cases are executed by the customers themselves to quickly judge the
quality of the product before deciding to buy the product.
• If acceptance tests are performed by the product organization alone, acceptance
tests are executed to verify whether the product meets the acceptance criteria
defined during the requirements definition phase.
• Acceptance test cases are black box type of test cases.
• They are directed at verifying one or more acceptance criteria.
• Acceptance test cases failing in a customer site may cause the product to be
rejected and may mean financial loss or may mean rework of product involving
effort and time.
Acceptance Criteria
1. Product Acceptance
• Existing test cases are looked at and certain categories of test cases can be
grouped to form acceptance criteria.
• For example, all performance test cases should pass meeting the response time
criteria.
• Testing for adherence to any specific legal or contractual terms is included in
the acceptance criteria. Testing for compliance to specific laws like Sarbanes–
Oxley can be part of the acceptance criteria.
2. Procedure Acceptance
• Acceptance criteria can be defined based on the procedures followed for
delivery.
• An example of procedure acceptance could be documentation and release
media. Some examples of acceptance criteria of this nature are as follows:
o User, admin and troubleshooting documentation should be part of the
release.
o Along with binary code, the source code of the product with build scripts
to be delivered in a CD.
o A minimum of 20 employees are trained on the product usage prior to
deployment
3. Service Level Agreements (SLAs)
• Service level agreements are generally part of a contract signed by the
customer and product organization.
• The important contract items are taken and verified as part of acceptance
testing. For example:
o All major defects that come up during first three months of deployment
need to be fixed free of cost
o Downtime of the implemented system should be less than 0.1%
o All major defects are to be fixed within 48 hours of reporting.
Selecting Test Cases for Acceptance Testing
• The test cases for acceptance testing are selected from the existing set of test
cases from different phases of testing.
• The following are the guidelines to decide which test cases can be included for
acceptance testing:
1. End-to-end functionality verification:
▪ Test cases that include the end-to-end functionality of the product are
taken up for acceptance testing.
▪ This ensures that all the business transactions are tested as a whole and
those transactions are completed successfully.
▪ Real-life test scenarios are tested when the product is tested end-to-end.
2. Domain tests:
▪ Since acceptance tests focus on business scenarios, the product domain
tests are included.
▪ 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 included.
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.
▪ Such tests may gain more attention when a product undergoes changes
or modifications.
▪ It verifies that the existing behavior is retained without any breaks.
5. New functionality: When the product undergoes modifications or changes,
the acceptance test cases focus on verifying the new features.
6. A few non-functional tests: Some non-functional (scalability, reliability etc)
tests are included 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 SLAs: 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.