Most asked job interview questions and how to answer them
|
||||||||
For Verification & Validation (V&V)
|
||||||||
Just as topic Verification and Validation indicated, another
important purpose of testing is verification and validation (V&V).
Testing can serve as metrics. It is heavily used as a tool in the V&V
process. Testers can make claims based on interpretations of the testing
results, which either the product works under certain situations, or it does
not work. We can also compare the quality among different products under the
same specification, based on results from the same test.
|
||||||||
2. What is the purpose of software testing?
|
||||||||
The purpose of software testing is
|
||||||||
a. To demonstrate that the product performs each function
intended;
|
||||||||
b. To demonstrate that the internal operation of the product
performs according to specification and all internal components have been
adequately exercised;
|
||||||||
c. To increase our confidence in the proper functioning of the
software.
|
||||||||
d. To show the product is free from defect.
|
||||||||
e. All of the above.
|
||||||||
3. Types of Levels: -
|
||||||||
COMPATIBILITY TESTING. Testing to ensure compatibility of
an application or Web site with different browsers, OSs, and hardware
platforms. Compatibility testing can be performed manually or can be driven
by an automated functional or regression test suite.
|
||||||||
CONFORMANCE TESTING. Verifying implementation conformance
to industry standards. Producing tests for the behavior of an implementation
to be sure it provides the portability, interoperability, and/or
compatibility a standard defines.
|
||||||||
FUNCTIONAL TESTING. Validating an application or Web site
conforms to its specifications and correctly performs all its required
functions. This entails a series of tests which perform a feature by feature
validation of behavior, using a wide range of normal and erroneous input data.
This can involve testing of the product's user interface, APIs, database
management, security, installation, networking, etcF testing can be performed
on an automated or manual basis using black box or white box methodologies.
|
||||||||
LOAD TESTING. Load testing is a generic term covering
Performance Testing and Stress Testing.
|
||||||||
PERFORMANCE TESTING. Performance testing can be applied to
understand your application or WWW site's scalability, or to benchmark the
performance in an environment of third party products such as servers and
middleware for potential purchase. This sort of testing is particularly
useful to identify performance bottlenecks in high use applications.
Performance testing generally involves an automated test suite as this allows
easy simulation of a variety of normal, peak, and exceptional load
conditions.
|
||||||||
REGRESSION TESTING. Similar in scope to a functional test,
a regression test allows a consistent, repeatable validation of each new
release of a product or Web site. Such testing ensures reported product
defects have been corrected for each new release and that no new quality
problems were introduced in the maintenance process. Though regression
testing can be performed manually an automated test suite is often used to
reduce the time and resources needed to perform the required testing.
|
||||||||
SMOKE TESTING. A quick-and-dirty test that the major
functions of a piece of software work without bothering with finer details.
Originated in the hardware testing practice of turning on a new piece of
hardware for the first time and considering it a success if it does not catch
on fire.
|
||||||||
STRESS TESTING. Testing conducted to evaluate a system or
component at or beyond the limits of its specified requirements to determine
the load under which it fails and how. A graceful degradation under load
leading to non-catastrophic failure is the desired result. Often Stress
Testing is performed using the same process as Performance Testing but
employing a very high level of simulated load.
|
||||||||
UNIT TESTING. Functional and reliability testing in an
Engineering environment. Producing tests for the behavior of components of a
product to ensure their correct behavior prior to system integration.
|
||||||||
Black Box Testing
|
||||||||
Black box testing methods focus on the functional requirements
of the software. Tests sets are derived that fully exercise all functional
requirements. This strategy tends to be applied during the latter part of the
lifecycle.
|
||||||||
Tests are designed to answer questions such as:
|
||||||||
1) How is functional validity tested?
|
||||||||
2) What classes of input make good test cases?
|
||||||||
3) Is the system particularly sensitive to certain input values?
|
||||||||
4) How are the boundaries of data classes isolated?
|
||||||||
5) What data rates or volumes can the system tolerate?
|
||||||||
6) What effect will specific combinations of data have on system
operation?
|
||||||||
Equivalence Partitioning: -
|
||||||||
This method divides the input of a program into classes of data.
Test case design is based on defining an equivalent class for a particular
input. An equivalence class represents a set of valid and invalid input
values.
|
||||||||
Guidelines for equivalence partitioning -
|
||||||||
1) If an input condition specifies a range, one valid and two
invalid equivalence classes are defined.
|
||||||||
2) If an input condition requires a specific value, one valid
and two invalid equivalence classes are defined.
|
||||||||
3) If an input condition specifies a member of a set, one valid
and one invalid equivalence class are defined.
|
||||||||
4) If an input condition is boolean, one valid and one invalid
class are defined.
|
||||||||
Boundary Value Analysis: -
|
||||||||
Boundary value analysis is complementary to equivalence
partitioning. Rather than selecting arbitrary input values to partition the
equivalence class, the test case designer chooses values at the extremes of
the class. Furthermore, boundary value analysis also encourages test case
designers to look at output conditions and design test cases for the extreme
conditions in output.
|
||||||||
Guidelines for boundary value analysis -
|
||||||||
1) If an input condition specifies a range bounded by values a
and b, test cases should be designed with values a and b, and values just
above and just below and b.
|
||||||||
2) If an input condition specifies a number of values, test
cases should be developed that exercise the minimum and maximum numbers.
Values above and below the minimum and maximum are also tested.
|
||||||||
3) Apply the above guidelines to output conditions. For example,
if the requirement specifies the production of an table as output then you
want to choose input conditions that produce the largest and smallest
possible table.
|
||||||||
4) For internal data structures be certain to design test cases
to exercise the data structure at its boundary. For example, if the software
includes the maintenance of a personnel list, then you should ensure the
software is tested with conditions where the list size is 0, 1 and maximum
(if constrained).
|
||||||||
Cause-Effect Graphs
|
||||||||
A weakness of the two methods is that do not consider potential
combinations of input/output conditions. Cause-effect graphs connect input
classes (causes) to output classes (effects) yielding a directed graph.
|
||||||||
Guidelines for cause-effect graphs -
|
||||||||
1) Causes and effects are listed for a modules and an identifier
is assigned to each.
|
||||||||
2) A cause-effect graph is developed (special symbols are
required).
|
||||||||
3) The graph is converted to a decision table.
|
||||||||
4) Decision table rules are converted to test cases.
|
||||||||
We can not test quality directly, but we can test related
factors to make quality visible. Quality has three sets of factors --
functionality, engineering, and adaptability. These three sets of factors can
be thought of as dimensions in the software quality space. Each dimension may
be broken down into its component factors and considerations at successively
lower levels of detail.
|
||||||||
Performance testing
|
||||||||
Not all software systems have specifications on performance
explicitly. But every system will have implicit performance requirements. The
software should not take infinite time or infinite resource to execute.
"Performance bugs" sometimes are used to refer to those design
problems in software that cause the system performance to degrade.
|
||||||||
Reliability testing
|
||||||||
Software reliability refers to the probability of failure-free
operation of a system. It is related to many aspects of software, including
the testing process. Directly estimating software reliability by quantifying
its related factors can be difficult. Testing is an effective sampling method
to measure software reliability. Guided by the operational profile, software
testing (usually black-box testing) can be used to obtain failure data, and
an estimation model can be further used to analyze the data to estimate the
present reliability and predict future reliability. Therefore, based on the
estimation, the developers can decide whether to release the software, and
the users can decide whether to adopt and use the software. Risk of using
software can also be assessed based on reliability information. [Hamlet94]
advocates that the primary goal of testing should be to measure the
dependability of tested software.
|
||||||||
Security testing
|
||||||||
Software quality, reliability and security are tightly coupled.
Flaws in software can be exploited by intruders to open security holes. With
the development of the Internet, software security problems are becoming even
more severe.
|
||||||||
Many critical software applications and services have integrated
security measures against malicious attacks. The purpose of security testing
of these systems include identifying and removing software flaws that may
potentially lead to security violations, and validating the effectiveness of
security measures. Simulated security attacks can be performed to find
vulnerabilities.
|
||||||||
TESTING means "quality control"
|
||||||||
* QUALITY CONTROL
measures the quality of a product
|
||||||||
* QUALITY ASSURANCE
measures the quality of processes used to create a quality product.
|
||||||||
Beta testing is typically conducted by end users of a software
product who are not paid a salary for their efforts.
|
||||||||
Acceptance Testing
|
||||||||
Testing the system with the intent of confirming readiness of
the product and customer acceptance.
|
||||||||
Ad Hoc Testing
|
||||||||
Testing without a formal test plan or outside of a test plan.
With some projects this type of testing is carried out as an adjunct to
formal testing. If carried out by a skilled tester, it can often find
problems that are not caught in regular testing. Sometimes, if testing occurs
very late in the development cycle, this will be the only kind of testing
that can be performed. Sometimes ad hoc testing is referred to as exploratory
testing.
|
||||||||
Alpha Testing
|
||||||||
Testing after code is mostly complete or contains most of the
functionality and prior to users being involved. Sometimes a select group of
users are involved. More often this testing will be performed in-house or by
an outside testing firm in close cooperation with the software engineering
department.
|
||||||||
Automated Testing
|
||||||||
Software testing that utilizes a variety of tools to automate
the testing process and when the importance of having a person manually
testing is diminished. Automated testing still requires a skilled quality
assurance professional with knowledge of the automation tool and the software
being tested to set up the tests.
|
||||||||
Beta Testing
|
||||||||
Testing after the product is code complete. Betas are often
widely distributed or even distributed to the public at large in hopes that
they will buy the final product when it is released.
|
||||||||
Black Box Testing
|
||||||||
Testing software without any knowledge of the inner workings,
structure or language of the module being tested. Black box tests, as most
other kinds of tests, must be written from a definitive source document, such
as a specification or requirements document..
|
||||||||
Compatibility Testing
|
||||||||
Testing used to determine whether other system software
components such as browsers, utilities, and competing software will conflict
with the software being tested.
|
||||||||
Configuration Testing
|
||||||||
Testing to determine how well the product works with a broad
range of hardware/peripheral equipment configurations as well as on different
operating systems and software.
|
||||||||
Functional Testing
|
||||||||
Testing two or more modules together with the intent of finding
defects, demonstrating that defects are not present, verifying that the
module performs its intended functions as stated in the specification and
establishing confidence that a program does what it is supposed to do.
|
||||||||
Independent Verification and Validation (IV&V)
|
||||||||
The process of exercising software with the intent of ensuring
that the software system meets its requirements and user expectations and
doesn't fail in an unacceptable manner. The individual or group doing this
work is not part of the group or organization that developed the software. A
term often applied to government work or where the government regulates the
products, as in medical devices.
|
||||||||
Installation Testing
|
||||||||
Testing with the intent of determining if the product will
install on a variety of platforms and how easily it installs.
|
||||||||
Integration Testing
|
||||||||
Testing two or more modules or functions together with the
intent of finding interface defects between the modules or functions. Testing
completed at as a part of unit or functional testing, and sometimes, becomes
its own standalone test phase. On a larger level, integration testing can
involve a putting together of groups of modules and functions with the goal
of completing and verifying that the system meets the system requirements.
(see system testing)
|
||||||||
Load Testing
|
||||||||
Testing with the intent of determining how well the product
handles competition for system resources. The competition may come in the
form of network traffic, CPU utilization or memory allocation.
|
||||||||
Performance Testing
|
||||||||
Testing with the intent of determining how quickly a product
handles a variety of events. Automated test tools geared specifically to test
and fine-tune performance are used most often for this type of testing.
|
||||||||
Pilot Testing
|
||||||||
Testing that involves the users just before actual release to
ensure that users become familiar with the release contents and ultimately
accept it. Often is considered a Move-to-Production activity for ERP releases
or a beta test for commercial products. Typically involves many users, is
conducted over a short period of time and is tightly controlled. (see beta
testing)
|
||||||||
Regression Testing
|
||||||||
Testing with the intent of determining if bug fixes have been
successful and have not created any new problems. Also, this type of testing
is done to ensure that no degradation of baseline functionality has occurred.
|
||||||||
Security Testing
|
||||||||
Testing of database and network software in order to keep
company data and resources secure from mistaken/accidental users, hackers,
and other malevolent attackers.
|
||||||||
Software Testing
|
||||||||
The process of exercising software with the intent of ensuring that
the software system meets its requirements and user expectations and doesn't
fail in an unacceptable manner. The organization and management of
individuals or groups doing this work is not relevant. This term is often
applied to commercial products such as internet applications. (contrast with
independent verification and validation)
|
||||||||
Stress Testing
|
||||||||
Testing with the intent of determining how well a product
performs when a load is placed on the system resources that nears and then
exceeds capacity.
|
||||||||
System Integration Testing
|
||||||||
Testing a specific hardware/software installation. This is
typically performed on a COTS (commercial off the shelf) system or any other
system comprised of disparent parts where custom configurations and/or unique
installations are the norm.
|
||||||||
White Box Testing
|
||||||||
Testing in which the software tester has knowledge of the inner
workings, structure and language of the software, or at least its purpose.
|
||||||||
Difference Between Verification & Validation: -
|
||||||||
- Verification is about answering the question "Does the
system function properly?" or "Have we built the system
right?"
|
||||||||
- Validation is about answering the question "Is the
product what the customer wanted?" or "Have we built the right
system?"
|
||||||||
This definition indicates that Validation could be the same
thing as Acceptance Test (or at least very similar).
|
||||||||
I have often described Verification and Validation processes in
the same way, ie:
|
||||||||
1. Plan the test (output Test Plan)
|
||||||||
2. Specify the test (output Test Specification)
|
||||||||
3. Perform the test (output Test Log and/or Test Report
|
||||||||
Verification & Validation
|
||||||||
Verification typically involves reviews and meetings to evaluate
documents, plans, code, requirements, and specifications. This can be done
with checklists, issues lists, walkthroughs, and inspection meetings.
Validation typically involves actual testing and takes place after
verifications are completed. The term 'IV & V' refers to Independent
Verification and Validation.
|
Comments
Post a Comment