System testing
System
testing of software or hardware is testing conducted on a complete, integrated
system to evaluate the system's compliance with its specified requirements.
System testing falls within the scope of black box testing, and as such, should
require no knowledge of the inner design of the code or logic.
As a
rule, system testing takes, as its input, all of the "integrated"
software components that have passed integration testing and also the software
system itself integrated with any applicable hardware system(s). The purpose of
integration testing is to detect any inconsistencies between the software units
that are integrated together (called assemblages) or between any of the
assemblages and the hardware. System testing is a more limited type of testing;
it seeks to detect defects both within the "inter-assemblages" and
also within the system as a whole.
1 Testing the whole system
System
testing is performed on the entire system in the context of a Functional
Requirement Specification(s) (FRS) and/or a System Requirement Specification
(SRS). System testing tests not only the design, but also the behavior and even
the believed expectations of the customer. It is also intended to test up to
and beyond the bounds defined in the software/hardware requirements
specification(s).
2 Types of tests to include in system testing
The
following examples are different types of testing that should be considered
during System testing:
1.
Graphical user interface testing
In
software engineering, graphical user interface testing is the process of
testing a product's graphical user interface to ensure it meets its written
specifications. This is normally done through the use of a variety of test
cases.
2.
Usability testing
Usability
testing is a technique used in user-centered interaction design to evaluate a
product by testing it on users. This can be seen as an irreplaceable usability
practice, since it gives direct input on how real users use the system.[1] This
is in contrast with usability inspection methods where experts use different
methods to evaluate a user interface without involving users.
3.
Software performance testing
In
software engineering, performance testing is in general testing performed to
determine how a system performs in terms of responsiveness and stability under
a particular workload. It can also serve to investigate measure, validate or
verify other quality attributes of the system, such as scalability, reliability
and resource usage.
Performance
testing is a subset of performance engineering, an emerging computer science
practice which strives to build performance into the implementation, design and
architecture of a system.
4.
Compatibility testing
Compatibility
testing, part of software non-functional tests, is testing conducted on the
application to evaluate the application's compatibility with the computing
environment. Computing environment may contain some or all of the below
mentioned elements:
Computing capacity of Hardware
Platform (IBM 360, HP 9000, etc.).
Bandwidth handling capacity of
networking hardware
Compatibility of peripherals (Printer,
DVD drive, etc.)
Operating systems (Linux, Windows, Mac
etc.)
Database (Oracle, SQL Server, MySQL,
etc.)
Other System Software (Web server,
networking/ messaging tool, etc.)
Browser compatibility (Chrome,
Firefox, Netscape, Internet Explorer, Safari, etc.)
Load testing
Load
testing is the process of putting demand on a system or device and measuring
its response. Load testing is performed to determine a system‘s behavior under
both normal and anticipated peak load conditions. It helps to identify the
maximum operating capacity of an application as well as any bottlenecks and
determine which element is causing degradation. When the load placed on the
system is raised beyond normal usage patterns, in order to test the system's
response at unusually high or peak loads, it is known as stress testing. The
load is usually so great that error conditions are the expected result,
although no clear boundary exists when an activity ceases to be a load test and
becomes a stress test.
6. Volume
testing
Volume
Testing belongs to the group of non-functional tests, which are often
misunderstood and/or used interchangeably. Volume testing refers to testing a
software application with a certain amount of data. This amount can, in generic
terms, be the database size or it could also be the size of an interface file
that is the subject of volume testing. For example, if you want to volume test
your application with a specific database size, you will expand your database
to that size and then test the application's performance on it. Another example
could be when there is a requirement for your application to interact with an
interface file (could be any file such as .dat, .xml); this interaction could
be reading and/or writing on to/from the file. You will create a sample file of
the size you want and then test the application's functionality with that file
in order to test the performance.
7. Stress
testing
Stress
testing (sometimes called torture testing) is a form of deliberately intense or
thorough testing used to determine the stability of a given system or entity.
It involves testing beyond normal operational capacity, often to a breaking
point, in order to observe the results. Reasons can include:
to determine breaking points or safe
usage limits
to confirm intended specifications are
being met
to determine modes of failure (how
exactly a system fails)
to test stable operation of a part or
system outside standard usage
Security testing
Security
testing is a process intended to reveal flaws in the security mechanisms of an
information system that protect data and maintain functionality as intended.
Due to the logical limitations of security testing, passing security testing is
not an indication that no flaws exist or that the system adequately satisfies
the security requirements.
Typical
security requirements may include specific elements of confidentiality,
integrity, authentication, availability, authorization and non-repudiation.
Actual security requirements tested depend on the security requirements
implemented by the system. Security testing as a term has a number of different
meanings and can be completed in a number of different ways. As such a Security
Taxonomy helps us to understand these different approaches and meanings by
providing a base level to work from.
9.
Scalability testing
Scalability
Testing, part of the battery of non-functional tests, is the testing of a
software application for measuring its capability to scale up or scale out in
terms of any of its non-functional capability.
Performance,
scalability and reliability are usually considered together by software quality
analysts.
Scalability
testing tools exist (often leveraging scalable resources themselves) in order
to test user load, concurrent connections, transactions, and throughput of many
internet services. Of the available testing services, those offering API
support suggest that environment of continuous deployment also continuously
test how recent changes may impact scalability.
10.
Sanity testing
A sanity
test or sanity check is a basic test to quickly evaluate whether a claim or the
result of a calculation can possibly be true. It is a simple check to see if
the produced material is rational (that the material's creator was thinking
rationally, applying sanity). The point of a sanity test is to rule out certain
classes of obviously false results, not to catch every possible error. A
rule-of-thumb may be checked to perform the test. The advantage of a sanity
test, over performing a complete or rigorous test, is speed.
In
arithmetic, for example, when multiplying by 9, using the divisibility rule for
9 to verify that the sum of digits of the result is divisible by 9 is a sanity
test - it will not catch every multiplication error; however it's a quick and
simple method to discover many possible errors
11. Smoke
testing
In
computer programming and software testing, smoke testing (also confidence
testing, sanity testing is preliminary testing to reveal simple failures severe
enough to reject a prospective software release. A subset of test cases that
cover the most important functionality of a component or system is selected and
run, to ascertain if crucial functions of a program work correctly. When used
to determine if a computer program should be subjected to further, more
fine-grained testing, a smoke test may be called an intake test.
For
example, a smoke test may ask basic questions like "Does the program
run?", "Does it open a window?", or "Does clicking the main
button do anything?" The process aims to determine whether the application
is so badly broken as to make further immediate testing unnecessary. As the
book
"Lessons
Learned in Software Testing‖ puts it, "smoke tests broadly cover product
features in a limited time ... if key features don't work or if key bugs
haven't yet been fixed, your team won't waste further time installing or
testing".
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.