Unit 1 Fundamentals of Software Testing
Unit 1 Fundamentals of Software Testing
Fundamentals of Software
Testing
Stage 1 Cost = 10
•Requirement Testing
•It involves mock running of future application using the
requirement statements to ensure that requirements meet their
acceptance criteria.
•This type of testing is used to evaluate whether all requirements
are covered in requirement statement or not.
•This type of testing is similar to building use cases from the
requirement statement.
•Requirement testing differs from verification of requirements.
•Theoretically, each statement in requirement document must
give atleast one functional/ non-functional test scenario which
may result into test cases.
•Requirements must be prioritized as “must”, “should be” and
“could be” requirements.
•Requirement validation must define end-to-end scenario
completely so that there is no gap.
•Design Testing
Strengths
Weakness
Opportunity
Threats
Features of Software Testing
•Testing is a Destructive Process, But it is Constructive Destruction
•Testing needs a Sadistic Approach with a Consideration that there is
a Defect
•If the Test does not Detect a Defect present in the System, it is an
Unsuccessful Test.
•A Test that Detects a Defect is a Valuable Investment for
Development as well as Customer, it helps in Improving a Product
•It is a Risky to develop Software and Not to Test it Before Delivery
•With High Pressure to Deliver Software as Quickly as possible, Test
Process must provide maximum value in shortest Timeframe
•Highest Payback comes from Detecting Defect early in Software
Development Life Cycle and Preventing Defect Leakage/ Defect
Migration from one Phase to Another
•Organisation‟s Aim must be Defect Prevention rather than Finding
and Fixing a Defect
Misconceptions about Testing
•Requirements defects
•These defects arise in a product when one fails to understand what is
required by the customer.
•These defects may be due to customer gap, where the customer is
unable to define his requirements, or producer gap, where developing
team is not able to make a product as per requirements.
•Requirement related defects further classified as
•Functional defects: related to functionalities present/absent in the
application which are expected/ not expected by the customer.
System testing concentrates on functionality as the first part of
testing
•Interface defects: talks about interfaces essential as per the
requirement statement. These defects may be due to UI problems,
problems with connectivity to other systems including hardware.
•Design defects
•It generally refers to the way of design creation or its usage while
creating a product.
•The customer may or may not be in a position be understand these
defects, if structures are not correct.
•Design related defects may be classified as follows
•Algorithmic defects: it may be introduced in a product if designs
of various decisions are not handled correctly. Various
permutations and combinations may cause defect introduction in
the product.
•Module-interface defects: about communication problems between
various modules. If one module gives some parameters which are
not recognized by another, it creates module-interface defects.
•System-interface defects: it may be generated when application
communication with environmental factors is hampered. System
may not be able to recognize inputs coming from the environment,
or may not be able to give outputs which can be used by the
environment.
•User-interface defects: it may be part of system-interface defects
where the other system working with the application is a human
being. UI defects may be a part of navigation, look & feel type of
defects which affect usability of an application
Coding Defects
•Coding defects may arise when designs are implemented wrongly. If
there is absence of development/ coding standards or if they are
wrong, it may lead to coding defects.
•Variable declaration/ initialization defect
•Database related defects
•Commenting/ documentation defects
•Testing Defects
•It is introduced due to wrong testing, or defects in the test artifacts
leading to wrong testing. Testing defects are very important in terms of
false call where there is no defect in reality.
•Defects which cannot be reproduced, or are not supported by
requirements or are duplicate may represent a false call.
•Test design defects: refers to defects in test artifacts. There can
defects in test plans, test scenarios, test cases, & test data definition
which may lead to defect introduction in software if it is not handled
correctly
•Test environment defects: it may be compromised of hardware, s/w,
simulators, & people doing testing. It may include operator training also
•Test tool defects: assumed that no defects in test tools. Any defect
introduced by a test tool may be very difficult to find and resolve, as
one may have to find using manual tests as against automated tools.
Defect Life Cycle
•A defect identified in verification/ validation
New must be first analysed to check whether it is a
defect or not, and if it is confirmed as a defect,
Yes then one must check if the same defect, has
Opened already been logged in system or not. If the
defect is already logged in the system, one
needs to check its status. If status is ‟open‟,
Assigned / one must not log the same defect again. If
reassigned defect is „closed‟, it must be changed to
NO
„reopen‟.
NO •If the defect found in new, the tester/
reviewer must give all the attributes of defects
Fixed (including steps to reproduce it) & assign it to
a person responsible for releasing a build/
project manager/ module leader as per org.
Verified process definition. Generally, the project
manager appoints somebody as a single point
of contact to receive all the defects found
closed during review/ testing.
•Once the defect is logged in the system, the concerned contact person
must reproduce the defect in development env to check if the defect is
there or not. If any additional info is required with reference to the
defect or defect discovery process, then he must contact the tester who
has found the defect. Once the presence of the defect is confirmed, it
must be acknowledged, and assigned to the respective developer with
„how to fix it‟ instructions. Status of defect may be changed to
„assigned‟.
•Once the defect is fixed, it undergoes review/ unit testing by the
developer. Status of the defect may become „fixed‟.
•If the defect passes through review/ unit testing, fixation of defect is
confirmed by the person responsible for receiving the defect in the
earlier stage. It is reassigned to the tester for retesting with the
information about the build number, where defect may be retested. The
status is changed to „verified‟. If fixing of defect is not confirmed, is
may be assigned back to the developer. Status of defect may become
„reassigned‟.
•Tester takes a new build in which the defect is expected to be fixed,
and conducts the test for reproducing the defect(retesting). If the
defect is found closed (cannot be reproduced), the status of the defect
is changed to „closed‟. If the defect is found open, the status is changed
to „reopen‟ and again assigned to respective pro. Manager/ module lead
Defect Management Process (fixing & root cause of defect)
•It must include the appraisal of a defect finding process, soft dev.
process and the actions initiated to close the defects and strengthen
the product/ processes associated with development, so that defects
are not repeated again & again.
•It attempts to remove weaker areas with potential defects. It typically
includes correction, corrective actions & preventive actions.
•Developing strategy about how the test team will perform testing.
•Some of key components of testing strategy are as follows
•Test factors required in particular phase of development
•Test phase corresponding to development phase
•Process of developing test strategy goes through following steps
•Select and Rank test factors for the given application
•Test team must identify critical success factors/quality factors/
test factors for the s/w product under testing. Trade-off decisions
may be taken after consulting with customer, if possible, when
relationship is inversed.
•Identify system development phases and related test factors
•The critical test factors may have varying importance as per
development life cycle phases.
•Identify associated risks with each selected test factor in case if it
not achieved
•Trade-off may lead to few risks of development and testing s/w
•Identify phase in which risk of not meeting a test factor need to be
addressed
•As the phase is over, one needs to access the actual impact of
the risks and effectiveness of devised countermeasures for same
Developing Testing Methodologies (test plan)
•Developing test tactics is the job of project level test manager/ test
lead.
•Designing and defining of test methodology may take the following
route
•Acquire & study test strategy as defined earlier
•Testing must address the critical success factors for the project
and risk involved in not achieving it.
•Determine the type of development project being executed
•Traditionally developed using Waterfall dev. life cycle
•Commercially off the shelf (COTS) purchased s/w which may
be integrated in the given s/w.
•Agile methodology, Iterative method, spiral development
•Determine the type of software system being made
•Type of s/w system defines how data processing will be
performed by the software. It may involve following
•Determine project scope(multivendor or multisite dev.)
•New development including scope of development & testing,
when products are enhanced from existing level.
•Changes to existing system such as bug fixing, enhancement,
reengineering, and porting
•Identify tactical risks related to development
•Risks may be introduced in a software due to its nature, type of
developing organisation, developing methodologies used, and
skills of teams. Risks may differ from project to project.
•Structural risks(refers to methods used to build a product)
•Technical risks(refers to technology used to build and operate
the system)
•Size risks(refers to size of all aspects of software)
•One must try to build maximum possible skills, and training is one
of the effective methods to build a good testing team.
•General Skills:
•Written & verbal presentation skill
•Effective listening skill
•Facilitation skill
•Software development, Operations & Maintenance
•Continuous education
•Testing Skills
•Concepts of testing
•Levels of testing
•Techniques for validation and verification
•Selection & use of testing tools
•Knowledge of testing standards
•Risk assessment & management
•Developing test plan
•Defining acceptance criteria
•Checking of testing processes
•Execution of test plan
•Continuous improvement of testing process
Test Methodologies/ Approaches
•
•White Box Testing:
•It is a testing methodology where software is tested for the
structures.
•It covers verification of work products as per structure,
architecture, coding standards and guidelines of software.
•It mainly deals with the structure and design of software product
•It requires that testers must have knowledge about development
processes and artifacts including various platforms, databases etc.
•Grey Box Testing
•It talks about a combination of both approaches, viz. black box
testing and white box testing at the same time.
•There may be various shades of black box testing as well as white
box testing in this type of testing, depending upon the
requirements of product.
•Though not a rule, grey box testing mainly concentrates on
integration testing part along with unit testing.