Testing PDF
Testing PDF
Submitted in partial fulfilment of the requirements for the award of the degree
Of
BACHELOR OF TECHNOLOGY
In
ELECTRONICS & COMMUNICATION ENGINEERING
By
SHREYA GOYAL
Roll No: 35551202816
Guided by:
Ms. Manisha Dwivedi
(Senior Software Consultant)
CRESTECH
Page 1 of 32
CANDIDATE’S DECLARATION
It is hereby certified that the work which is being presented in the B. Tech Summer
training Report entitled "SOFTWARE TESTING" in partial fulfilment of the
requirements for the award of the degree of Bachelor of Technology and
submitted in the Department of Electronics & Communication Engineering of
Bharati Vidyapeeth College of Engineering, New Delhi (Affiliated to Guru
Gobind Singh Indraprastha University, Delhi) is an authentic record of our own
work carried out during a period from JUNE 2019 to JULY 2019 under the
guidance of Ms. Manisha Dwivedi in the company Crestech.
SHREYA GOYAL
Enrolment No: 35551202816
Page 2 of 32
ABSTRACT
Under the 4-6 week internship program, which is to be completed at the end of the
6th semester, I did my internship at a software solution firm: CresTech.
CresTech is a trusted partner and a pioneer in QA testing space to most of the
Fortune 1000 companies. It is very first (India headquartered) Independent
software testing company to be assessed at International level. CresTech has
provided its customers the convenience of unwinding the gap between the
innovative digital platforms and technologies and administrative applications from
a variety of methodological approaches.
The purpose of this program is to get a practical aspect of the theoretical work
studies at the university and to understand the operations in the co-operate industry.
This not only helps students to gain experience but also help them carve
themselves in order to further make them a good job candidate.
I was first assigned to review all departments and know how a product comes into
market and then finally assigned the QA or the testing department. I gained
knowledge about the production of the product and how to maintain and test it in
different environments.
In conclusion, this was an opportunity to develop and enhance skills and
competencies in my career field.
Page 3 of 32
TABLE OF CONTENTS
CANDIDATE DECLARATION 2
ABSTRACT 3
TABLE OF CONTENTS 4
LIST OF FIGURES AND TABLES 5
Page 4 of 32
LIST OF FIGURES AND TABLES
Table:
Table 1 Phases of Waterfall method
Page 5 of 32
1. Introduction
When any new product or application or even a software comes into market, there
is a lot of planning and strategy that goes behind before making it live to the
customers. Not only the major factors like cost, resources and the market is kept in
mind but also many minute factors that play a key role into the development of it.
There are several separate departments that work on each module of product
development. Starting from getting details from the client, to modelling them, to
making rough models, getting them verified by client, developing a final product,
testing the product in all conditions, to launching it in market and maintaining and
regularly updating it. These are some broad segments in which software solution
firms works.
At CresTech, we aim to deliver the best product in the market by going through all
stages and bringing out the best possible. Every department had its own task
assigned to them as soon as any new product was to be launched. A new team was
assigned to the client with members of all departments to help them with their
product.
In QA department, after learning about all the aspects of testing, I was given the
task of testing their new website which had to go live, the next month. Some
execution sheets and default sheets are also attached to give a rough idea how
manual testing is done and how important it is to test any product before launching
it.
Page 6 of 32
1.1 What is Software Testing?
Software Testing is a process of evaluating the functionality of a software
application to check whether the developed software meets the specified
requirements and identifies any defect in the software in order to produce a quality
product.
Meets the business and technical requirements that guided its design and
development
Works as per the requirement
Can be implemented with the same characteristics
Page 7 of 32
application requires lower maintenance cost and results in more accurate,
consistent and reliable results.
4. Users are not inclined to use software that has bugs. They may not adopt
software if they are not happy with the stability of the application.
Testing is important for the product to stay in business.
5. It’s important to ensure that the application should not result in
any failures because it can be very expensive in the future or in the later
stages of the development.
1. Testing Shows Presence of Defects: Testing shows the presence of defects in the
software. The goal of testing is to make the software fail. Sufficient testing
reduces the presence of defects. In case testers are unable to find defects after
repeated regression testing doesn’t mean that the software is bug-free. Testing
talks about the presence of defects and don’t talk about the absence of defects.
2. Exhaustive Testing is Impossible: Testing all the functionalities using all valid
and invalid inputs and preconditions is known as Exhaustive testing. If we keep
on testing all possible test conditions then the software execution time and costs
will rise. So instead of doing exhaustive testing, risks and priorities will be taken
into consideration whilst doing testing and estimating testing efforts.
3. Early Testing: Defects detected in early phases of SDLC are less expensive to
fix. So conducting early testing reduces the cost of fixing defects.
Assume two scenarios, first one is you have identified an incorrect requirement
in the requirement gathering phase and the second one is you have identified a
bug in the fully developed functionality. It is cheaper to change the incorrect
requirement compared to fixing the fully developed functionality which is not
working as intended.
Page 8 of 32
5. Pesticide Paradox: Pesticide Paradox in software testing is the process of
repeating the same test cases again and again, eventually; the same test cases
will no longer find new bugs. So to overcome this Pesticide Paradox, it is
necessary to review the test cases regularly and add or update them to find more
defects.
Page 9 of 32
1.4 Classification of Software testing
3. White box Testing: This is known as glass box testing or sometimes clear box
testing. This involves testing on the structural part of the application. For
performing white box testing, in-depth knowledge of the code is essential; hence
generally the code developers do this type of testing.
Page 10 of 32
Under white box let us talk about:
Unit Level Testing: refers to the testing carried out on small software units.
This is a type of white box testing generally performed by the code developers.
Integration Testing: The objective is to take unit tested components and build a
program structure that has been dictated by design. Integration testing is testing
in which a group of components are combined to produce output.
4. Black box Testing: Involves testing of functional part of the application. This is
generally conducted by the testing engineers. For conducting black box testing,
testers need not have any formal structural knowledge of the code.
Functional testing: is a type of testing which verifies that each function of the
software application operates in conformance with the requirement
specification. It is not concerned about the source code of the application.
(Every functionality of the system is tested by providing appropriate input,
verifying the output and comparing the actual results with the expected results).
This testing can be done either manually or using automation.
Non-functional testing: is a type of testing to check non-functional aspects
(performance, usability, reliability, etc.) of a software application. It is
explicitly designed to test the readiness of a system as per non-functional
parameters which are never addressed by functional testing. Non-functional
testing is equally important as functional testing and affects client satisfaction.
Under functional testing, there are many sub- categories which we can discuss
like:
User acceptance level testing: It is nothing but a system level testing with the
only difference that it is carried out in the presence of the user.
System level Testing: Whatever testing performed on the application after
its deployment in its actual environment is termed as system level testing. In
this software is tested such that it works fine for different operating systems. In
this we just focus on required input and output without focusing on working.
Under non-functional testing, there are many sub- categories which we can discuss
like:
Page 11 of 32
Testing usability (Usability testing) - testing to determine the degree of
comprehensibility, ease of learning and use, the software more attractive to the
user when used in the specified operating conditions.
Security Testing: To test how well the system can preserve itself and the data it
holds in situation of malicious attacks is called security testing. Confidentiality,
integrity, availability, authentication, and authorization are the main areas that
are tested when security testing is considered. Also, network security, system
security and application security are other areas that will be tested in this case.
Page 12 of 32
1.5 Documentation of Software Testing
Testing documentation involves the documentation of artefacts that should be
developed before or during the testing of Software.
Documentation for software testing helps in estimating the testing effort required,
test coverage, requirement tracking/tracing, etc. This section describes some of the
commonly used documented artefacts related to software testing such as –
Test Plan: A test plan outlines the strategy that will be used to test an
application, the resources that will be used, the test environment in which
testing will be performed, and the limitations of the testing and the schedule
of testing activities. Typically the Quality Assurance Team Lead will be
responsible for writing a Test Plan.
A test plan includes the following –
1. Assumptions while testing the application
2. List of test cases included in testing the application
3. List of features to be tested
4. What sort of approach to use while testing the software
5. List of deliverables that need to be tested
6. The resources allocated for testing the application
7. Any risks involved during the testing process.
8. A schedule of tasks and milestones to be achieved
Test Scenario: It is a one line statement that notifies what area in the
application will be tested. Test scenarios are used to ensure that all process
flows are tested from end to end. A particular area of an application can
have as little as one test scenario to a few hundred scenarios depending on
the magnitude and complexity of the application.
The terms 'test scenario' and 'test cases' are used interchangeably; however a
test scenario has several steps, whereas a test case has a single step. Viewed
from this perspective, test scenarios are test cases, but they include several
test cases and the sequence that they should be executed. Apart from this,
each test is dependent on the output from the previous test.
Page 13 of 32
Figure 4: Test Scenario
Test Case: Test cases involve a set of steps, conditions, and inputs that can
be used while performing testing tasks. The main intent of this activity is to
ensure whether software passes or fails in terms of its functionality and
other aspects.
Furthermore, test cases are written to keep track of the testing coverage of
software. Generally, there are no formal templates that can be used during
test case writing. However, the following components are always available
and included in every test case –
1. Test case ID
2. Product module
3. Product version
4. Revision history
5. Purpose
6. Assumptions
7. Pre-conditions
8. Expected outcome
9. Actual outcome
10. Post-conditions
Page 14 of 32
2.1 STLC (Software testing life cycle)
Software Testing Life Cycle (STLC) is the testing process which is executed in
systematic and planned manner. In STLC process, different activities are
carried out to improve the quality of the product.
Characteristics of STLC:
1. STLC is a fundamental part of Software Development Life Cycle
(SDLC) but STLC consists of only the testing phases.
2. STLC starts as soon as requirements are defined or software requirement
document is shared by stakeholders.
3. STLC yields a step-by-step process to ensure quality software.
4. As soon as the development phase is over, testing team is ready with test
cases and starts the execution. This helps in finding bugs in the early phase.
5. Test Execution: After the test case development and test environment
setup test execution phase gets started. In this phase testing team start
executing test cases based on prepared test cases in the earlier step. During
this phase, the testers will carry out the testing based on the test plans and
the test cases prepared. Bugs will be reported back to the development team
for correction and retesting will be performed.
6. Test Closure: Testing team will meet, discuss and analyse testing artefacts
to identify strategies that have to be implemented in the future, taking
lessons from the current test cycle. The idea is to remove the process
bottlenecks for future test cycles and share best practices for any similar
projects in the future. This is the last stage of STLC in which the process of
testing is analysed.
Page 16 of 32
2.2 Methodologies for testing
Software Testing Methodology is defined as strategies and testing types used to
certify that the Application under Test meets client expectations. Selecting an
appropriate testing methodology is considered to be the core of the testing process.
4 System Testing 1. Integrate the unit tested code and test it to make sure if it works as
expected.
2. Perform all the testing activities to make sure that the system meets the
Page 17 of 32
requirements.
3. In case of any anomaly, report it.
6 System 1. Make sure that the application is up and running in the respective
maintenance environment.
2. In case user encounters and defect, make sure to note and fix the issues
faced.
3. In case any issue is fixed; the updated code is deployed in the
environment.
4.The application is always enhanced to incorporate more features, update
the environment with the latest features
Page 18 of 32
2.2.2 Agile Testing
As the complexity of software development process is increasing continuously, the
software testing approaches needs to evolve to keep up with the development
approaches. Agile testing is a new age approach which focuses on testing smarter
rather than putting a lot of efforts yet it delivers high-quality products.
The testers and developers need a higher level of collaboration in Agile Testing.
The testers have to provide corrective feedback to the development team during the
development cycle. This is the age of on-going integration between testing and
development approaches.
Agile testing is a software testing process that follows the principles of agile
software development. Agile testing aligns with iterative Development
Methodology in which requirements develop gradually from customers and testing
teams. The development is aligned with customer requirements.
Agile testing is a continuous process rather than being sequential. The testing
begins at the start of the project and there is on-going integration between testing
and development. The common objective of agile development and testing is to
achieve a high product quality.
Page 19 of 32
3. Different Techniques of Testing
Software testing Techniques help you design better cases. Since exhaustive testing
is not possible; Testing Techniques help reduce the number of test cases to be
executed while increasing test coverage. They help identify test conditions that are
otherwise difficult to recognize.
Page 20 of 32
How to perform Manual Testing:
Read and understand the software project documentation/guides. Also, study the
Application under Test (AUT) if available.
1. Draft Test cases that cover all the requirements mentioned in the
documentation.
2. Review and baseline the test cases with Team Lead, Client (as applicable)
3. Execute the test cases on the AUT
4. Report bugs.
5. Once bugs are fixed, again execute the failing test cases to verify they pass.
Automation costs are really higher initially. It includes the cost of the tool, then the
cost of the automation testing resource and his/her training.
But when the scripts are ready, they can be executed hundreds of times repeatedly
with the same accuracy and rather quickly. This will save many hours of manual
testing. So the cost gradually decreases, and ultimately it becomes a cost-effective
method for Regression testing.
Out of many tools available for testing, we tend to prefer Selenium. Selenium is the
household name when it comes to test automation. It is considered the industry
standard for user interface automation testing of Web applications.
For developers and testers who have experience and skills in programming and
scripting, Selenium offers flexibility that is unseen in many other test automation
tools and frameworks. Users can write test scripts in many different languages (such
as Java, Groovy, Python, C#, PHP, Ruby, and Perl) that run on multiple system
environments (Windows, Mac, Linux) and browsers (Chrome, Firefox, IE, and
Headless browsers).
Page 22 of 32
Selenium has recently released its first alpha version of Selenium in April 2019.
The announcement of Selenium 4 official version is yet to be determined; but you
can expect the release would come with many improved and enriched features.
To use Selenium effectively, users have to possess advanced programming skills
and need to spend considerable time to build automation frameworks and libraries
necessary for automation.
Page 23 of 32
3.3 Web Application Testing
Web application testing, a software testing technique exclusively adopted to test
the applications that are hosted on web in which the application interfaces and
other functionalities are tested.
Performance tools:
A web application performance tool (WAPT) is used to test web applications and
web related interfaces. These tools are used for performance, load and stress testing
of web applications, web sites, web API, web servers and other web interfaces.
WAPT tends to simulate virtual users which will repeat either recorded URLs or
specified URL and allows the users to specify number of times or iterations that the
virtual users will have to repeat the recorded URLs. By doing so, the tool is useful
to check for bottleneck and performance leakage in the website or web application
being tested.
A WAPT faces various challenges during testing and should be able to conduct
tests for:
Browser compatibility
Operating System compatibility
Windows application compatibility where required
WAPT allows a user to specify how virtual users are involved in the testing
environment.ie either increasing users or constant users or periodic users load.
Increasing user load, step by step is called RAMP where virtual users are increased
from 0 to hundreds. Constant user load maintains specified user load at all time.
Periodic user load tends to increase and decrease the user load from time to time.
Page 24 of 32
3. Interface testing: Performed to verify the interface and the dataflow from one
system to other.
4. Compatibility testing: Compatibility testing is performed based on the
context of the application.
Browser compatibility
Operating system compatibility
Compatible to various devices like notebook, mobile, etc .
5. Performance testing: Performed to verify the server response time and
throughput under various load conditions.
Load testing
Stress testing
Soak testing
Spike testing
6. Security testing: Performed to verify if the application is secured on web as
data theft and unauthorized access are more common issues and below are some
of the techniques to verify the security level of the system.
Injection
Broken Authentication and Session Management
Cross-Site Scripting (XSS)
Insecure Direct Object References
Security Misconfiguration
Sensitive Data Exposure
Page 25 of 32
3.4 Mobile Application Testing
Mobile Application Testing is a process by which a developed application of a
mobile device is tested for its functionality, consistence & usability. It can be
automated and manual. It almost goes through the normal testing process but the
testing techniques may vary for mobile devices.
A critical factor that you have to consider while doing test planning is checking the
Mobile Application type. You will mainly come across three types of mobile
applications: Mobile Web, Native App, and Hybrid App. The classification is
based on the development efforts and App redistribution strategy. Let's understand
each of them in detail.
1. Mobile Web:
Web apps are not real applications; they are actually websites that open in your
smartphone with the help of a web browser. Mobile websites have the broadest
audience of all the primary types of applications.
2. Native App:
A native app is developed specifically for one platform. It can be installed through
an application store (such as Google Play Store or Apple’s App Store).
3. Hybrid App:
Hybrid Apps are a way to expose content from existing websites in App format.
They can be well described as a mixture of Web App and Native App.
Preparing to Perform Mobile Device Testing:
The methodologies and devices to facilitate usability testing on phones, tablets,
and eReaders continue to develop. When planning mobile device testing, you
should keep in mind the following points −
Your timeframe and budget. Having a good understanding of the timeframe
and the budget will help you determine which processes and equipment will
work best based your needs.
The physical setup of the space and how you will capture the test. This may
range from a lower-fidelity arrangement to using a specialized platform and
camera device and/or maybe using an eye-tracking software.
Your target audience and devices. Use web analytics to check how many
mobile users visit the site, which device they use, and their operating
system. Understanding this information will help you to know which devices
to test.
Another important aspect to cover after test planning is test device management.
In a large organization, handling mobile device testing needs a smart way to
Page 26 of 32
secure organization’s confidential data. To do this, you will need a security
software. In the following section, we will understand more on device
management tools.
Usability testing– To make sure that the mobile app is easy to use and
provides a satisfactory user experience to the customers
Compatibility testing– Testing of the application in different mobiles
devices, browsers, screen sizes and OS versions according to the
requirements.
Interface testing– Testing of menu options, buttons, bookmarks, history,
settings, and navigation flow of the application.
Services testing– Testing the services of the application online and offline.
Low-level resource testing: Testing of memory usage, auto-deletion of
temporary files, local database growing issues known as low-level resource
testing.
Performance testing– Testing the performance of the application by
changing the connection from 2G, 3G to WIFI, sharing the documents,
battery consumption, etc.
Operational testing– Testing of backups and recovery plan if a battery goes
down, or data loss while upgrading the application from a store.
Installation tests– Validation of the application by installing /uninstalling it
on the devices.
Security Testing– Testing an application to validate if the information
system protects data or not.
Page 27 of 32
4. Execution
Here are some execution sheets which were made by me while performing manual
testing on the next to go live website of CresTech.
Page 28 of 32
Page 29 of 32
Page 30 of 32
Page 31 of 32
DEFAULT SHEET
Page 32 of 32