Dcap 503 2
Dcap 503 2
Dcap 503 2
9
Software Verification
• It makes sure that the product is designed to deliver all functionality
to the customer.
• Verification is done at the starting of the development process. It
includes reviews and meetings, walkthroughs, inspection, etc. to
evaluate documents, plans, code, requirements and specifications.
• It answers the questions like: Am I building the product right? Am I
accessing the data right (in the right place; in the right way).
10
Software Validation
• Determining if the system complies with the requirements and performs functions for which it is
intended and meets the organization’s goals and user needs.
• Validation is done at the end of the development process and takes place after verifications are
completed.
• It answers the question like: Am I building the right product? Am I accessing the right data (in
terms of the data required to satisfy the requirement).
• Performed after a work product is produced against established criteria ensuring that the
product integrates correctly into the environment.
• Determination of correctness of the final software product by a development project with
respect to the user needs and requirements.
11
Basic Testing Cycle
• Requirements Analysis
• Test Planning
• Test Development
• Test Execution
• Test Reporting
• Test Result Analysis
• Defect Retesting
• Regression Testing
• Test Closure
12
Testing Methods
13
Testing Methods
• Static
• Dynamic
• Black Box
• White Box
• Visual
(GUI)
14
Testing Methods (Cont.)
Static Testing:
15
Testing Methods (Cont.)
Dynamic Testing:
• Dynamic testing is the testing of the dynamic behaviour of code.
• It involves working with the software, giving input values and
checking if the output is as expected by executing specific
test cases which can be done manually or with the use of an
automated process.
• It is done during Validation process.
• The software is tested by executing it on computer. Ex: Unit
testing, integration testing, system testing.
16
Testing Methods (Cont.)
Black Box Testing:
17
Testing Methods (Cont.)
White Box Testing:
18
Testing Methods (Cont.)
Visual (GUI) Testing:
19
Testing Levels
Each phase of SDLC goes through the testing. Hence there
are various levels of testing.
20
Testing Levels
• Unit Testing
• Component Testing
• Integration Testing
• System Testing
• Acceptance Testing
• Alpha Testing
• Beta Testing
21
Testing Levels (Cont.)
Unit Testing:
22
Testing Levels (Cont.)
Component Testing:
23
Testing Levels (Cont.)
Integration Testing:
24
Testing Levels (Cont.)
System Testing:
25
Testing Levels (Cont.)
Acceptance Testing:
• After the system test has corrected all or most defects, the
system will be delivered to the user or customer for acceptance
testing.
26
Testing Levels (Cont.)
Alpha Testing:
28
Testing Types
A test type is focused on a particular test objective
29
Testing Types (Cont.)
Functional Testing:
Functional testing refers to activities that verify a specific action or
function of the code.
Functional tests tend to answer the question of "can the user do this"
or "does this particular feature work."
30
Testing Types (Cont.)
Functional Testing Non Functional
• Installation • Compatibility
• Development • Performance
• Usability • Security
• Sanity • Accessibility
• Smoke • Internationalization /
• Regression Localization
• Destructive
• Recovery
• Automated
• User Acceptance
31
Testing Types (Cont.)
Installation Testing:
• Installation testing focuses on what customers will need to do to
install and set up the new software successfully.
• The testing process may involve full, partial or upgrades
install/uninstall processes.
• This testing is typically done by the software test engineer in
conjunction with the configuration manager.
32
Testing Types (Cont.)
Development Testing:
• Development Testing is a software development process that
involves synchronized application of a broad spectrum of defect
prevention and detection strategies in order to reduce software
development risks, time, and costs.
• It is performed by the software developer or engineer during the
construction phase of the software development lifecycle.
• Development Testing might include static code analysis, data flow
analysis metrics analysis, peer code reviews, unit testing, code coverage
analysis, traceability, and other software verification practices.
33
Testing Types (Cont.)
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.
• Usability testing generally involves measuring how well test
subjects respond in four areas: efficiency, accuracy, recall, and
emotional response.
34
Testing Types (Cont.)
Sanity Testing:
• The sanity test which offers quick, broad, and shallow testing
determines whether it is possible and reasonable to proceed with
further testing.
• If the sanity test fails, it is not reasonable to attempt more rigorous
testing.
• Sanity tests are ways to avoid wasting time and effort by quickly
determining whether an application is too flawed to merit any
rigorous testing.
35
Testing Types (Cont.)
Smoke Testing:
• Smoke testing is preliminary testing to reveal simple failures severe
enough to reject a prospective software release e.g. smoke test may ask
basic questions like "Does the program run?", "Does it open a window?”
• The purpose is to determine whether the application is so badly broken that
further testing is unnecessary.
• Smoke testing performed on a particular build is also known as a build
verification test.
• Smoke testing is done by developers and testers both.
• A smoke test is used as an acceptance test prior to introducing a new build
to the main testing process.
36
Testing Types (Cont.)
Regression Testing:
• Regression testing is a type of software testing that seeks to uncover
new software bugs, or regressions, in existing areas of a system after
changes (such as enhancements, patches or configuration changes)
have been made to them.
• Common methods of regression testing include rerunning previously
completed tests and checking whether program behavior has changed and
whether previously fixed faults have re-emerged.
37
Testing Types (Cont.)
Destructive Testing:
• Destructive software testing which attempts to cause a piece of
software to fail in an uncontrolled manner, in order to test its
robustness.
• It verifies that the software functions properly even when it receives
invalid or unexpected inputs, thereby establishing the robustness of input
validation and error-management routines.
38
Testing Types (Cont.)
Recovery Testing:
• Recovery testing is the activity of testing how well an application is able
to recover from crashes, hardware failures and other similar problems.
• E.g. While an application is receiving data from a network, unplug the
connecting cable. After some time, plug the cable back in and analyze
the application's ability to continue receiving data from the point at
which the network connection disappeared.
39
Testing Types (Cont.)
Automated Testing:
• Test automation is the use of special software (separate from the
software being tested) to control the execution of tests and the
comparison of actual outcomes to predicted outcomes.
• Test automation can automate some repetitive but necessary tasks in a
formalized testing process already in place, or add additional testing that
would be difficult to perform manually.
40
Testing Types (Cont.)
User Acceptance Testing:
• User acceptance testing (UAT) consists of a process of verifying that
a solution works for the user.
• It is not system testing, but rather is there to ensure that the
solution will work for the user i.e. test the user accepts the
solution.
41
Testing Types (Cont.)
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 different OS types (IOS 6, IOS 7),
different types of browsers (Chrome, Firefox, IE).
42
Testing Types (Cont.)
Performance Testing:
• Performance testing is generally executed to determine how a system or
sub-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.
• Load Testing is a testing that the system can continue to operate under a specific load,
whether that be large quantities of data or a large number of users. This is generally
referred to as software scalability.
• Volume testing is a way to test software functions even when certain components (for
example a file or database) increase radically in size.
• Stress testing is a testing beyond normal operational capacity, often to a breaking point,
in order to observe the results. It is a form of software testing that is used to determine the
stability of a given system.
43
Testing Types (Cont.)
Security Testing:
• Security testing is a process to determine that an information
system protects data and maintains functionality as intended.
• The six basic security concepts that need to be covered by security
testing are:
• Confidentiality
• Integrity
• Authentication
• Availability
• Authorization
• non-repudiation.
44
Testing Types (Cont.)
Accessibility Testing:
• Accessibility is the degree to which a product, device, service, or environment is available
many people as possible.
• This testing may include compliance with standards such as World
Wide Web Consortium (W3C).
• Accessibility is not to be confused with usability
45
Testing Types (Cont.)
Internationalization and localization Testing:
• Internationalization and localization are means of adapting computer applications to different
languages, regional differences and technical requirements of a target market.
• Internationalization is the process of designing a software application so that it can be adapted
to various languages and regions without engineering changes.
• Localization is the process of adapting internationalized software for a specific region or language
by adding locale-specific components and translating text.
46
Static and Dynamic Black Box Testing
Static Black Box Testing
• Static testing, as the name suggests, is used to test the software without compilation.
When the test is performed to check the specifications, it is called static black box
testing.
functionalities. This document is created during the initial stages of the Software
Development Life Cycle (SDLC) based on the input from the customer and designer.
The tester carefully performs static black box testing and checks for bugs.
• The focus of static black box testing is to check for completeness or appropriateness 48
Dynamic Black Box Testing
• Static black box testing is carried out without the tester executing the code, whereas
dynamic black box.
• testing is carried out with data. It is termed “dynamic” since the tester is able to observe
the changes exhibited by the system.
• The test is carried out by providing pre-defined inputs and the outputs are recorded.
These outputs are compared with the correct output, and the variation that exists between
the actual output and desired output are segregated as bugs.
• These tests are carried out using test cases. The test cases have to be defined effectively in
order to find the bugs. The entire test process will depend on the test cases. A software
application undergoes a dynamic black box test. The test case defines that the application
has to produce an output D when the inputs A and B are given. If the application gives an
output C, then the application fails the test case and this is a bug.
49
There are various techniques used to perform dynamic black box
testing. Some of the important techniques are
1. test-to-pass and test-to-fail
2.equivalence partitioning
3. data testing and
4. state testing
Thank You
51