Software Testing and Quality Assurance: System Test Categories
Software Testing and Quality Assurance: System Test Categories
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 1
Outline of the Chapter
• Taxonomy of System Tests
• Basic Tests
• Functionality Tests
• Robustness Tests
• Interoperability Tests
• Performance Tests
• Scalability Tests
• Stress Tests
• Load and Stability Tests
• Regression Tests
• Documentation Tests
• Regulatory Tests
– Software Safety
– Safety Assurance
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 2
Taxonomy of System Tests
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 5
Basic Tests
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 6
Basic Tests
• Light Emitting Diode: The LED (Light Emitting Diode) tests are
designed to verify that the system LED status indicators functioning
as desired
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 7
Functionality Tests
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 9
Functionality Tests
• Logging and Tracing Tests
– Logging and Tracing Tests are designed to verify the configurations and
operations of logging and tracing
– This also includes verification of “flight data recorder: non-volatile Flash
memory” logs when the system crashes
• Element Management Systems (EMS) Tests
– EMS tests verifies the main functionalities, which are to manage, monitor and
upgrade the communication systems network elements
– It includes both EMS client and EMS servers functionalities
Note: Read the SNMP example described in the book
• Management Information Base (MIB) Tests
– MIB tests are designed to verify
• Standard MIBs including MIB II
• Enterprise MIBs specific to the system
Note: Read the SNMP example described in the book
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 10
Functionality Tests
• Graphical User Interface Tests
– Tests are designed to look-and-feel the interface to the users of an application
system
– Tests are designed to verify different components such as icons, menu bars,
dialog boxes, scroll bars, list boxes, and radio buttons
– The GUI can be utilized to test the functionality behind the interface, such as
accurate response to database queries
– Tests the usefulness of the on-line help, error messages, tutorials, and user
manuals
– The usability characteristics of the GUI is tested, which includes the following
• Accessibility: Can users enter, navigate, and exit with relative ease?
• Responsiveness: Can users do what they want and when they want in a
way that is clear?
• Efficiency: Can users do what they want to with minimum number of
steps and time?
• Comprehensibility: Do users understand the product structure with a
minimum amount of effort?
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 11
Functionality Tests
• Security Tests
– Security tests are designed to verify that the system meets the security
requirements
• Confidentiality
– It is the requirement that data and the processes be protected from
unauthorized disclosure
• Integrity
– It is the requirement that data and process be protected from unauthorized
modification
• Availability
– It is the requirement that data and processes be protected form the denial of
service to authorized users
– Security test scenarios should include negative scenarios such as misuse and
abuse of the software system
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 12
Functionality Tests
• Security Tests (cont’d) : useful types of security tests includes the
following:
– Verify that only authorized accesses to the system are permitted
– Verify the correctness of both encryption and decryption algorithms for
systems where data/messages are encoded.
– Verify that illegal reading of files, to which the perpetrator is not authorized, is
not allowed
– Ensure that virus checkers prevent or curtail entry of viruses into the system
– Ensure that the system is available to authorized users when a zero-day attack
occurs
– Try to identify any “backdoors” in the system usually left open by the software
developers
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 13
Functionality Tests
• Feature Tests
– These tests are designed to verify any additional functionalities which are
defined in requirement specification but not covered in the functional category
discussed
– Examples
• Data conversion testing
• Cross-functionality testing
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 14
Robustness Tests
Robustness means how much sensitive a system is to erroneous input and changes
its operational environment
Tests in this category are designed to verify how gracefully the system behaves in
error situations and ina a changed operational environment
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 15
Robustness Tests
• Boundary value
– Boundary value tests are designed to cover boundary conditions, special
values, and system defaults
– The tests include providing invalid input data to the system and observing how
the system reacts to the invalid input.
• Power cycling
– Power cycling tests are executed to ensure that, when there is a power glitch in
a deployment environment, the system can recover from the glitch to be back
in normal operation after power is restored
• On-line insertion and removal
– On-line Insertion and Removal (OIR) tests are designed to ensure that on-line
insertion and removal of modules, incurred during both idle and heavy load
operations, are gracefully handled and recovered
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 16
Robustness Tests
• High Availability
– The concept of high availability is also known as fault tolerance
– High availability tests are designed to verify the redundancy of individual
modules, including the software that controls these modules.
– The goal is to verify that the system gracefully and quickly recovers from
hardware and software failures without adversely impacting the operation of
the system
– High availability is realized by means of proactive methods to maximize
service up-time, and to minimize the downtime
• Degraded Node
– Degraded node (also known as failure containment) tests verify the operation
of a system after a portion of the system becomes non-operational
– It is a useful test for all mission-critical applications.
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 17
Interoperability Tests
• Tests are designed to verify the ability of the system to inter-operate
with third party products
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 18
Performance Tests
• Tests are designed to determine the performance of the actual system
compared to the expected one
• Tests are designed to verify response time, execution time,
throughput, resource utilization and traffic rate
• One needs to be clear about the specific data to be captured in order
to evaluate performance metrics.
• For example, if the objective is to evaluate the response time, then
one needs to capture
– End-to-end response time (as seen by external user)
– CPU time
– Network connection time
– Database access time
– Network connection time
– Waiting time
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 19
Scalability Tests
• Tests are designed to verify that the system can scale up to its
engineering limits
• Scaling tests are conducted to ensure that the system response time
remains the same, or increases by a small amount, as the number of
users are increased.
• There are three major causes of these limitations:
– data storage limitations
– network bandwidth limitations
– speed limit
• Extrapolation is often used to predict the limit of scalability
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 20
Stress Tests
• The goal of stress testing is to evaluate and determine the behavior of
a software component while the offered load is in excess of its
designed capacity
• The system is deliberately stressed by pushing it to and beyond its
specified limits
• It ensures that the system can perform acceptably under worst-case
conditions, under an expected peak load. If the limit is exceeded and
the system does fail, then the recovery mechanism should be invoked
• Stress tests are targeted to bring out the problems associated with one
or more of the following:
– Memory leak
– Buffer allocation and memory carving
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 21
Load and Stability Tests
• Tests are designed to ensure that the system remains stable for a long
period of time under full load
• When a large number of users are introduced and applications that
run for months without restarting, a number of problems are likely to
occur:
– the system slows down
– the system encounters functionality problems
– the system crashes altogether
• Load and stability testing typically involves exercising the system
with virtual users and measuring the performance to verify whether
the system can support the anticipated load
• This kind of testing help one to understand the ways the system will
fare in real-life situations
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 22
Reliability Tests
• Reliability tests are designed to measure the ability of the system to
remain operational for long periods of time.
• The reliability of a system is typically expressed in terms of mean
time to failure (MTTF)
• The average of all the time intervals between successive failures is
called the MTTF
• After a failure is observed, the developers analyze and fix the
defects, which consumes some time – let us call this interval the
repair time.
• The average of all the repair times is known as the mean time to
repair (MTTR)
• Now we can calculate a value called mean time between failure
(MTBF) as MTBF = MTTF + MTTR
• The random testing technique discussed in Chapter 9 is used for
reliability measurement
• The software reliability modeling and testing is discussed in Chapter
15 in detail
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 23
Regression Tests
• In this category, new tests are not designed, instead, test cases are
selected from the existing pool and executed
• The main idea in regression testing is to verify that no defect has
been introduced into the unchanged portion of a system due to
changes made elsewhere in the system
• During system testing, many defects are revealed and the code is
modified to fix those defects
• One of four different scenarios can occur for each fix:
– The reported defect is fixed
– The reported defect could not be fixed inspite of making an effort
– The reported defect has been fixed, but something that used to work before has
been failing
– The reported defect could not be fixed inspite of an effort, and something that
used to work before has been failing
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 24
Regression Tests
• One possibility is to re-execute every test case from version n − 1 to
version n before testing anything new
• A full test of a system may be prohibitively expensive.
• A subset of the test cases is carefully selected from the existing test
suite to
– maximize the likelihood of uncovering new defects
– reduce the cost of testing
• Methods for test selection for regression testing have been discussed
in Chapter 12
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 25
Documentation Tests
• Documentation testing means verifying the technical accuracy and
readability of the user manuals, tutorials and the on-line help
– Hands-on test: Exercise the on-line help and verify the error messages to
evaluate their accuracy and usefulness.
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 26
Regulatory Tests
• In this category, the final system is shipped to the regulatory bodies
in those countries where the product is expected to be marketed
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 27
Software Safety
• A hazard is a state of a system or a physical situation which when
combined with certain environmental conditions, could lead to an
accident or mishap
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 28
Software Safety
Examples:
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 29
Safety Assurance
• There are two basic tasks performed by a safety assurance
engineering team:
– Ensure that safety is embedded into the design and implementation in a timely
and cost effective manner, such that the risk created by the user/operator error
is minimized
Software Testing and QA Theory and Practice (Chapter 8: System Test Categories) © Naik & Tripathy 30