Comprehensive Guide to Software Testing
Comprehensive Guide to Software Testing
What is testing?
Testing is a quality of software should be assured when software quality maintenance for good
application
To monitor & measure the strength of development process organization follows SQA concept.
Technical:
Non-Technical:
5) Risk Management ( If application crack while working risk management team should be
there)
SDLC
Information Gathering
Analysis
Design
Coding
Testing
Maintenance
Verification defines static testing. It starts from BRS, Analysis and analysis will be reviewed,
design will be reviewed and coding will be reviewed (WBT).
Business people act as a bridge between customer & technical people. This document defines
customer requirement to be developed as software. This document developed by Business
Analyst (BA people).
This document defines with respect to BRS. This document is also known as FS (Functional
Specification). This document defines functional requirement to be developed & system
requirement to be used. This document is also developed by Business Analyst category people.
Review:
It is also known as External Design. This document defines structure/ hierarchy of all possible
functionality to be developed as main modules. This is developed by project architect & software
designer.
It is also known as Internal Design. This document defines static logic of every sub-module.
E.g. Entity Relationship (ER) Diagram, Class Diagram, DFD (Data Flow Diagram).
Prototype:
It is a coding level testing techniques used to check completeness & correctness of the program.
It is done by development team.
Program Technique Coverage: Take less no. of memory & CPU cycle.
2. Operation Testing:
Runs on customer expected platforms, customer expected platform means operating system,
compiler browser &other systems.
3. Mutation Testing:
Mutation means change. Developer perform the change to estimate test coverage in the program.
It is a build level testing technique. During this testing we people I mean to say Test Eng.
Validates internal functionality depends on external interface.
Integration Testing:
After completion of coding and their review developer combine all independent module to form
as system, during integration they apply integration testing on that coupled module with respect
to HLD & LLD.
There are three approaches conducts the integration testing such as:
a. Top Down Approach: In this approach test engineer conduct testing on main module without
going to sub-module, using STUB.
STUB is a temporary program used to check main module instead of under constructive sub-
module. This is also known as ‘Called Program’.
b. Bottom-Up Approach: In this approach test engineer conducts testing on the main module
instead of coming from the main module, using DRIVER.
DRIVER is a temporary program which is used instead of main module. This is also known as
‘Calling Program’.
After completion of system integration testing & review we people concentrate on the system
and functional testing through a set of BBT techniques to validates the functionality with respect
to customer requirement.
1) Usability Testing: During this testing we people validates user friendliness of screen or build
or GUI.
2) Functional Testing: During this testing we people validates completeness and correctness of
the functionality with respect to customer requirement.
3) Security Testing: During this testing we people validates privacy to user operations.
Usability Testing: In general testing process starts with or we people start test execution with
usability testing. Usability testing defines user friendliness of screen or build or GUI.
. User Interface/GUI Testing: Less no. of event to complete task or easy validation.
. Manual Support Testing: It is done after system & functionality testing, Context sensitiveness
of user manuals.
Functional Testing:
Sir I have done functional testing to define customer requirement in terms of (BIEBSC) coverage
functionality testing. It is major part of BBT technique. During this testing we people validates
completeness and correctness of the functionality with respect to customer requirement.
There are two types of Functional Testing:
.Functionality Testing: During this testing we people validates completeness and correctness of
the functionality with respect to customer requirement.
Behavior Coverage: During this testing we people check the property of object.
Input Domain Testing: During this testing we people check the size & type of input objects.
We are going to apply this testing.
Error Handling Coverage: Preventing negative navigation. [Testing valid as well as invalid
data].
Back End Coverage: (Database Testing) Content of backend operation, impact of content
operation.
Service Level Coverage: Order of functionality, every functionality should be in proper order.
.Input Domain Testing: This is a part of functionality testing to measure the size & type of
input object. We people maintains a special structure in terms of BVA & ECP.
BVA defines Boundary Value Analysis. The size of input object. [Min & Max].
ECP defines Equivalence Class Partition. The size of data type. [Valid & Invalid].
.Non-Functionality Testing: During this testing we people check all non functional related
issues I mean to say functionality would be developed and impact of system requirement.
Recovery Testing: It is also known as Reliable testing. During this testing we people check or
validates whether an application recover from abnormal situation to normal situation.
In general test engineers find back-word compatibility defects as maximum (Defect in build).
In general we people map the Internet Explorer browser with other existing browser in the
market.
E.g. Safari, chrome, Mozilla fireworks, opera.
E.g. One bank ATM card (SBI ATM card) is accepted by other bank ATM to withdraw money,
during this time we people validates the functionality w.r. to interconnection to other software.
Installation Testing: During this testing we people validates installation of our application along
with co-existed software in the customer expected like configuration (environment) to validate
the functionality w.r. to customer requirement.
We people concentrate on some factors such as:
[Link] program execution before installation. (Whether all setup files are available or not).
2. Easy interface during installation.(Default Radio buttons should be there while installation).
3. Occupied disk space after installation.
4. Verify un-installation.
Parallel/Comparative Testing: It is applicable only for software product. During this we people
compare the product with other comparative product in the market. It is done after functional
testing.
Q. What is difference between product & application?
Product made for multiple customers.
Application made for specific customers.
Sanitation/Garbage Testing: During this testing we people tries to remove extra functionality
in the application w.r. to customer requirement.
When customer faces a problem they can request for modification for which he has to pay some
amount and we make business from that.
Globalization Testing: It is the testing to ensure that our application supports multiple
languages or not.
Localization Testing: To ensure that our application supports local language or not.
Nationalization Testing: To ensure that our application supports Nationalization languages or
not.
Internationalization Testing: To ensure that our application supports Internationalization
languages or not.
[Link] Testing (Stress defines maximum of load): The execution of our under customer
expected configuration and an internal load & peak load to estimate performance is called Stress
Testing. It is ensure that the maximum load on the application handle.
E.g. Maximum 700 users can use the application at a time.
[Link] Testing (It defines maximum of data store): The execution of our application under
huge amount of resources to estimate storage limitation in our applications called Storage
Testing.
E.g. No of volume in byte, Mobile card handle only 2GB data as per card limit.
[Link] Volume Testing: The execution of our application under customer expected
configuration to estimate the peak limits of data is called Data Volume Testing.
E.g. No. of records in your database can be stored.
Security Testing: It is also known as advance level testing technique & complex to conduct.
During this technique we people validates the privacy to user operation as per customer
requirement.
[Link]: It is done by Test engineer, during this test we people validates whether the
user is valid or not.
E.g. Employee of wipro.
[Link] Control (Authentication): It is done by Test engineer, during this test we people
validates whether the user has permission for specific operation or not.
E.g. Employee of wipro but need to permission for specific operation.
3. Encryption & Decryption: Data conversion between client and server. It is done by
developer.
Encryption
Client Server
Decryption
After completion of an system & functional testing our organization concentrate on user
acceptance testing to collect the feedback from customer.
Alfa Testing: This testing is applicable for a software application. Alfa testing is a testing
technique which is done in controlled environment in the presence of developer & tester.
Beta Testing: This testing is applicable for a software product. Beta testing is done at the
customer side in the absence of developer & tester in uncontrolled environment.
Basically user manual is an main part of an user acceptance testing and we involve in
some manner.
After completion of an User Acceptance Testing & their review our organization
concentrate on released, from team formation which is known as build released team. This
release team consists of some Hardware engineer, some Developer & some Test engineer.
Basically this release team apply port testing on critical part of application to validate the
functionality before release the build. In general released testing will be performed within 2 days
and it will be performed at client side like environment (configuration).
During this testing they concentrate on some factors such as:
After completion of port testing, release team providing training session to customer side
people and come back to our organization. During maintenance customer side people request our
organization for change or modification that is known as change request.
# Impact analysis.
# Performance change.
Analyze impact at change senior team will handle change request during an test
execution. Change Control Board comes under configuration management. Configuration
management means to handle the change request during test execution.
Testing Terminology:
[Link]/Chimpanzee/Speed Testing:
Basically monkey testing defines maximum number of test cases with less number of time
for execution. During monkey testing we people concentrate on high priority test cases.
[Link] Testing:
It is done by senior tester. Test engineer do not have sufficient test data but with the help of
past experience have to conduct the test.
I mean to say we don’t have test data but we have domain knowledge.
Level by level functionality coverage is called as exploratory testing. I mean to say we have
test data but don’t have domain knowledge.
It is a initial stage of Black Box Testing. After receiving initial build from development team,
we people I mean to say test engineer estimate stability of build to cover the core functionality or
to check whether build is ready before testing or not is called as sanity testing.
We conduct a sanity testing after each build up-gradation that is after receiving new build. In
sanity testing we perform:
Smoke Testing:
Smoke testing is a extra shake(vibration) up of sanity testing. We trying to identify a
troubleshoot. During this execution if we find environmental issue/runtime error.
We are trying to identify invalid object then we are trying to identify package that means
the object belong to which package then we are going to request to database administrative
people to recompile that package that’s all about smoke testing.
Package is combination & clubbing of similar type of object & it is created by database
administrator.
Big Bag Testing/ Informal Testing:
During this test, testing team concentrate on single stage instead of multiple stages after
completion of entire system development process. It is also called as an random testing.
UAT
Integration
Unit
Retesting:
Retesting of an same application or build with multiple test data to validate the
functionality is called as retesting.
E.g. To define multiplication table test engineer choose the different types of combination in
terms of +ve, -ve, integer, float, min, max and zero that is same build with multiple test data.
Regression Testing:
Regression comes word from regret. Re-Execution of test on modify build to ensure that
bug fix and occurrence of side effect to validate functionality is known as regression testing.
Modify Build
Regression
Test
Test Engineer
Agile defines the characterized quickness. It is a simple philosophy, It’s not plan driven
it is a value driven. So we are going to follow some procedure I mean to say the product owner
collect the list the requirement, this is nothing but the product back-log & from this product
back-log we are going to select the list of requirement & move to corresponding sprint this is
nothing but sprint back-log. So during this time we are going to estimate that is what are the
requirement should be deliver in this sprint? and what are the requirement should be deliver in
the next sprint? & this estimation can be done by using several factors, I mean to say
Complexity, Efforts, Knowledge & this process would be done by the development lead along
with the testing lead, and each sprint back-log consist of stories and from that stories we are
going to prepare the test case.
Advantages of Agile:
# Less Cost.
# Less Resource Utilization.
# Fast Delivery.
Disadvantages of Agile: When project is complex/ big and it has lot of independent module in
that case it get difficult to implement.
Test Initiation Test Plan Test Design Test Execution Test Closer
Defect Report
rt
In many organization testing process starts with initiation process. During this stage
process manager concentrate on the scope of the project, requirement of the project & the risk
involved in the project.
After that in the test plan Test Lead mainly concentrate on job allocation in the terms
of
#What to test?
#How to test?
#When to Test?
#Who will test?
During test design we people I mean to say test engineer prepare the test case From
SRS/Functional specification to validate the functionality with respect to customer requirement.
After completion of test design we people execute the test case to validate the functionality.
During this execution if we find any mismatch or defect then we log the defect and send it to
development team to fix that defect.
After fixing that bug developer send the modified build and on that modified build we people
apply the regression testing to check whether the defect is resolve or not and to check the
occurrence of any side effect due to bug fix. This is the cyclic process and we will continue till
all defect get resolve.
After completion of test execution we prepare that report & send it to test lead.
During test closer test lead concentrate on whether all the testing process going correctly or not.
That’s all about STLC.
Reject
Close
New Open Fix
Re-Open
Differed
During system and functional testing we people get new defect & its status is new and log the
defect in defect tracking tool.
After discussion with the senior tester we people set the defect status as open & assign it to
developer.
After receiving the defect from the testing team, developer analyze & verify the defect. If
developer doesn’t accept it, he set defect status as reject.
If developer decides to fix the defect in later version he set defect status as differed.
If developer accept the defect & he fix it, then he send the modified build to testing team.
Then we people I mean to say test engineer verify whether the defect has been fix or not. If
defect has been fix we people set the defect status as closed.
If defect is re-occurring any side effect due to bug fix, then we people set the defect status as
reopen and send it to developer.
Test Methodology
Test Case
Defect Report
Test Summery Or
Test Summery Report send to Client.
Team Lead (TL)
Final Report Or
Software Release
Note (SRN)
Test Policy
It is a company level document and developed by quality control people. (Almost management) this
document defines “testing objective” to be achieved.
Name of Company
Address of company
Location of company
Signature of
(C.E.O)
FP – Functional point.
Example: No of screens / No of forms / No. of reports / No. of inputs / No. of outputs / No. of
queries.
Basically this document shown to the client side people in according to gain new project.
Test Strategy
It is also a company level document and developed by quality analyst people (project manager level).
This strategy document defines testing approach to be followed by testing team.
1) Scope and objective: The definition & purpose of testing in our organization.
2) Business issues: Budget control for testing, cost of testing is estimated accordingly cost of a
project. (How much we are going to spend on testing).
3) Testing Approach: Mapping between development stages and testing issues (Factors) TRM is
prepared.
Info.
Dev. Stages/Testing
Gathering & Design Coding Testing Maintenance
factors & Issues
Analysis
1. Authorization No No Yes Yes
2. Access Control No Yes Yes Yes
Depend on
3. Audit Trial Yes Yes Yes No
change
………
request.
……….
15. Methodology
Note: TRM is prepared by PM & send it to customer accordingly money will be given.
4) Test deliverables: Required testing task to be completed before start testing w.r. to H/W
configuration & resource document. Entry & Exit criteria should be define properly.
5) Roles and responsibilities: Names of jobs in testing team and responsibilities of every job during
testing.
6) Communication and status reporting: Required negotiation between every two consecutive jobs
in testing team.
7) Test automation and testing tool: Purpose of automation and availability of testing tools in your
organization.
8) Defect reporting and tracking: Required negotiation between testing team and development
team when testers got mismatches in testing. Because it may affect on production or releases.
9) Testing measurements and metrics: This is the unit to measure testing process. QAM, TMM,
PCM
10) Risks and Mitigations: If any problem occurs during testing then the solutions to overcome.
11) Change and configuration management: Ability to handle change request during execution.
How to handle sudden changes in customer requirements during testing.
12) Training plan: Required number of sessions to understand customer requirements by testing
team.
To define one quality software. Software engineering people are using 15 factors/issues.
1) Authorization: Whether a user is valid or not? To connect to application.
2) Access control: Whether a valid user have permissions to use specific service or not?
14) Maintainable: Whether our application build is long time serviceable to customer site people or
not?
15) Methodology: Whether our testing team is following standards or not? (during testing)
1) Authorization:
2) Access control:
3) Audit trail:
12) Performance: Load testing, stress testing, storage testing, data volume testing.
Compliance testing: Whether the testing team is following standards or not during testing, is called
compliance testing. Compliance means that complete plan.
Test Methodology
It is a project level document. This document defines required testing approach for corresponding
project testing. Project manager like people are developing test methodology depending on company
level test strategy. Due to this reason, test methodology is also known as a refinement form of test
strategy.
To develop test methodology, project manager/quality analyst follows below approach. Before start
every project testing.
Outsourcing * * √ √ *
Maintenance * * * * √
Note:- Depending on project type, project manager delete some of the columns from TRM (test
responsibility matrix) for this project testing.
Note: – Depending on requirements in the project, PM delete unwanted factors (rows) from TRM for
this project testing.
Note: – Depending on expected future enhancements, PM is adding some of previously deleted factors
to TRM for this project testing.
Note: – Depending on analyzed risks, PM is deleting some of the factors from selected TRM for this
project testing.
Test Plan
After completion of test initiation and testing process finalization, test lead category people are
concentrating on test plan document preparation in terms of “what to test?”, “how to test?” , “when to
test?” , “who to test?” .
Input Process Output
1. Team Formation
Development Strategy (Resource Allocation)
Testing team formation: In general test planning process starts with testing team formation. In this
stage test lead is depending on below factors.
Case study:
Identify Tactical Risks: After formation of testing team, test lead is analyzing selected team level
risks. This risk analysis is also known as Root Cause Analysis.
Prepare test plan: after completion of testing team formation and risks analysis, test lead
concentrate on test plan document preparation in IEEE format (Institute of Electrical and Electronics
Engineers).
IEEE Format:
Features to be tested: New module names for test design. (What to test)
Features not to be tested: Which ones and why not? (Copy test cases from server)
Feature pass/fail criteria: When a module is pass and when a module is fail.
Test environment: Required hardware’s and software’s to conduct testing on above modulus. Ex:
WinRunner
EX: test cases, test procedures, test scripts, test log, defect reports for every modules.
Staff and training needs: Names of selected test engineers for this project testing
(Work allocation)
Risks and mitigations: Raised problems during testing and solutions to overcome.
After completion of first copy of test plan document development, test lead conducts a review on that
document for completeness and correctness. In this review meeting test lead concentrate on coverage
analysis.
Coverage analysis:
After finalizations of test plan, test lead is providing some training sessions to selected testing team on
project requirements.
After finalization of test plan and after completion of training sessions, test engineers are
concentrating on test cases development for responsible modules. There are three methods to prepare
test cases such as:
Business logic based test case design (depending on SRS or FS for Application)
Input domain based test case design (design documents for Product)
In general, test engineers are preparing maximum test cases depending on use cases in SRS. Every
use case is describing functionality in terms of inputs, process and outputs.
Depending on that use case. Every use case is also known as functional specification. Every test case
describes a testable condition to be applied on build.
Step2: Selecting a use case and their dependencies from above collected list of use case.
During test design test engineers are preparing test cases in IEEE format. Through these formats test
engineers are documenting every test case.
Test suit id: The corresponding batch id, in that batch this case is also member.
Test environment: Required hard wares and soft wares including testing tool to execute this test
case.
Test procedure: This step-by-step procedure from base state to end state
Test case pass/fail criteria: When this case is pass/ when this case is fail
NOTE: In general, test engineers are not maintaining complete format for every test case. They
can try to maintain test procedure as mandatory for every test case.
In general, test engineers are preparing test cases depending on use cases or functional specifications
in SRS. Sometimes they can go to depending on design documents also. Because, use cases are not
providing complete information about size and type of input objects. Due to this reason, test engineers
are studying data models in design documents.
Ex: ER-diagrams
Step2: Study every input attribute in terms of size and type with constraints
Step3: Prepare BVA and ECP for every input attribute in below format
This table is called DATA MATRIX. This table is providing information about every object
Critical inputs are involving in internal manipulations. Non-critical inputs used for printing purpose.
NOTE: If our test case is covering an operation, then test engineers are preparing step-by-step
procedure from base state to end state. If our test case is covering an object, then test engineers are
preparing data matrix.
To conduct usability testing, test engineers are preparing test cases depending on global user inter
face convection, our organization rules and interest of customer site people.
Test case2: Graphics check (alignment, font, style, color and other micro soft six rules)
NOTE: test case1 to test case6 are indicating user inter face testing and test case7 is indicating
manuals support testing.
Q. What is Microsoft Six Rules?
Before receiving build from development team to start test execution, test lead is analyzing the
completeness and correctness of prepared test cases by test engineers through a review meeting.
1) Self Review.
2) Peer Review (Along with colleague).
3) Internal Review (PM/TL/BA/TE)
4) External Review (Customer)
At the end of this review, test lead is preparing requirements trace ability matrix (RTM). This matrix
defines mapping between customer requirements and prepare test cases. This matrix is also known as
requirements validation matrix (RVM).
Traceability Matrix define mapping between business requirement & prepared test cases to
validate the customer requirement. This matrix is prepared by the TL.
a) Forward Traceability Matrix: Mapping between prepared test case & business requirement
is called as Forward Traceability Matrix
b) Backward Traceability Matrix: It is a mapping between defects and prepared test cases
Requirement Validation Matrix: Sometimes defect is valid defect and written test case is also
correct but still defect is occurred that time we have add extra test case for that defect is called
as Requirement Validation Matrix.
During level-1 and level-2 test execution, test engineers are reporting mismatches to development
team in IEEE format.
Format:
Build Version Id: Version number of build, in which test engineers found this defect
Feature: The Corresponding module name, in which test engineer found this defect
Test Case Name: The name of test condition, during this case execution, test engineer found this
defect
Re-producible: Yes, means defect appears every time in test execution No, means defect appears
rarely in test execution
Assigned To: The responsible person at development side to receive this defect
High – Not able to continue test execution with out resolving that defect
Low – Able to continue remaining testing but optional to resolve (may/may not)
Resolution Type:
NOTE: In above format development people try to change priority of defect with respect to customer
importance
Defect age: The time gap between defect reported date and defect resolved date is called defect age
Defect Resolution Type: During test execution, test engineers are reporting mismatches to
development team as defects. After receiving defect reporting from testing team, development people
are conducting bug-fixing review and they will send resolution type report to corresponding testing
team. There are 12 types of resolutions to report to testing team.
Enhancement: rejected due to this defect related to future requirement of the customer
Hard ware limitation: rejected due to this defect related to limitations of hard ware devices
Soft ware limitation: rejected due to this defect related to limitations of soft ware technologies
Functions as designed: rejected due to coding is correct with respect to design logic
Need more information: not accepted and not rejected but developer’s required extra information to
under stand the defect
Not reproducible: not accepted and not rejected but developer’s required correct producer to
reproduce that defect
No plan to fix it: not accepted and not rejected but developer’s required extra time to fix
Ex1: Dependent out puts are wrong (application show stopper) (high priority)
Ex2: Find out put is wrong (module show stopper) (low priority)
Ex1: Not able to establish connection to hard ware device (high priority)