ArticlePDF Available

Importance of Testing in SDLC

Authors:
  • Empirical Research Press Ltd.

Abstract

From previous year researches, it is concluded that testing is playing a vital role in the development of the software product. As, software testing is a single approach to assure the quality of the software so most of the development efforts are put on the software testing. But software testing is an expensive process and consumes a lot of time. So, testing should be start as early as possible in the development to control the money and time problems. Even, testing should be performed at every step in the software development life cycle (SDLC) which is a structured approach used in the development of the software product. Software testing is a tradeoff between budget, time and quality. Now a day, testing becomes a very important activity in terms of exposure, security, performance and usability. Hence, software testing faces a collection of challenges.
International Journal of Engineering and Applied Computer Science (IJEACS)
Volume: 01, Issue: 02, December 2016
ISBN: 978-0-9957075-1-1
www.ijeacs.com
54
Abstract From previous year researches, it is concluded that
testing is playing a vital role in the development of the software
product. As, software testing is a single approach to assure the
quality of the software so most of the development efforts are
put on the software testing. But software testing is an expensive
process and consumes a lot of time. So, testing should be start as
early as possible in the development to control the money and
time problems. Even, testing should be performed at every step
in the software development life cycle (SDLC) which is a
structured approach used in the development of the software
product. Software testing is a tradeoff between budget, time and
quality. Now a day, testing becomes a very important activity in
terms of exposure, security, performance and usability. Hence,
software testing faces a collection of challenges.
Keywords Software Engineering; SDLC; Software testing;
Verification and Validation.
I. INTRODUCTION
Everyone knows the importance of computer in his life. In
today’s world computer is using in many fields like industry,
education, transportation, medical, agriculture and research.
Means, it is becoming an important element in the industry
and advanced technology as well as developing countries. In
today’s life every field is dependent on computer for the
betterment of their work. Also, with the help of computer a lot
of time is saved. And time saving is indirectly a cost benefit
approach. So software engineering is a best approach to
develop a computer based system for every field in order to
save the time and reduces its cost. Software Engineering is
used to develop a system in a systematic way. For this purpose
software/system development life cycle (SDLC) is used, as it
is the process of developing the system with proper analysis,
design, implementation and maintenance to improve the
quality of the system. Even SDLC is a systematic approach
for the development of the efficient system but without testing
it is not possible. Because SDLC tells the process for the
development of the system to improve the quality but doesn’t
helps in finding the defects of the system. So, testing plays an
important role in software engineering.
II. RELATED WORK
Gelperin and Hetzel [4] presented the evolution of
software test engineering which traced by examining changes
in the testing process model and the level of professionalism
over the years. Two phase models such as the demonstration
and destruction models and two life cycle models such as the
evolution and prevention models are given to describe the
growth of software testing. Hamlet and taylor [10] presented
more extensive simulations, and reach at more precise results
about the relationship between partition probability, failure
rate, and effectiveness. Vishwas Massey and K.J.Satao [7] in
their paper have also compared various SDLC Models for
performance and have also proposed a new model for better
performance. But both the papers do not make a comparison
between the research methodology and SDLC process.
Richardson and Malley[1] proposed one of the earliest
approaches focusing on utilizing specifications in selecting
test cases. They proposed approaches to specification-based
testing by extending a wide range of implementation-based
testing techniques to be applicable to formal specification
languages and determine these approaches for the Anna and
Larch specification languages. Madeyski Lech et al.[9]
presented the concept of using a set of second order mutants
by applying them to large open source software with number
of different algorithms. They show that second order mutation
techniques can significantly improve the efficiency of
mutation testing at a cost in the testing strength. Ntafos [2]
presented the comparisons of random testing, partition testing
and proportional partition testing. The author guaranteeing
that partition testing has at least as high a probability of
detecting a failure comes at the expense of decreasing its
relative advantage over random testing. Juristo et al. [6]
analyzed the maturity level of the knowledge about testing
techniques. For this, they examined existing empirical studies
about testing techniques. According to knowledge, they
classified the testing techniques and choose parameters to
compare them. J. A. Whittaker[3] presented a four phase
approach to determine how bugs escape from testing. They
offer testers to a group related problems that they can solve
Importance of Testing in SDLC
Tanu Jindal
Department of Computer Science & Engineering
Noida Institute of Engineering & Technology (NIET)
Greater Noida, India.
Tanu Jindal
International Journal of Engineering and Applied Computer Science (IJEACS)
Volume: 01, Issue: 02, December 2016
ISBN: 978-0-9957075-1-1
www.ijeacs.com
55
during each phase. Claessen et al. [5] developed a lightweight
and easy to use tool named “quickCheck”, that is a
combination of two old techniques (specifications as oracle
and random testing) works extremely well for Haskell
program. They present a number of case studies, in that the
tool was successfully used and also point out some pitfalls to
avoid. Harrold et al. [8] presented a new approach to class
testing that supports data flow testing for data flow interaction
in a class. They also describe class testing and the application
of dataflow testing to class.
III. FUNCTIONS AND GOALS OF TESTING
The primary function of testing is to detect bugs. The
scope of testing includes execution of that code in various
environments and also to examine the aspects of the code -
does the software do what it is supposed to do and function
according to the specifications? Testing is an activity that is
performed for evaluating software quality and also for
improving it. The goal of testing is systematically and
stepwise detection of different classes of errors within a
minimum amount of time and also with a much less amount of
effort. The basic purpose of testing is verification and
validation in order to find various errors and problems and
the aim of finding those problems is to get them fixed. Testing
is more than just error detection. Testing is done under
controlled conditions.
Verification: To verify if system behaves as specified. It is
the checking and testing of items, which includes software,
for conformance and consistency of software by evaluating
the results against pre-defined requirements. In verification
we ask a question, are we building the product right?
Validation: In this we check the system correctness which
is the process of checking that what has been specified by user
and what the user actually wanted. In validation we ask a
question: Are we building the right system?
IV. SDLC (SOFTWARE DEVELOPMENT LIFE CYCLE)
SDLC serves as a guide to the project and provides a
flexible and consistent medium to accommodate changes and
perform the project to meet the client’s objectives. There are
various stages used in the life cycle of software development.
Software development life cycle is basically a systematic way
of developing software. It includes various phases starting
from the functional requirement of software (means what
software is supposed to do). After that designing takes place
then development and then testing. After testing is finished,
the source code is generally released for Unit Acceptance
Testing (UAT) in client testing environment. After approval
from client, the source code is released into production
environment [11]. There is various software development
approaches defined and designed which are used during
development process of software, these approaches are also
referred as "Software Development Process Models". Each
process model follows a particular life cycle in order to ensure
success in process of software development. SDLC phases
define key schedule and delivery points which ensure timely
and correct delivery to the client within budget and other
constraints and project requirements. SDLC co-operates
project control and management activities as they must be
introduced within each phase of SDLC.
There is various software development approaches
defined and designed which are used during development
process of software, these approaches are also referred as
“Software Development Process Models”.
V. PHASES IN SOFTWARE DEVELOPMENT LIFECYCLE
Testing phase has much importance in SDLC due to a
major role in debugging and error correction. The phases of
SDLC is being followed in both testing and development
cycle of any software application. Here are the phases of
SDLC that is being followed:
a) Requirements Gathering and Analysis: Under this phase,
proper requirements of project are gathered. All close
functions are brought in to focus. All kinds of
requirements and analysis of user requirement are done in
this phase.
b) System Design: This is the next phase in SDLC where a
rough system design is made. With all data and
information being gathered, a system design is made.
c) Development: This is the next phase after system design
when development of project is made. According to
design, proper coding is done to gain that design.
Programming language might be selected according to
the project.
d) System Testing: Just after development phase, testing is
carried out to know the outcome of application. Testing is
made to know the actual result and the expected result.
e) Operations and Maintenance: This is the final stage of
SDLC, where the software that is being developed is
being distributed to end users who are responsible for
maintaining and using it for proper operations. The
software that is being developed must be open to any
changes being made in coding.
VI. ROLE OF TESTING IN SDLC
Testing is required to remove the discrepancy in the
software product development process. In order to implement
any software product, it has passed through a set of various
phases. With the help of testing we can catch small problems
before they become big problems later on. Testing activities
also provides the chance to review requirements for important
quality attributes, to ask questions and to resolve issues
earlier. There are many activities that are performed during
the testing. These are:
Test Analysis
Test Design
Test Execution
These activities are required to reduce the rework which
results in reducing the cost and time. Software testing is an
Tanu Jindal
International Journal of Engineering and Applied Computer Science (IJEACS)
Volume: 01, Issue: 02, December 2016
ISBN: 978-0-9957075-1-1
www.ijeacs.com
56
ongoing process which we can’t stop in between. Testing is
required in SDLC due to the following reasons:
To identify the errors
To remove ambiguity
To improve the reputation of the company
To improve quality of the product
To remove Hazards
For verification and validation
To improve reliability
To improve cost
To increase the usability
VII. CONCLUSION
From the above discussion it is clear that without testing it
is not possible to implement an effective product. If the
product is not effective then it will decrease the quality of the
product. So, Testing is essential to improve the quality of the
system as well as to the success of the overall effort. Testing is
performed by developer end and customer end but it can
ensure a performance of the product by predicting its
behavior. In this paper, it is concluded that testing should be
used in all the phases of SDLC and not in one or two phases.
Life cycle of Software development is that type of structure
which is imposed on the development process of the software
product. As there are different activities involved in SDLC so,
testing plays a different role in different-different phase. For
timely readiness of the system testing is very important as it
provides the visibility of the quality of the product at each
step.
REFERENCES
[1] D. Richardson, O. O’Mal ley a nd C. Tittle, Approaches to
specification-based testing”, ACM SIGSOFT Software Engineering
Notes, Volume 14 , Issue 9, 1989, pp. 86 96.
[2] Ntafos Simeon C. "On comparisons of random, partition, and
proportional partition testing." Software Engineering, IEEE
Transactions on 27.10 (2001): 949-960.
[3] J. A. Whittaker, “What is Software Testing? And Why Is It So Hard?”
IEEE Software, January 2000, pp. 70-79.
[4] D. G elperin and B. Hetzel, “The Growth of Software Testing”,
Communications of the ACM, Volume 31 Issue 6, June 1988, pp. 687-
695.
[5] Claessen Koen, and John Hughes. "QuickCheck: a lightweight tool for
random testing of Haskell programs."
[6] Juristo Natalia, Ana M. Moreno, and Sira Vegas. "Reviewing 25 years
of testing technique experiments." Empirical Software Engineering
9.1-2 (2004): 7-44.
[7] Glenford J. Myers, “The Art of Software Testing, Second Edition”
Published by John Wiley & Sons, Inc., Hoboken, New Jersey.
[8] Harrold Mary Jean, and Gregg Rothermel. "Performing data flow
testing on classes." ACM SIGSOFT Software Engineering Notes. Vol.
19. No. 5. ACM, 1994.
[9] Madeyski Lech et al. "Overcoming the Equivalent Mutant Problem: A
Systematic Literature Review and a Comparative Experiment of
Second Order Mutation." (2013): 1-1.[LR4]
[10] Hamlet Dick, and Ross Taylor. "Partition testing does not inspire
confidence (program testing)." IEEE Transactions on Software
Engineering 16.12 (1990): 1402-1411.
[11] Accessibility Summit. (2006). Public Sector NeedsBetter Guidance On
Web Accessibility, E-Government Bulletin (Issue 226, 13 November
2006)http://www.ukoln.ac.uk/webfocus/events/meetings/accessibility
-summit-2006-11/egovernment- 2006-11-13.php (Accessed August
30th2007)
AUTHOR PROFILE
Tanu Jindal is working as Assistant Professor in
Computer Science & Engineering Department of
Noida Institute of Engineering and Technology,
Greater Noida. She received Master’s degree in
Software Engineering from Thapar University,
Patiala. She is pursuing Ph.D. in Software
Engineering. Her main research interests are Software
Engineering and Grid Computing. She has guided
many M.Tech. students for their thesis. She has guided many B.Tech
students in their Projects. She has more than 10 publications in National and
International Journals and Conferences.
© 2016 by the author(s); licensee Empirical Research Press Ltd. United Kingdom. This is an open access article
distributed under the terms and conditions of the Creative Commons by Attribution (CC-BY) license.
(http://creativecommons.org/licenses/by/4.0/).
ResearchGate has not been able to resolve any citations for this publication.
Article
Full-text available
Context. The equivalent mutant problem (EMP) is one of the crucial problems in mutation testing widely studied over decades. Objectives. The objectives are: to present a systematic literature review (SLR) in the field of EMP; to identify, classify and improve the existing, or implement new, methods which try to overcome EMP and evaluate them. Method. We performed SLR based on the search of digital libraries. We implemented four second order mutation (SOM) strategies, in addition to first order mutation (FOM), and compared them from different perspectives. Results. Our SLR identified 17 relevant techniques (in 22 articles) and three categories of techniques: detecting (DEM); suggesting (SEM); and avoiding equivalent mutant generation (AEMG). The experiment indicated that SOM in general and JudyDiffOp strategy in particular provide the best results in the following areas: total number of mutants generated; the association between the type of mutation strategy and whether the generated mutants were equivalent or not; the number of not killed mutants; mutation testing time; time needed for manual classification. Conclusions. The results in the DEM category are still far from perfect. Thus, the SEM and AEMG categories have been developed. The JudyDiffOp algorithm achieved good results in many areas.
Article
Full-text available
We can trace the evolution of software test engineering by examining changes in the testing process model and the level of professionalism over the years. The current definition of a good software testing practice involves some preventive methodology.
Conference Paper
Full-text available
Current software testing practices focus, almost exclusively, on the implementation, despite widely acknowledged benefits of testing based on software specifications. We propose approaches to specification-based testing by extending a wide variety of implementation-based testing techniques to be applicable to formal specification languages. We demonstrate these approaches for the Anna and Larch specification languages.
Article
Full-text available
Mature knowledge allows engineering disciplines the achievement of predictable results. Unfortunately, the type of knowledge used in software engineering can be considered to be of a relatively low maturity, and developers are guided by intuition, fashion or market-speak rather than by facts or undisputed statements proper to an engineering discipline. Testing techniques determine different criteria for selecting the test cases that will be used as input to the system under examination, which means that an effective and efficient selection of test cases conditions the success of the tests. The knowledge for selecting testing techniques should come from studies that empirically justify the benefits and application conditions of the different techniques. This paper analyzes the maturity level of the knowledge about testing techniques by examining existing empirical studies about these techniques. We have analyzed their results, and obtained a testing technique knowledge classification based on their factuality and objectivity, according to four parameters.
Article
Full-text available
Current software testing practices focus, almost exclusively, on the implementation, despite widely acknowledged benefits of testing based on software specifications. We propose approaches to specification-based testing by extending a wide variety of implementation-based testing techniques to be applicable to formal specification languages. We demonstrate these approaches for the Anna and Larch specification languages. 1 Introduction Specifications provide valuable information for testing. Most software testing techniques, however, rely solely on the implementation for information upon which to select test data. These implementation-based testing techniques focus on the actual behavior of the implementation but ignore intended behavior, except inasmuch as test output is manually compared against it. On the other hand, considering information from formal specifications enables testing intended behavior as well as actual functionality. Specification-based testing techniques may direct ...
Article
Full-text available
QuickCheck is a tool which aids the Haskell programmer in formulating and testing properties of programs. Properties are described as Haskell functions, and can be automatically tested on random input, but it is also possible to define custom test data generators. We present a number of case studies, in which the tool was successfully used, and also point out some pitfalls to avoid. Random testing is especially suitable for functional programs because properties can be stated at a fine grain. When a function is built from separately tested components, then random testing suffices to obtain good coverage of the definition under test.
Book
This long-awaited revision of a bestseller provides a practical discussion of the nature and aims of software testing. You'll find the latest methodologies for the design of effective test cases, including information on psychological and economic principles, managerial aspects, test tools, high-order testing, code inspections, and debugging. Accessible, comprehensive, and always practical, this edition provides the key information you need to test successfully, whether a novice or a working programmer. Buy your copy today and end up with fewer bugs tomorrow. The Art of Software Testing, Second Edition is a revision of the bestselling guide from a leading computer expert and author. It provides a practical discussion of the purpose and nature of software testing, offering the latest methodologies for the design of effective test cases.
Article
The author sheds some light on why testing today's software products is so challenging, and he identifies several solid approaches that all testers should be able to thoughtfully apply. The effective tester has a rich toolkit of fundamental testing techniques, understands how the product will be used in its operating environment, and has a nose for where subtle bugs might lurk in the product and a bag of tricks for flushing them out. The methods described can help testers provide a sensible answer to the question of what they really mean when they say they have finished testing a software system
Article
Early studies of random versus partition testing used the probability of detecting at least one failure as a measure of test effectiveness and indicated that partition testing is not significantly more effective than random testing. More recent studies have focused on proportional partition testing because a proportional allocation of the test cases (according to the probabilities of the subdomains) can guarantee that partition testing will perform at least as well as random testing. We show that this goal for partition testing is not a worthwhile one. Guaranteeing that partition testing has at least as high a probability of detecting a failure comes at the expense of decreasing its relative advantage over random testing. We then discuss other problems with previous studies and show that failure to include important factors (cost, relative effectiveness) can lead to misleading results
Article
Partition testing, in which a program's input domain is divided according to some rule and tests conducted within the subdomains, enjoys a good reputation. However, comparison between testing that observes subdomain boundaries and random sampling that ignores the partition gives the counterintuitive result that partitioning is of little value. In this paper we improve the negative results published about partition testing, and try to reconcile them with its intuitive value. Theoretical models allow us to study partition testing in the abstract, and to describe the circumstances under which it should perform well at failure detection. Partition testing is shown to be more valuable when the partitions are narrowly based on expected failures and there is a good chance that failures occur. For gaining confidence from successful tests, partition testing as usually practiced has little value.