Now to answer, “What is Testing?” we can go by the famous definition of Myers, which says, “Testing is the process of executing a program with the intent of finding errors”
1. Software test life cycle
“ Why testing is essential for Software.”
Author :- Sumit Sinha
Software Business Analyst
CSM®,EPGBM from IIM-C
2. Agenda...
Introduction to Software test life cycle
Black box and White box testing
GUI testing
Regression testing
Phases of testing
Integration testing
Acceptance testing
System testing
Unit testing
3. Introduction to Software test life cycle
Every testing project has to follow the mini waterfall model of the testing process and scrum
framework in each steps as well.
The waterfall model is as given below
1.Test Strategy & Planning
2.Test Design
3.Test Environment setup
4.Test Execution
5.Defect Analysis & Tracking
6.Final Reporting
According to the respective projects, the scope of testing can be tailored, but the process
mentioned above is common to any testing activity.
4. Software testing in all phases of the software development life cycle has become a necessity as part of the
software quality assurance process. Right from the Requirements study till the implementation, there
needs to be testing done on every phase. The V-Model of the Software Testing Life Cycle along with the
Software Development Life cycle given below indicates the various phases or levels of testing.
Requiremen
t Study
High Level
Design
Low Level
Design
Unit
Testing
System
Testing
Integration
Testing
Production Verification
Testing
User Acceptance
Testing
SDLC - STLC
Regression
Round 3
Performance
Testing
Regression
Round 2
Regression
Round 1
Requirements
Review
Architecture
Review
Design
Review
Specification
Review
Requirements
Specification
Architecture
Detailed Design Unit
Integration
Testing
Testing
System
Testing
Code Code
Walkthrough
“V” model & “W” model
5. Black box and White box testing
Black-box test design treats the system as a literal "black-box", so it doesn't explicitly use knowledge
of the internal structure. It is usually described as focusing on testing functional requirements.
Synonyms for black-box include: behavioral, functional, opaque-box, and closed-box.
White-box test design allows one to peek inside the "box", and it focuses specifically on using internal
knowledge of the software to guide the selection of test data. It is used to detect errors by means of
execution-oriented test cases. Synonyms for white-box include: structural, glass-box and clear-box.
While black-box and white-box are terms that are still in popular use, many people prefer the terms
"behavioral" and "structural". Behavioral test design is slightly different from black-box test design
because the use of internal knowledge isn't strictly forbidden, but it's still discouraged. In practice, it
hasn't proven useful to use a single test design method. One has to use a mixture of different
methods so that they aren't hindered by the limitations of a particular one. Some call this "gray-box"
or "translucent-box" test design, but others wish we'd stop talking about boxes altogether!!!
6. GUI testing
GUI is the abbreviation for Graphic User Interface. It is absolutely essential that any application has to be
user-friendly. The end user should be comfortable while using all the components on screen and the
components should also perform their functionality with utmost clarity. Hence it becomes very
essential to test the GUI components of any application. GUI Testing can refer to just ensuring that
the look-and-feel of the application is acceptable to the user, or it can refer to testing the functionality
of each and every component involved.
The following is a set of guidelines to ensure effective GUI Testing and can be used even as a checklist
while testing a product / application.
1. Section 1 - Windows Compliance Testing...
1.1 Application,1.2 Text Boxes,1.3 Option (Radio Buttons),1.4 Check Boxes, 1.4 Command Buttons
1.5 Drop Down List Boxes,1.6 Combo Boxes1.1.1List Boxes
2. Section 2 - Screen Validation Checklist...
2.1 Validation, 2.2 Navigation, 2.3 Usability, 2.4 Data Integrity, 2.5 Modes (Editable Read-only),
2.6 General,
7. Regression Testing
Regression testing is the process of testing changes to computer programs to make sure that the
older programming still works with the new changes.
Regression testing is a normal part of the program development process. Test department coders
develop code test scenarios and exercises that will test new units of code after they have been
written.
Before a new version of a software product is released, the old test cases are run against the new
version to make sure that all the old capabilities still work. The reason they might not work because
changing or adding new code to a program can easily introduce errors into code that is not intended
to be changed.
The selective retesting of a software system that has been modified to ensure that any bugs have
been fixed and that no other previously working functions have failed as a result of the reparations
and that newly added features have not created problems with previous versions of the software. Also
referred to as verification testing
Regression testing is initiated after a programmer has attempted to fix a recognized problem or has
added source code to a program that may have inadvertently introduced errors.
It is a quality control measure to ensure that the newly modified code still complies with its specified
requirements and that unmodified code has not been affected by the maintenance activity.
8. Phases of Testing
The Primary objective of testing effort is to determine the conformance to
requirements specified in the contracted documents. The integration of this code
with the internal code is the important objective. Goal is to evaluate the system as
a whole, not its parts
Techniques can be structural or functional.
Techniques can be used in any stage that tests the system as a whole (System
testing ,Acceptance Testing, Unit testing, Installation, etc.)
Phases of testing...
9. Integration testing
Integration testing tests integration or interfaces between components, interactions to different parts of
the system such as an operating system, file system and hardware or interfaces between systems.
Also after integrating two different components together we do the integration testing. As displayed in
the image below when two different modules ‘Module A’ and ‘Module B’ are integrated then the
integration testing is done.
What is IntegrationTesting
Integration testing is done by a specific integration tester or test team.
Integration testing follows two approach known as ‘Top Down’ approach and ‘Bottom Up’
approach as shown in the image below:
10. Integration testing
1. Big Bang integration testing:
2. Top-down integration testing:
3. Bottom-up integration testing:
11. Acceptance testing
In software engineering, acceptance testing is formal testing conducted to determine whether a system
satisfies its acceptance criteria and thus whether the customer should accept the system.
The main types of software testing are:
Component, Interface, System, Acceptance, Release.
Acceptance Testing checks the system against the "Requirements".
Hence the goal of acceptance testing should verify the overall quality, correct operation, scalability,
completeness, usability, portability, and robustness of the functional components supplied by the
Software system.
Severity Levels :-
These levels will range from (say) 1 to 6 and will represent the relative severity, in terms of business /
commercial impact, of a problem with the system, found during testing. Here is an example which has
been used successfully; '1' is the most severe; and '6' has the least impact :-
Show Stopper - It is impossible to continue with the testing because of the severity of this error / bug
Critical Problem - Testing can continue but we cannot go into production (live) with this problem
12. Continued...
Major Problem - Testing can continue but live this feature will cause severe disruption to business
processes in live operation
Medium Problem - Testing can continue and the system is likely to go live with only minimal departure
from agreed business processes
Minor Problem - Both testing and live operations may progress. This problem should be corrected, but
little or no changes to business processes are envisaged
'Cosmetic' Problem - Colours, fonts, pitch size However, if such features are key to the business
requirements they will warrant a higher severity level.
13. System testing
In system testing the behavior of whole system/product is tested as defined by the scope of the
development project or product.
It may include tests based on risks and/or requirement specifications, business process, use cases, or
other high level descriptions of system behavior, interactions with the operating systems, and system
resources.
System testing is most often the final test to verify that the system to be delivered meets the
specification and its purpose.
System testing is carried out by specialists testers or independent testers.
System testing should investigate both functional and non-functional requirements of the testing.
14. Unit testing
When is it performed?
Unit Testing is the first level of testing and is performed prior to Integration Testing.
Who performs it?
Unit Testing is normally performed by software developers themselves or their peers. In rare cases it may
also be performed by independent software testers.
TASKS...
Unit Test Plan : -
Prepare, Review, Rework, Baseline
Unit Test Cases/Scripts :-
Prepare, Review, Rework, Baseline,
Unit Test ;-
Perform