Software Testing
Software Testing
While to err is human, sometimes the cost of a mistake might be just too high.
History knows many examples of situations when software flaws have caused
billions of dollars in waste or even lead to casualties: from Starbucks coffee
shops being forced to give away free drinks because of a register malfunction,
to the F-35 military aircraft being unable to detect the targets correctly because
of a radar failure. In order to make sure the released software is safe and
functions as expected, the concept of software quality was introduced. It is often
defined as “the degree of conformance to explicit or implicit requirements and
expectations”. These so-called explicit and implicit expectations correspond to
the two basic levels of software quality:
•• Functional — the product’s compliance with functional (explicit)
requirements and design specifications. This aspect focuses on the practical
use of software, from the point of view of the user: its features, performance,
ease of use, absence of defects.
••Non-Functional — system’s inner characteristics and architecture, i.e.
structural (implicit) requirements. This includes the code maintainability,
understandability, efficiency, and security [2].
The structural quality of the software is usually hard to manage: It relies mostly
on the expertise of the engineering team and can be assured through code
review, analysis, and refactoring. At the same time, functional aspect can be
assured through a set of dedicated quality management activities, which
includes quality assurance, quality control and testing.
As per ISTQB definition: “Test Plan is A document describing the scope, approach,
resources, and schedule of intended test activities.”
The product under test is a banking website. You should research clients and the
end users to know their needs and expectations from the application
Risk Mitigation
Team member lack the Plan training course to skill up your members
required skills for website
testing.
The project schedule is too Set Test Priority for each of the test activity.
tight; it's hard to complete
this project on time
Wrong budget estimate and Establish the scope before beginning work, pay
cost overruns a lot of attention to project planning and
constantly track and measure the progress
1. List all the software features (functionality, performance, GUI…) which may
need to test.
2. Define the target or the goal of the test based on above features
Test Plan Example: If your team members report that there are 40% of test cases
failed, you should suspend testing until the development team fixes all the failed
cases.
Exit Criteria
It specifies the criteria that denote a successful completion of a test phase. The
exit criteria are the targeted results of the test and are necessary before
proceeding to the next phase of development. Example: 95% of all critical test
cases must pass.
The resource planning is important factor of the test planning because helps
in determining the number of resources (employee, equipment…) to be used for
the project. Therefore, the Test Manager can make the correct schedule &
estimation for the project.
In the Test Estimation phase, suppose you break out the whole project into small
tasks and add the estimation for each task as below
To create the project schedule, the Test Manager needs several types of input as
below:
Employee and project deadline: The working days, the project deadline,
resource availability are the factors which affected to the schedule
Project estimation: Base on the estimation, the Test Manager knows how
long it takes to complete the project. So he can make the appropriate
project schedule
Project Risk : Understanding the risk helps Test Manager add enough extra
time to the project schedule to deal with the risks
There are different test deliverables at every phase of the software development
lifecycle.
Test Results/reports
Defect Report
Installation/ Test procedures guidelines
Release notes
Test case and test plan are two important documents that play a significant role
in defining as well as managing the procedure of testing and offering the team
vital information regarding the testing of the software.
Test Case:
During the process of software testing, test case defines the preconditions for
test execution and offers an insight into the various specification and
requirements that are stated before the commencement of the testing. An
integral part of the process, this document is used to define various important
components of the software testing such as, testing inputs, execution
conditions, testing procedures, and the expected results. The main purpose of
this document is to help testers meet the objective of testing as well as the
requirements stated before the commencement of the process.
With the assistance of test cases testers can find defects and issues in
the test design, which is not covered by requirements.
Helps identify usability issues, as the whole process is monitored.
Enables the team to record the testing procedure and activities, which
can be helpful in future.
It organizes the complete testing process.
Helps validate if all requirements are fulfilled or not.
It ensures accurate test coverage.
Details Covered by a Test Case:
Test title.
Test scenarios.
Test descriptions.
Steps & procedure.
Prerequisites.
Actual & expected results.
Test environment.
Things to Consider while Writing Test Cases:
As one of the most significant document prepared during the software testing
life cycle (STLC), the document for test case needs to be designed with great care
and accuracy. The details or information included in it should be described in a
manner that is understandable and precise. Hence, following are some factors
that need consideration while preparing the test case document.
Test Strategy
Test Strategy is a set of guidelines that explain the test design and determine
how testing needs to be done.
Test strategy is intended for the complete project team that comprises of
Project Sponsors, Business SMEs, Application/ Integration Development,
System Integration partners, Data Conversion Teams, Build/Release
Management Teams such as technical leads, architecture leads, and
deployment and infrastructure teams.
Below are the important sections that a test strategy document should have:
Application Scope defines the system under test and the impact on the system
due to new or changed functionality. Related systems can also be defined.
System Impact (New or Changed functionality) Related System
Functional Scope defines the impact on different modules within the system.
Here each related system with respect to functionality will be explained.
System Module Functionality Related System
Functionality 2 System C
#3) High-Level Test Plan
Test Plan is a separate document. In the test strategy, a high-level test plan can
be included. A high-level test plan can include test objectives and test scope.
Test scope should define both in scope and out of scope activities.
As per the above diagram testing will be conducted in two phases i.e. Test
Strategy & Planning and Test Execution. Test Strategy & Planning phase will be
one time for an overall program whereas Test execution phases will be
repeated for each Cycle of the overall program. The above diagram shows
different stages and deliverables (outcome) in each phase of the execution
approach.
Testing tools that are going to be used also can be mentioned in this section.
Test management HP ALM Mention the reason for using this tool
Defect management JIRA Mention the reason for using this tool
#7) QA Deliverables and Metrics
List out all the QA deliverables
S. No. Deliverable
3 ST Test Scripts
#11) Appendix
Include stuff like Roles & Responsibilities, Work Time Zone, and References in
this section
We can describe about the specifications Test strategy describes about the
by using a Test Plan. general approaches.
Test Plan will change over the course of Test Strategy usually will not
the project. change once approved.
Test plan is written after requirement Test strategy is made before the
sign off. test plan.
Test plans can be of different types. There will be only one test strategy
There will be a master test plan and document for a project.
separate test plan for different types of
testing like system test plan,
performance test plan, etc.
Test plan should be clear and concise. Test strategy provides overall
guidance for the project in hand.
Types of Software testing
Software testing types are the approaches and techniques that
are applied at a given level using an appropriate method to
address the test requirements in the most efficient manner.
They are vast in number while serving different objectives.
Manual Testing
In manual testing, software testing is done manually without the use of automated tools or
applications available in the market. In this form of testing, the software tester tests or
checks for bugs like the end-user and checks the project for identifying any abnormal
behavior or bugs in it. Various diverse phases are there for testing a project manually. These
are:
unit-testing
integration testing
system testing and
user acceptance testing
Automation Testing
In automation testing (also termed as Software Test Automation), the software tester has to
write different scripts and apply other 3rd party software to test the software. Automation
testing involves the manual process done automatically. It is implemented for re-running
the test situations and states done manually and at the same time at a fast pace and
repeatedly performed to check whether any bug or error is left behind or not from the
previous test. This type of testing also deals with checking load, performance stats, CPU and
memory usage, and activities. Automation testing is more advantageous than manual
testing as it saves the tester's time and money
Black Box Testing
This testing is also known as Behavioral Testing. The software tests the internal structural,
design, and implementation and UI and UX of the product being tested, which is unknown
to the tester. Black box testing is both functional or non-functional, but most of the time, it
is usually functional.
This testing technique is named black box because the software or the product is not known
or acknowledged in advance to the tester, and hence you can say the tester's eye is blind-
folded like a black box, and you can see nothing inside. This technique of testing tries to find
errors in these below-mentioned categories:
Integration Testing
System Testing
Acceptance Testing
It is to be noted that the higher the level of testing is, the bigger and complex the box is to
test, and hence further black box testing comes into play.
Unit Testing
Integration Testing
System Testing
Acceptance Testing
1. Unit Testing: In this testing level, individual sections or parts of software or product are
tested. The idea of this is to confirm every part or unit of the product after the test.
2. Integration Testing: In this software testing level, individual parts need to combine and
test as a single cluster. This testing level's main idea is for exposing the faults while
interacting between integrated units of the project.
3. System Testing: In this software testing level, the whole, integrated software or project is
tested. The principle for this testing is to assess the system's conformity with its intended
requirements.
4. Acceptance Testing: At this software testing level, a system needs to be tested for
adequacy. This test is purposefully done for evaluating the compliance of the system with
business requirements.
What is Program Correctness?
Correctness from software engineering perspective can be defined as the adherence to the
specifications that determine how users can interact with the software and how the software
should behave when it is used correctly.
If the software behaves incorrectly, it might take considerable amount of time to achieve the
task or sometimes it is impossible to achieve it.
Important rules:
Below are some of the important rules for effective programming which are consequences
of the program correctness theory.
Defining the problem completely.
Develop the algorithm and then the program logic.
Reuse the proved models as much as possible.
Prove the correctness of algorithms during the design phase.
Developers should pay attention to the clarity and simplicity of your program.
Verifying each part of a program as soon as it is developed.
Types of Frameworks:
Typically, there are 4 test automation frameworks that are adopted while automating the
applications.
Data Driven Automation Framework
Keyword Driven Automation Framework
Modular Automation Framework
Hybrid Automation Framework