SW Testing

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

ABSTRACT :-

Software Testing is a process of finding errors while executing a program so that we get a
zero defect software. It is aimed at evaluating the capability or usability of a program.
Software testing is an important means of accessing quality of software. The most critical
components of each application have to be tested thoroughly to ensure their functional,
performance and security features are behaving as expected. This paper talks about
ensuring the quality of all types of software applications by performing certain types of
testing techniques and optimized software testing processes. As per the study and research
done testing types can be categorized under three major testing techniques which are
Functional, Performance and Security Testing

INTRODUCTION :-
Software Testing is an activity that is performed for evaluating software quality and also for
improving it . Software testing is the main activity of evaluating and executing software with
a view to find out errors. It is the process where the system requirements and system
components are exercised and evaluated manually or by using automation tools to find out
whether the system is satisfying the specified requirements and the differences between
expected and actual results are determined. Software testing is also an important
component of software quality assurance (SQA), and a number of software organizations
are spending up to 40% of their resources on testing.
There are lots of available testing types like black box testing, white box testing, state based
testing, security testing, look and feel
testing, acceptance testing, system testing, alpha and beta testing, and configuration based
testing, verification and validation testing. Based on the research and study done this paper
categorized all of them under three high - level testing types, which is Functional,
Performance and Security (FPS).The last section deals with the conclusion, which shows
relevance of our optimized software testing process and FPS as a basis for testing methods

OBJECTIVES :-
There are four main objectives of testing –

Detection: Various errors, defects, and deficiencies are detected. System capabilities and
various limitations, quality of all components, the work products, and the overall system are
calculated
Prevention: In this information to prevent or reduce the number of errors, to clarify
system specifications and system performance is provided. Different ways to avoid risks and
to tackle problems in the future are identified.

Demonstration: It shows how the system can be used with various acceptable risk. It also
demonstrates functions with special conditions and shows how products are ready for
integration or use.

Improving quality: By doing effective testing on software, errors can be minimized and
thus quality of software is improved.

SOFTWARE TESTING TECHNIQUES :-


There are various software testing techniques as per the research and study like black box,
white box, grey box , regression , reliability, usability, performance, unit, system,
integration, security, smoke, sanity and object oriented testing etc. It is impossible to
perform all types of testing on a software as there is always fixed amount of time allocated
for testing. Functional testing is very common and lots of research is done on them in past
that’s why only in rare cases a site crashes due to lack of functional testing. The most recent
failures happened in past are due to lack of Performance and Security testing. In 2014 Indian
Railway site got crashed as it was not able to handle load of customers. Another failure in
2014 is of Delhi University (DU) online application form web site crash on last day of
submission due to excessive load on site. Then there were instances in 2013 when Indian
government sites were hacked by some external agencies. After analyzing and survey of all
these techniques it is found that a right mix of testing types should be performed on a given
software to ensure quality and overall reliable software. This paper will focus on the main
testing techniques like Functional [F], Performance [P] and Security testing[S].

Functional Testing :-
The main quality factor in software is to meet its required functionality and behavior. The
functional part of software includes the external behavior that mainly specifies all user
requirements. The high level design of the software is produced so that the customer would
be satisfied at an early stage of design and development. The functional testing revolves
around the basic work flows and alternative flows of software.
There are different types of functional testing methods and techniques [18] which could be
performed at various levels of testing i.e. unit testing, integration testing (top down and
bottom up testing) and system testing. There are lots of testing performed at various levels
of testing like black box testing, white box testing, grey box testing regression testing , fuzz
testing, use case testing, exploratory testing, smoke testing, sanity testing, acceptance
testing , alpha, beta testing etc. Test cases are built around specifications and requirements
i.e., what the application is supposed to do.
Unit testing is usually done by developers. Integration testing and System testing is
performed by testing team and user acceptance testing is mainly performed by end users or
business team
The main types of Functional Testing are explained below -
Unit Testing :- The lowest level of testing mainly performed by developer to test the unit of
code.
Integration Testing :- This is to test the communication between various modules to make
sure data is flowing across various components correctly. This is done following either top-
down approach OR bottom-up approach.
System Testing :- The overall system is tested to ensure that it is behaving or functioning as
intended and as specified in requirement document. Regression testing is performed to
ensure that nothing is broken in system after fixing bugs and testing bugs. Overall Smoke
and Sanity testing is performed to ensure all links and features are working and
environment is stable.
Acceptance Testing :- Pre acceptance testing is performed mainly known as alpha and beta
testing to ensure the customers are able to perform intended functionality and feedback is
taken to further enhance quality of software.
White box and Black Box Testing :- Black box testing is performed to ensure output of
application is as correct for all various types of positive and negative inputs. There are
various types of Black box testing types like Equivalence Class partitioning, Boundary value
analysis, error guessing etc. White box deals with internal working of code to ensure there is
no redundant code written in software. This involves testing of line of code, program, flow,
logic, loop, structure, functions, class communication testing and other internal testing of
program

