Professional Documents
Culture Documents
Software testing is a process, to evaluate the functionality of a software application with an intent to find
defects, and also to check whether the developed software met the specified requirements or not.
First, tester examines all documents related to software, to select testing areas.
Tester analyses requirement document to cover all requirements stated by the customer.
Tester develops the test cases according to the requirement document.
All test cases are executed manually by using Black box testing and white box testing.
If bugs occurred then the testing team informs to the development team.
Development team fixes bugs and handed software to the testing team for retesting.
It does not require programming knowledge while using the Black box method.
It is used to test dynamically changing GUI designs.
Tester interacts with software as a real user so that they are able to discover usability and user
interface issues.
It ensures that the software is a hundred percent bug-free.
It is cost effective.
Easy to learn for new testers.
Automation Testing: Automation testing is the process of testing the software using an automation tool to
find the defects. In this process, testers execute the test scripts and generate the test results automatically
by using automation tools. Some of the famous automation testing tools for functional testing are QTP/UFT
and Selenium.
Automation Testing
When the testing case suites are performed by using automated testing tools is known as Automation
Testing. The testing process is done by using special automation tools to control the execution of test cases
and compare the actual result with the expected result. Automation testing requires a pretty huge
investment of resources and money.
Generally, repetitive actions are tested in automated testing such as regression tests. The testing tools used
in automation testing are used not only for regression testing but also for automated GUI interaction, data
set up generation, defect logging, and product installation.
The goal of automation testing is to reduce manual test cases but not to eliminate any of them. Test suits
can be recorded by using the automation tools, and tester can play these suits again as per the
requirement. Automated testing suites do not require any human intervention.
SDLC is a process that creates a structure of development of software. There are different phases within
SDLC, and each phase has its own different activity. It makes development team able to design, create and
deliver a high-quality product.
SDLC describes various phases of software development and the order of execution of phases. Each phase
requires deliverable from the previous phase in a life cycle of software development. Requirements are
translated into design, design into development and development into testing, after testing it is given to
the client.
1. Requirement Phase
2. Design Phase
3. Build /Development Phase
4. Testing Phase
5. Deployment/ Deliver Phase
6. Maintenance
1. Requirement Phase
This is the most crucial phase of software development life cycle for the developing team as well as for the
project manager. During this phase, the client states requirements, specifications, expectations and any
other special requirement related to the product or software. All these are gathered by the business
manager or project manager or analyst of the service providing company.
Requirement includes how the product will be used and who will use the product to determine the load of
operations. All information gathered from this phase is critical to developing the product as per the
customer requirements.
2. Design Phase
Design phase includes a detailed analysis of new software according to the requirement phase. This is the
high priority phase in the development life cycle of a system because the logical designing of the system is
converted into physical designing. The output of requirement phase is a collection of things that are
required and design phase gives the way to accomplish these requirements. The decision of all required
essential tools such as programming language like Java, .NET, PHP; database like Oracle, MySQL, a
combination of hardware and software to provide a platform on which software can run without any
problem is taken in this phase.
There are several techniques and tools such as data flow diagrams, flowcharts, decision tables and decision
trees, Data dictionary, and the structured dictionary are used for describing the system design.
After the successful completion of requirement and design phase, the next step is to implement the design
into the development of a software system. In this phase, work is divided into small units, and coding starts
by the team of developers according to the design discussed in the previous phase and according to the
requirements of client discussed in requirement phase to produce the desired result.
Front-end developers develop easy and attractive GUI and necessary interfaces to interact with back-end
operations and back-end developers do back-end coding according to the required operations. All is done
according to the procedure and guidelines demonstrated by the project manager.
Since, this is the coding phase it takes the longest time and more focused approach for the developer in the
software development life cycle.
4. Testing Phase
Testing is the last step of completing software system. In this phase, after getting the developed GUI and
back-end combination, it is tested against the requirements stated in the requirement phase. Testing
determines whether the software is actually giving the result as per the requirements addressed in the
requirement phase or not. Testing team makes a test plan to start the test. This test plan includes all types
of essential testing such as integration testing, unit testing, acceptance testing, and system testing. Non-
functional testing is also done in this phase.
If there are any defects in the software, or it is not working as per expectations, then testing team gives
information to the development team in detail about the issue. If it is a valid defect or worth to sort out, it
will be fixed and development team replaces it with the new one and it also needs to be verified.
When software testing is completed with satisfying result and there are no remaining issues in the working
of software, it is delivered to the customer for their use.
As soon as customers receive the product, they are recommended first to do the beta testing. In beta
testing, customer can require any changes which are not present in the software but mentioned in the
requirement document or any other GUI changes to make it more user-friendly. Besides this, if any type of
defect is encountered while a customer using the software; it will be informed to the development team of
that particular software to sort out the problem. If it is a severe issue, then the development team solves it
in a short time otherwise, if it is less severe, then it will wait for the next version.
After the solution of all type of bugs and changes, software finally deployed to the end user.
6. Maintenance
The maintenance phase is the last and long-lasting phase of SDLC because it is the process which continues
till the software's life cycle comes to an end. When a customer starts using software, then actual problems
start to occur, and at that time there's a need to solve these problems. This phase also includes making
changes in hardware and software to maintain its operational effectiveness like to improve its
performance, enhance security features and according to customer's requirements with upcoming time.
This process to take care of product time to time is called maintenance.
"So, all these are six phases of software development life cycle (SDLC) under which the process of
development of software takes place. All are compulsory phases without any one of the development
cannot be possible because development continues for the lifetime of software with maintenance phase".
V Model:
V-model is also known as Verification and Validation (V&V) model. In this each phase of SDLC must be
completed before the next phase starts. It follows a sequential design process same like waterfall model.
How the development team and test team involves in each phase of SDLC in V Model.
1. Once client sends BRS, both the teams (test and development) start their activities. The developers
translate the BRS to SRS. The test team involves in reviewing the BRS to find the missing or wrong
requirements and writes acceptance test plan and acceptance test cases.
2. In the next stage, the development team sends the SRS the testing team for review and the
developers start building the HLD (High Level Design Document) of the product. The test team
involves in reviewing the SRS against the BRS and writes system test plan and test cases.
3. In the next stage, the development team starts building the LLD (Low Level Design) of the product.
The test team involves in reviewing the HLD (High Level Design) and writes Integration test plan
and integration test cases.
4. In the next stage, the development team starts with the coding of the product. The test team
involves in reviewing the LLD and writes functional test plan and functional test cases.
5. In the next stage, the development team releases the build to the test team once the unit testing
was done. The test team carries out functional testing, integration testing, system testing and
acceptance testing on the release build step by step.
Advantages:
1. Testing starts in early stages of product development which avoids downward flow of defects and
helps to find the defects in the early stages
2. Test team will be ready with the test cases by the time developers release the software which in
turns saves a lot of time
3. Testing is involved in every stage of product development. It gives a quality product.
4. Total investment is less due to less or no rework.
Disadvantages:
1. Initial investment is more because test team involves right from the early stage.
2. Whenever there is change in requirement, the same procedure continues. It leads more
documentation work.
Applications:
Long term projects, complex applications, When customer is expecting a very high quality product with
in stipulated time frame because every stage is tested and developers & testers are working in parallel
Testing Methods:
Static Testing
Dynamic Testing
Static Testing: It is also known as Verification in Software Testing. Verification is a static method of checking
documents and files. Verification is the process, to ensure that whether we are building the product right
i.e., to verify the requirements which we have and to verify whether we are developing the product
accordingly or not.
Dynamic Testing: It is also known as Validation in Software Testing. Validation is a dynamic process of
testing the real product. Validation is the process, whether we are building the right product i.e., to validate
the product which we have developed is right or not.
The two major V&V activities are reviews, including, inspections and walkthroughs, and testing.
Reviews:
Reviews are conducted during and at the end of each phase of the life cycle to determine whether
established requirements, design concepts, and specifications have been met. Reviews consist of the
presentation of material to a review board or panel. Reviews are most effective when conducted by person
who have not been directly involved in the development of the software being reviewed.
Inspection:
Inspection involves a team of about 3-6 people, led by a leader, which formally reviews the documents and
work product during various phases of the product development life cycle. The work product and related
documents are presented in front of the inspection team, the members of which carry different
interpretations of the presentation. The bugs that are detected during the inspection are communicated to
the next level in order to take care of them.
Walkthroughs:
Walkthrough can be considered same as inspection without formal preparation (of any presentation or
documentations). During the walkthrough meeting, the presenter/author introduces the material to all the
participants in order to make them familiar with it. Even when the walkthroughs can help in finding
potential bugs, they are used for knowledge sharing or communication purpose.
Testing:
Testing is the operation of the software with real or simulated inputs to demonstrate that a product
satisfies its requirements and, if it does not, to identify the specific differences between expected and
actual results. There are varied levels of software tests, ranging from unit or element testing through
integration testing and performance testing, up to software system and acceptance tests.
Smoke Testing comes into the picture at the time of receiving build software from the development team.
The purpose of smoke testing is to determine whether the build software is testable or not. It is done at the
time of "building software." This process is also known as "Day 0".
It is a time-saving process. It reduces testing time because testing is done only when the key features of the
application are not working or if the key bugs are not fixed. The focus of Smoke Testing is on the workflow
of the core and primary functions of the application.
Smoke testing does not require to design test cases. There's need only to pick the required test cases from
already designed test cases.
As mentioned above, Smoke Testing focuses on the workflow of core applications so; we choose test case
suits that covers the major functionality of the application. The number of test cases should be minimized
as much as possible and time of execution must not be more than half an hour.
Suppose, we are using an eCommerce site, and the core working of this site should be login, specific search,
add an item into the cart, add an item into the favorite, payment options, etc. Here we are testing function
to place an order. After testing, the tester has to be sure and confident about the functioning of the
function of the application.
Click on item
Description page should be open.
Click on Add to Cart
The cart should be open
Click on Buy Now
Payment options should be displayed. Choose one of them.
Order placed
Sanity Testing
Sanity testing performed at the time of receiving software build (with minor changes in code) from the
development team. The purpose of sanity testing is to ensure that all the defects have been fixed and no
further issues come in existence due to these changes. It's a kind of regression testing with a focus on a few
impacted functionalities only.
Sanity testing can be done in two situations: one in the case of enhancement in functionality and second in
the case of defect fixed. It makes sure that the changes made in code or functions have no impact on the
related modules, therefore, it can be applied only on related modules that can be impacted.
Likewise, the smoke testing tester doesn't need to design a separate test case suits for sanity testing. Tester
only needs to choose test cases from already designed test cases for the modified or defect fixed function.
The functions that are modified or defect fixed have tested once so; the tester uses the same test case that
he has done before.
Real-time Example:
Let's take the example as above. Take a function Account of any payment site. The tester modifies and fixes
some defects that might be occurred in an account function. The sanity testing performs the testing on the
modified function, i.e., account function in payment application to check whether the function is working
properly or not.
Sanity Testing
Sanity testing checks only modified or defect fixed functions, it does not check End to End functions. It is
the subset of regression testing.
Levels of Testing
Unit Testing
Unit testing involves the testing of each unit or individual component of the software application. It is the
first level of software testing. The aim behind unit testing is to validate unit component with its
performance.
A unit is a single testable part of a software system and tested during the development phase of the
application software.
This testing aims to test the correctness of isolated code. A unit component is an individual function or
code of the application. White box testing approach used for unit testing and usually done by the
developers.
In a testing level hierarchy, unit testing is the first level of testing done before integration and other
remaining levels of the testing. It uses modules for the testing process which reduces the dependency of
waiting for Unit testing frameworks, stubs, drivers and mock objects are used for assistance in unit testing.
1. Unit testing helps tester and developers to understand the base of code that makes them able to
change defect causing code quickly.
2. Unit testing helps in the documentation.
3. Unit testing fixes defects very early in the development phase that's why there is a possibility to
occur a smaller number of defects in upcoming testing levels.
4. It helps with code reusability by migrating code and test cases.
Unit testing uses all white box testing techniques as it uses the code of software application:
Integration testing
Integration testing is the second level of the software testing process comes after unit testing. In this
testing, units or individual components of the software are tested in a group. The focus of the integration
testing level is to expose defects at the time of interaction between integrated components or units.
Unit testing uses modules for testing purpose, and these modules are combined and tested in integration
testing. The Software is developed with a number of software modules that are coded by different
developers or programmers. The goal of integration testing is to check the correctness of communication
among all the modules.
Incremental Approach
In the Incremental Approach, modules are added in ascending order one by one or according to need. The
selected modules must be logically related. Generally, two or more than two modules are added and tested
to determine the correctness of functions. The process continues until the successful testing of all the
modules.
1. Top Down
2. Bottom Up
3. Hybrid Testing
Top-Down Method
The top-down testing strategy deals with the process in which higher level modules are tested with lower
level modules until the successful completion of testing of all the modules. Major design flaws can be
detected and fixed early because critical modules tested first.
Advantages:
Disadvantages:
Bottom Up Method
The bottom to up testing strategy deals with the process in which lower level modules are tested with
higher level modules until the successful completion of testing of all the modules. Top level critical modules
are tested at last, so it may cause a defect.
Advantages:
Disadvantages:
1. Critical modules are tested last due to which the defects can occur.
2. There is no possibility of an early prototype.
In this approach, both Top-Down and Bottom-Up approaches are combined for testing. In this process, top-
level modules are tested with lower level modules and lower level modules tested with high-level modules
simultaneously. There is less possibility of occurrence of defect because each module interface is tested.
Advantages:
1. The hybrid method provides features of both Bottom Up and Top Down methods.
2. It is most time reducing method.
3. It provides complete testing of all modules.
Disadvantages:
1. This method needs a higher level of concentration as the process carried out in both directions
simultaneously.
2. Complicated method.
1. First, determine the test case strategy through which executable test cases can be prepared
according to test data.
2. Examine the structure and architecture of the application and identify the crucial modules to test
them first.
3. Design test cases to verify each interface in detail.
4. Choose input data for test case execution. Input data plays a significant role in testing.
5. Fix defects and retest.
System Testing
System Testing includes testing of a fully integrated software system. Generally, a computer system is made
with the integration of software (any software is only a single element of a computer system). The software
is developed in units and then interfaced with other software and hardware to create a complete computer
system. In other words, a computer system consists of a group of software to perform the various tasks,
but only software cannot perform the task; for that software must be interfaced with compatible hardware.
System testing is a series of different type of tests with the purpose to exercise and examine the full
working of an integrated software computer system against requirements.
System testing falls under Black box testing as it includes testing of the external working of the software.
Testing follows user's perspective to identify minor defects.
1. Verification of input functions of the application to test whether it is producing the expected
output or not.
2. Testing of integrated software by including external peripherals to check the interaction of various
components with each other.
3. Testing of the whole system for End to End testing.
4. Behavior testing of the application via actual user's experience
Regression Testing
Regression testing is performed under system testing to confirm and identify that if there's any defect in
the system due to modification in any other part of the system. It makes sure, any changes done during the
development process have not introduced a new defect and also gives assurance; old defects will not exist
on the addition of new software over the time.
Load Testing
Load testing is performed under system testing to clarify whether the system can work under real-time
loads or not.
Functional Testing
Functional testing of a system is performed to find if there's any missing function in the system. Tester
makes a list of vital functions that should be in the system and can be added during functional testing and
should improve quality of the system.
Recovery Testing
Recovery testing of a system is performed under system testing to confirm reliability, trustworthiness,
accountability of the system and all are lying on recouping skills of the system. It should be able to recover
from all the possible system crashes successfully.
Migration Testing
Migration testing is performed to ensure that if the system needs to be modified in new infrastructure so it
should be modified without any issue.
Usability Testing
The purpose of this testing to make sure that the system is well familiar with the user and it meets its
objective for what it supposed to do.
This testing of the system intends to check hardware and software compatibility. The hardware
configuration must be compatible with the software to run it without any issue. Compatibility provides
flexibility by providing interactions between hardware and software.
1. System Testing gives hundred percent assurance of system performance as it covers end to end
function of the system.
2. It includes testing of System software architecture and business requirements.
3. It helps in mitigating live issues and bugs even after production.
4. System testing uses both existing system and a new system to feed same data in both and then
compare the differences in functionalities of added and existing functions so, the user can
understand benefits of new added functions of the system.
Regression Testing
Regression Testing is the process to test that, if code is changed in any function does not impact the
existing functions of the software application. The process confirms that the old functions still work with
the new modified functions.
Regression testing tests only modified or defect fixed functions and partially selected functions that can
adversely be affected due to the modification. The same test cases are executed for modified functions,
which has already been executed. The reason behind this, when the new version of any software is
released it tested under old test cases to ensure that all old features still working with correctness and in
the same manner. If any function is not working correctly, that means changing or adding new code have
introduced a new error.
Regression Testing comes in a picture during the maintenance phase of a software application which
includes error corrections, enhancements, deletion and optimization of existing features. These variations
and modifications can introduce new errors, and these errors can cause incorrect working of the system.
That's why Regression Testing is essential.
Functional Testing
Functional Testing is a branch of software testing, intended to verify the functionality of the software
application whether the function is operating according to the requirement specification. Each and every
function is tested by giving appropriate input value, determining the output and verifying the actual output
with the expected output.
Functional Testing includes testing via GUI (Graphical User Interface), API (Application Program Interface),
security, Database, client applications, server applications and functionality of the Application. Black Box
Testing method is used for functional testing in which working of internal logic is tested without peering
into internal code.
The goal of functional testing is to check main entry functions, essential usable functions, easy flow of
screen GUI and displaying of error messages whether a user can easily navigate throughout the application.
Acceptance testing
Acceptance testing is formal testing based on user requirements and function processing. It determines
whether the software is conforming specified requirements and user requirements or not. It is conducted
as a kind of Black Box testing where the number of required users involved to test the acceptance level of
the system. It is the fourth and last level of software testing.
However, the software has passed through three testing levels (Unit Testing, Integration Testing, System
Testing) But still there are some minor errors which can be identified when the system is used by the end
user in the actual scenario.
Acceptance testing is the squeezing of all the testing processes that have done previously.
Once the software has undergone through Unit Testing, Integration Testing and System Testing so,
Acceptance Testing may seem redundant, but it is required due to the following reasons.
1. During the development of a project if there are changes in requirements and it may not be
communicated effectively to the development team.
2. Developers develop functions by examining the requirement document on their own
understanding and may not understand the actual requirements of the client.
3. There's maybe some minor errors which can be identified only when the system is used by the end
user in the actual scenario so, to find out these minor errors, acceptance testing is essential.
Confirmation of objectives:
After successful completion of all testing processes, testing team confirms that the software application is
bug-free and it can be delivered to the client.
1. Customers are not willing to do that; it defeats the whole point of acceptance testing.
2. If test cases are written by someone else, the customer does not understand them, so tester has to
perform the inspections by themselves only.
Alpha Testing
Alpha Testing is a type of software testing which is used to find the bugs before the releasing the software
to real users or a public. It gives a certificate of performance in an actual scenario. It is a type of acceptance
testing.
The objective of alpha testing is to rectify the software product by identifying and fixing errors that could
not discover in previous testing processes. It is done near the end of development and before beta testing
of the software.
Software engineers or quality assurance staff perform alpha testing. Generally, it has two phases, in the
first phase, developers use debugger software or hardware-assisted debuggers which helps to catch bugs
very quickly. During alpha testing, there is plenty of bugs, missing features, and crashes.
In the second phase, quality assurance staff perform alpha testing by involving both black box and white
box testing techniques. It is an additional testing environment.
Alpha Testing
Alpha testing is envisioned as an available online application that is not complete to use but can be opened
up to check performance and get initial feedback from the public. It can be referred to an early version or
upcoming version of the software application.
Alpha testing is done in a lab test environment on a separate computer system. A group consisting of
project manager and developers defines goals of alpha testing and integrate result of an evolving project.
1. It needs a tester who is skilled in both white box and black box testing.
2. It needs software tools for quick debugging.
3. This test is done immediately after the development, so it is necessary to get the tester available
immediately.
Beta Testing
Beta Testing is a part of acceptance testing which is intended to validate the product for usability,
functionality, reliability, and compatibility by the end-user. It adds value to the software as user validates it
by providing real input values.
It helps in enhancement of the quality of software and leads it towards success. Also, helpful in deciding
whether the software is worthy to invest more in future versions or not.
It is not controlled activity since it happens at the user's side. It is considered as final testing before
delivering the software to the customers. Software released for beta testing is known as beta software.
The user of the software performs beta testing by giving real-time input values to all the executable
functions. It is only users who can certify the application on required quality aspects. Users views are
considered as a testing result, and these are also helpful in performance improvement and quality
enhancement.
Beta testing lifecycle starts from Plan and ends on Launch of the product as beta software. Design, Build,
Test, Review are also a part of the lifecycle of beta testing.
1. Issues like confusing application flow and crashes that may be missed in previous testing processes
are detected by beta testing.
2. Beta testing uses customer validation approach which reduces product failure risk.
3. Customer feedback helps to improve product quality.
4. It is less expensive than other similar data gathering methods.
5. Beta testing focuses on customer's satisfaction.
1. Beta testing does not test the functionality of software in depth as software still under
development.
2. Usually, a user does not test the function that is less useful; it only focuses on the most useful
functions.
3. Testing on the feedback of some users who do not use the software themselves properly, waste
the tester's time and money.
Requirement Analysis:
In this step, the testing team analyzes requirement document to find out the objective of the developed
software. Test planning accomplished by using requirement document, Process Flow Diagrams, System
Requirements Specification, Business Use Cases, Business Requirements Document and Project Charter.
Test Plan Creation outlines the whole strategy of the testing process. This strategy is used to ensure and
verify whether the software is conforming specified requirements or not.
This step includes the creation of test cases based on test plan documents. Test cases should be designed in
a way that can cover most of the acceptance testing scenario.
Test Case Execution includes execution of test cases by using appropriate input values. The testing team
collects input values from the end user then all test cases are executed by both tester and end user to
make sure software is working correctly in the actual scenario.
Non-Functional Testing
Non-functional testing is a type of software testing to test non-functional parameters such as reliability,
load test, performance and accountability of the software. The primary purpose of non-functional testing is
to test the reading speed of the software system as per non-functional parameters. The parameters of non-
functional testing are never tested before the functional testing.
Non-functional testing is also very important as functional testing because it plays a crucial role in customer
satisfaction.
Functional and Non-functional testing both are mandatory for newly developed software. Functional
testing checks the correctness of internal functions while Non-Functional testing checks the ability to work
in an external environment.
It sets the way for software installation, setup, and execution. The measurement and metrics used for
internal research and development are collected and produced under non-functional testing.
Non-functional testing gives detailed knowledge of product behavior and used technologies. It helps in
reducing the risk of production and associated costs of the software.
Performance Testing
Performance Testing eliminates the reason behind the slow and limited performance of the software.
Reading speed of the software should be as fast as possible.
For Performance Testing, a well-structured and clear specification about expected speed must be defined.
Otherwise, the outcome of the test (Success or Failure) will not be obvious.
Load Testing
Load testing involves testing the system's loading capacity. Loading capacity means more and more people
can work on the system simultaneously.
Security Testing
Security testing is used to detect the security flaws of the software application. The testing is done via
investigating system architecture and the mindset of an attacker. Test cases are conducted by finding areas
of code where an attack is most likely to happen.
Portability Testing
The portability testing of the software is used to verify whether the system can run on different operating
systems without occurring any bug. This test also tests the working of software when there is a same
operating system but different hardware.
Accountability Testing
Accountability test is done to check whether the system is operating correctly or not. A function should give
the same result for which it has been created. If the system gives expected output, it gets passed in the test
otherwise failed.
Reliability Testing
Reliability test assumes that whether the software system is running without fail under specified conditions
or not. The system must be run for a specific time and number of processes. If the system is failed under
these specified conditions, reliability test will be failed.
Efficiency Testing
Efficiency test examines the number of resources needed to develop a software system, and how many of
these were used. It also includes the test of these three points.
1. It provides a higher level of security. Security is a fundamental feature due to which system is
protected from cyber-attacks.
2. It ensures the loading capability of the system so that any number of users can use it
simultaneously.
3. It improves the performance of the system.
4. Test cases are never changed so do not need to write them more than once.
5. Overall time consumption is less as compared to other testing processes.
1. Every time the software is updated, non-functional tests are performed again.
2. Due to software updates, people have to pay to re-examine the software; thus software becomes
very expensive.
Test Plan
A test plan is a detailed document which describes software testing areas and activities. It outlines the test
strategy, objectives, test schedule, required resources (human resources, software, and hardware), test
estimation and test deliverables.
The test plan is a base of every software's testing. It is the most crucial activity which ensures availability of
all the lists of planned activities in an appropriate sequence.
The test plan is a template for conducting software testing activities as a defined process that is fully
monitored and controlled by the testing manager.
Master Test Plan is a type of test plan that has multiple levels of testing. It includes a complete test
strategy.
A phase test plan is a type of test plan that addresses any one phase of the testing strategy. For example, a
list of tools, a list of test cases, etc.
Specific test plan designed for major types of testing like security testing, load testing, performance testing,
etc. In other words, a specific test plan designed for non-functional testing.
Making a test plan is the most crucial task of the test management process. According to IEEE 829, follow
the following seven steps to prepare a test plan.
1. The test plan gives direction to our thinking. This is like a rule book, which must be followed.
2. The test plan helps in determining the necessary efforts to validate the quality of the software
application under the test.
3. The test plan helps those people to understand the test details that are related to the outside like
developers, business managers, customers, etc.
4. Important aspects like test schedule, test strategy, test scope etc are documented in the test plan
so that the management team can review them and reuse them for other similar projects.
Test Scenario
The test scenario is a detailed document of test cases that cover end to end functionality of a software
application in liner statements. The liner statement is considered as a scenario. The test scenario is a high-
level classification of testable requirements. These requirements are grouped on the basis of the
functionality of a module and obtained from the use cases.
In the test scenario, there is a detailed testing process due to many associated test cases. Before
performing the test scenario, the tester has to consider the test cases for each scenario.
In the test scenario, testers need to put themselves in the place of the user because they test the software
application under the user's point of view. Preparation of scenarios is the most critical part, and it is
necessary to seek advice or help from customers, stakeholders or developers to prepare the scenario.
1. Read the requirement document such as BRS (Business Requirement Specification), SRS (System
Requirement Specification) and FRS (Functional Requirement Specification) of the software which is
under the test.
2. Determine all technical aspects and objectives for each requirement.
3. Find all the possible ways by which the user can operate the software.
4. Ascertain all the possible scenario due to which system can be misused and also detect the users
who can be hackers.
5. After reading the requirement document and completion of the scheduled analysis make a list of
various test scenarios to verify each function of the software.
6. Once you listed all the possible test scenarios, create a traceability matrix to find out whether each
and every requirement has a corresponding test scenario or not.
7. Supervisor of the project reviews all scenarios. Later, they are evaluated by other stakeholders of
the project.
1. The test scenario is a liner statement that guides testers for the testing sequence.
2. Test scenario reduces the complexity and repetition of the product.
3. Test scenario means talking and thinking about tests in detail but write them in liner statements.
4. It is a thread of operations.
5. Test scenario becomes more important when the tester does not have enough time to write test
cases, and team members agree with a detailed liner scenario.
6. The test scenario is a time saver activity.
7. It provides easy maintenance because the addition and modification of test scenarios are easy and
independent.
Test Case
The test case is defined as a group of conditions under which a tester determines whether a software
application is working as per the customer's requirements or not. Test case designing includes
preconditions, case name, input conditions, and expected result. A test case is a first level action and
derived from test scenarios.
Test case gives detailed information about testing strategy, testing process, preconditions, and expected
output. These are executed during the testing process to check whether the software application is
performing the task for that it was developed or not.
Writing of test cases is a one-time attempt that can be used in the future at the time of regression testing.
Test case helps the tester in defect reporting by linking defect with test case ID. Detailed test case
documentation works as a full proof guard for the testing team because if developer missed something,
then it can be caught during execution of these full-proof test cases.
Usually, there is no formal templet for test case writing, but the following components are always included
in every test case-
1. Test case ID
2. Pre-conditions
3. Purpose
4. Steps
5. Actual outcome
6. Expected outcome
7. Assumptions
8. Product module
9. Product version
10. Revision history
11. Post-conditions
Test Suit
Many test cases can be derived from one test scenario, and sometimes multiple test cases are written for a
single function of software, these multiple test cases are known as test suit.
The procedure of software testing is also known as STLC (Software Testing Life Cycle) which includes phases
of the testing process. The testing process is executed in a well-planned and systematic manner. All
activities are done to improve the quality of the software product.
1. Requirement Analysis
2. Test Plan Creation
3. Environment setup
4. Test case Execution
5. Defect Logging
6. Test Cycle Closure
Requirement Analysis:
The first step of the manual testing procedure is requirement analysis. In this phase, tester analyses
requirement document of SDLC (Software Development Life Cycle) to examine requirements stated by the
client. After examining the requirements, the tester makes a test plan to check whether the software is
meeting the requirements or not.
For the planning of test plan Prepare the list of all List of all the necessary tests for
requirement specification, requirements and queries, and the testable requirements and
application architecture get resolved from Technical Test environment details
document and well-defined Manager/Lead, System
acceptance criteria should be Architecture, Business Analyst
available. and Client.
Make a list of all types of tests
(Performance, Functional and
security) to be performed.
Make a list of test environment
details, which should contain all
the necessary tools to execute
test cases.
Test plan creation is the crucial phase of STLC where all the testing strategies are defined. Tester
determines the estimated effort and cost of the entire project. This phase takes place after the successful
completion of the Requirement Analysis Phase. Testing strategy and effort estimation documents provided
by this phase. Test case execution can be started after the successful completion of Test Plan Creation.
Environment setup:
Setup of the test environment is an independent activity and can be started along with Test Case
Development. This is an essential part of the manual testing procedure as without environment testing is
not possible. Environment setup requires a group of essential software and hardware to create a test
environment. The testing team is not involved in setting up the testing environment, its senior developers
who create it.
Test strategy and test plan Prepare the list of software and hardware by analyzing Execution
document. requirement specification. report.
Test case document. After the setup of the test environment, execute the Defect report.
Testing data. smoke test cases to check the readiness of the test
environment.
Test case Execution:
Test case Execution takes place after the successful completion of test planning. In this phase, the testing
team starts case development and execution activity. The testing team writes down the detailed test cases,
also prepares the test data if required. The prepared test cases are reviewed by peer members of the team
or Quality Assurance leader.
RTM (Requirement Traceability Matrix) is also prepared in this phase. Requirement Traceability Matrix is
industry level format, used for tracking requirements. Each test case is mapped with the requirement
specification. Backward & forward traceability can be done via RTM.
Testers and developers evaluate the completion criteria of the software based on test coverage, quality,
time consumption, cost, and critical business objectives. This phase determines the characteristics and
drawbacks of the software. Test cases and bug reports are analyzed in depth to detect the type of defect
and its severity.
Defect logging analysis mainly works to find out defect distribution depending upon severity and types. If
any defect is detected, then the software is returned to the development team to fix the defect, then the
software is re-tested on all aspects of the testing.
Once the test cycle is fully completed then test closure report, and test metrics are prepared.
Test case execution It evaluates the completion criteria of the software based on Closure report
report. test coverage, quality, time consumption, cost, and critical Test metrics
Defect report business objectives.
Defect logging analysis finds out defect distribution by
categorizing in types and severity.
The test cycle closure report includes all the documentation related to software design, development,
testing results, and defect reports.
This phase evaluates the strategy of development, testing procedure, possible defects in order to use these
practices in the future if there is a software with the same specification.
All document and reports Evaluates the strategy of development, testing Test closure report
related to software. procedure, possible defects to use these
practices in the future if there is a software with
the same specification
New: When a new defect is logged and posted for the first time. It is assigned a status as NEW.
Assigned: Once the bug is posted by the tester, the lead of the tester approves the bug and
assigns the bug to the developer team
Open: The developer starts analyzing and works on the defect fix
Fixed: When a developer makes a necessary code change and verifies the change, he or she can
make bug status as "Fixed."
Pending retest: Once the defect is fixed the developer gives a particular code for retesting the
code to the tester. Since the software testing remains pending from the testers end, the status
assigned is "pending retest."
Retest: Tester does the retesting of the code at this stage to check whether the defect is fixed by
the developer or not and changes the status to "Re-test."
Verified: The tester re-tests the bug after it got fixed by the developer. If there is no bug detected
in the software, then the bug is fixed and the status assigned is "verified."
Reopen: If the bug persists even after the developer has fixed the bug, the tester changes the
status to "reopened". Once again the bug goes through the life cycle.
Closed: If the bug is no longer exists then tester assigns the status "Closed."
Duplicate: If the defect is repeated twice or the defect corresponds to the same concept of the
bug, the status is changed to "duplicate."
Rejected: If the developer feels the defect is not a genuine defect then it changes the defect to
"rejected."
Deferred: If the present bug is not of a prime priority and if it is expected to get fixed in the next
release, then status "Deferred" is assigned to such bugs
Not a bug: If it does not affect the functionality of the application then the status assigned to a
bug is "Not a bug".
What is Severity?
Bug/Defect severity can be defined as the impact of the bug on customer’s business. It can be Critical,
Major or Minor. In simple words, how much effect will be there on the system because of a particular
defect.
What are the types of Severity?
Severity can be categorized into three types:
As mentioned above the type of severity are categorized as Critical, Major, and Minor
Critical:
A critical severity issue is an issue where a large piece of functionality or major system component is
completely broken and there is no workaround to move further.
For example, Due to a bug in one module, we cannot test the other modules because that blocker bug has
blocked the other modules. Bugs which affects the customers business are considered as critical
Major:
A major severity issue is an issue where a large piece of functionality or major system component is
completely broken and there is a workaround to move further.
Minor:
A minor severity issue is an issue that imposes some loss of functionality, but for which there is an
acceptable & easily reproducible workaround.
For example, font family or font size or color or spelling issue
Trivial:
A trivial severity defect is a defect which is related to enhancement of the system.
What is Priority?
Defect priority can be defined as how soon the defect should be fixed. It gives the order in which a defect
should be resolved. Developers decide which defect they should take up next based on the priority. It can
be High, Medium or Low.
Most of the times the priority status is set based on the customer requirement.
What are the types of Priority?
A critical issue where a large piece of functionality or major system component is completely broken.
For example,
1. Submit button is not working on a login page and customers are unable to login to the application
2. On a bank website, an error message pops up when a customer clicks on transfer money button.
3. Application throws an error 500 response when a user tries to do some action.
500 Status Codes:
The server has problems in processing the request and these are mainly server errors and not with the
request.
These kinds of showstoppers come under High Priority and High Severity.
There won’t be any workaround and the user can’t do the further process.
Low Priority & High Severity:
An issue which won’t affects customers business but it has a big impact in terms of functionality.
For example,
1. Crash in some functionality which is going to deliver after couple of releases
2. There is a crash in an application whenever a user enters 4 digits in the age field which accepts max 3
digits.
A minor issue that imposes some loss of functionality, but for which there is an acceptable & easily
reproducible workaround. Testing can proceed without interruption but it affects customers reputation.
For example,
1. Spelling mistake of a company name on the homepage
2. Company logo or tagline issues
It is important to fix the issue as soon as possible, although it may not cause a lot of damage.
Low Priority & Low Severity:
A minor issue that imposes some loss of functionality, but for which there is an acceptable & easily
reproducible workaround. Testing can proceed without interruption.
For example,
1. FAQ page takes a long time to load.
2. Font family or font size or color or spelling issue in the application or reports (Spelling mistake of
company name on the home page won’t come under this Low Priority and Low Severity)
These kinds of issues won’t bother the customers much.
Some more points:
Development team takes up the high priority defects first rather than of high severity.
Generally, severity is assigned by Tester / Test Lead & priority is assigned by Developer/Team Lead/Project
Lead.
Software Test Metrics:
Software test metrics is to monitor and control process and product. It helps to drive the project towards
our planned goals without deviation.
Software test metrics are classified into two types
1. Process metrics
2. Product metrics
Test Case Preparation Productivity:
It is used to calculate the number of Test Cases prepared and the effort spent for the preparation of Test
Cases.
Formula:
1. Test Case Preparation Productivity = (No of Test Case)/ (Effort spent for Test Case Preparation)
E.g.: No. of Test cases = 240
Effort spent for Test case preparation (in hours) = 10*8
Test Case preparation productivity = 240/80 = 3 test cases/hour
Test Design Coverage:
It helps to measure the percentage of test case coverage against the number of requirements
Formula:
Test Design Coverage = ((Total number of requirements mapped to test cases) / (Total number of
requirements)*100
E.g.: Total number of requirements: 100
Total number of requirements mapped to test cases: 98
Test Design Coverage = (98/100)*100 = 98%
Test Execution Productivity:
It determines the number of Test Cases that can be executed per hour
Formula:
(No of Test cases executed)/ (Effort spent for execution of test cases)
E.g.: No of Test cases executed = 180
Effort spent for execution of test cases = 10
Test Execution Productivity = 180/10 = 18 test cases/hour
Test Execution Coverage:
It is to measure the number of test cases executed against the number of test cases planed.
Formula:
Test Execution Coverage = (Total no. of test cases executed / Total no. of test cases planned to
execute)*100
E.g.: Total no. of test cases planned to execute = 240
Total no. of test cases executed = 160
Test Execution Coverage = (180/240)*100 = 75%
Test Cases Passed:
It is to measure the percentage no. of test cases passed
Formula:
Test Cases Pass = (Total no. of test cases passed) / (Total no. of test cases executed) * 100
E.g.: Test Cases Pass = (80/90)*100 = 88.8 = 89%
Test Cases Failed:
It is to measure the percentage no. of test cases failed
Formula: Test Cases Failed = (Total no. of test cases failed) / (Total no. of test cases executed) * 100
E.g.: Test Cases Failed= (10/90)*100 = 11.1 = 11%
Test Cases Blocked:
It is to measure the percentage no. of test cases blocked
Formula:
Test Cases Blocked = (Total no. of test cases blocked) / (Total no. of test cases executed) * 100
E.g.: Test Cases Blocked = (5/90)*100 = 5.5 = 6%
Product metric:
Software Test Metrics used in the process of defect analysis phase of STLC.
Test Deliverables
Test Deliverables are the test artifacts which are given to the stakeholders of a software project during the
SDLC (Software Development Life Cycle).
A software project which follows SDLC undergoes the different phases before delivering to the customer. In
this process there will be some deliverables in every phase. Some of the deliverables are provided before
the testing phase commences and some are provided during the testing phase and rest after the testing
phase is completed.
The following are list of test deliverables:
1. Test Strategy
2. Test Plan
3. Effort Estimation Report
4. Test Scenarios
5. Test Cases/Scripts
6. Test Data
7. Requirement Traceability Matrix (RTM)
8. Defect Report/Bug Report
9. Test Execution Report
10. Graphs and Metrics
11. Test summary report
12. Test incident report
13. Test closure report
14. Release Note
15. Installation/configuration guide
16. User guide
17. Test status report
18. Weekly status report (Project manager to client)
Product Backlog
Product Owner usually represents the Client and acts as a point of contact from Client side. The one who
prioritizes the list of Product Backlogs which Scrum Team should finish and release.
Scrum Master:
Scrum Master acts as a facilitator to the Scrum Development Team. Clarifies the queries and organizes the
team from distractions and teach team how to use scrum and also concentrates on Return on Investment
(ROI).
Scrum Development Team:
Developer’s, QA’s. Who develops the product. Scrum development team decides the effort estimation to
complete a Product Backlog Item.
Scrum Team:
A cross-functional, self-organizing group of dedicated people (Group of Product Owner, Business Analyst,
Developer’s and QA’s). Recommended size of a scrum team is 7 plus or minus 2 (i.e., between 5 to 9
members in a team)
ARTIFACTS IN AGILE SCRUM METHODOLOGY:
User Stories:
User Stories are not like a traditional requirement documents. In User Stories, stake holder mention what
features they need and what they want to achieve.
Product Backlog:
Product Backlog is a repository where the list of Product Backlog Items stored and maintained by the
Product Owner. The list of Product Backlog Items are prioritized by the Product Owner as high and low and
also could re-prioritize the product backlog constantly.
Sprint Backlog:
Group of user stories which scrum development team agreed to do during the current sprint (Committed
Product Backlog items).
Note: Burn Down Charts provide proof that the project is on track or not.