Performance Testing :-
This is one of a non-functional testing types which test performance of software under all
favorable and nonfavorable conditions. This includes all time related parameters like Load
time, access time, run time, execution time etc. This also includes success rate, failure
frequency, mean time between failures and overall reliability of software. The most popular
types of testing performed in Performance testing[14] are Stress testing and Load testing.
Stress testing is performed to find and understand the upper limits of capacity within the
system. Extreme load is given to the application to determine the robustness of the system.
Soak testing is also performed which is called as endurance testing. This testing is done to
determine if the system can sustain the continuous expected load. Potential leaks are
detected by monitoring the memory utilization. Soak testing ensures that the throughput
and response time after some long period of sustained activity are as good as or better than
at the beginning of the test. The main goal of performing soak test is to discover the system
behavior under its sustained use.
Spike testing is done by suddenly increasing the number of users or load generated by users
by a very large amount and observing the behavior of the system. Mainly tools are used to
test performance of software, as it is very difficult to test the load manually. There are lots
of freeware tools like Soap UI and Jmeter used to test performance of software. The most
popular tool used to test performance of software is Load runner tool and there are various
IBM tools also available to test the performance of software [15]. Most of the recent failure
occurred in software industry are due to lack of performance testing.

Security Testing :-
As per the current scenarios timing and buffer overflow attacks are most common.
The software is required to test for the security features like strong authentication,
cryptography and access control and some other security mechanisms. [Gary McGraw]
suggests that vulnerability is an error that an attacker can exploit [6]. The system is tested
for areas like authentication, authorization and different kinds of threats. Security testing of
software is important as to protect the information, services, skills and resources of
adversaries and the cost of potential assurance remedies [15]. Security testing basically
follows two types of approaches: a. Testing software regarding software’s functional
mechanisms b. Performing risk based approach according to attackers mindset. Penetration
Testing is a security testing in which evaluators attempt to circumvent the security features
of a system based on their understanding of the system design and implementation. Also a
other type which is Fuzz Testing was given by Barton Miller, university of Wisconsin in 1988.
It is software testing technique in which automatically invalid, random and unexpected data
to the software is given to find out the reaction of software. It is good for testing that
software where inputs have no control over the predefined data. This testing technique is
only used to find only the simple features of the software but not the complex software
code.

Software Testing Principles :-


Different software testing principles are as follows:
Test a program so as to make it fail: Testing is the process of executing a program with the
intent of finding bugs and errors. Testing becomes more effective when failures are
exposed.
Start testing early: This helps in finding and fixing a number of errors in the early stages of
development, thus reduces the rework of finding the errors in the later stages.
Testing is context dependent: Testing should be appropriate and different for different
context and also at different points of time.
Test Plan: Test Plan usually describes test strategy, test scope, test objectives, test
environment, deliverables of the test, risks and mitigation involved, schedule, levels of
testing to be applied, techniques, methods and tools to be used. Test plan should accurately
meet the needs of an organization and customer
Effective Test cases: Effective test cases must be designed so that they can be measured
and clear test results are produced.
Test valid as well as invalid Conditions: In addition to valid test cases, test cases for invalid
and unexpected inputs/conditions must also be checked. This form of testing is sometimes
specified as regression testing.
Test at different levels: Different testing must be done at different level of testing so
different people can perform testing differently using different testing techniques at all
level.
End of Testing: Testing has to be stopped somewhere. It is stopped when risks are under
some limit or if there is some limitation to it.

Software Testing Tools :-


There are a number of tools available in market for software testing. Some have been used
from a very long time and some new tools have also been developed with a lot of new
functionalities.

Ranorex :-
This is a simple, comprehensive and cost effective tool used for automatic testing. It is a
better alternative to other testing tools because it tests applications from a user’s
perspective, using standard language and common programming techniques like C# and
VB.net. It does not require understanding a scripting language, because it is coded in pure
.net code. Any one of the three languages, VB.net, C# and Iron Python can be used. It is used
by a lot of commercial software companies and enterprises around the globe.

Rational Functional Tester (RFT) :-


IBM developed this product in 1999. It is an objectoriented programming based automated
testing tool. It includes regression and functional testing tools which note down the results
of black box tests in a well scripted format. Once captured, these scripts can be executed
against future script builds of any application to verify that new functionalities have not
disabled any previous functionality.

Janova :-
This tool is much similar to others as it enables some users to automate software testing
solutions and with the help of this tool it is done in a cloud too. This tool does not require
any scripts to be written i.e. only simple Englishbased tools are used that simplify the task of
software implementation with efficient and easy to use tools. Other advantage of this tool is
that its cost is very less i.e. $10 per month. There is no such software to download and thus
no infrastructural investment is required. Since it is used in the cloud, it has a very quick and
easy setup that includes no install

Conclusion :-
Quality is the main focus of any software engineering project. Without measuring, we
cannot be sure of the level of quality in a software. So the methods of measuring the quality
are software testing techniques. This paper relates various types of testing technique that
we can apply in measuring various quality attributes. Software testing research is the driving
element of development and application.

You might also like