International Journal of Mechanical Engineering and Technology (IJMET)
Volume 10, Issue 04, April 2019, pp. 166–171, Article ID: IJMET_10_04_015
Available online at http://www.iaeme.com/ijmet/issues.asp?JType=IJMET&VType=10&IType=4
ISSN Print: 0976-6340 and ISSN Online: 0976-6359
© IAEME Publication
Scopus Indexed
Pravesh Panwar, Deepanshu Agarwal, Purva Vyas
Department of Information Technology, Faculty of Technology and Engineering
Bharati Vidyapeeth (Deemed to be University) College of Engineering,
Pune, Maharashtra, India
P.A. Jadhav
Department of Information Technology, Assistant Professor of Information Technology
Bharati Vidyapeeth (Deemed to be University) College of Engineering,
Pune, Maharashtra, India
S.D. Joshi
Department of Computer Science, Professor in Computer Science
Bharati Vidyapeeth (Deemed to be University) College of Engineering,
Pune, Maharashtra, India
With the advancement in computer technology all over the globe developing and
maintainability of a program is sine qua non. A program goes through various phases
before it actually used by public and this is known as Software Development Life
Cycle. The various phases are Requirement gathering and analysis, Designing,
Coding, Testing, Deployment and Maintenance. Industries uses these phases to
enhance the technology which is supported by many pillars like digital electronics,
computer networks, data structure and algorithms etc. and major role is played by
various programming languages.
As a ramification of it this paper presents how various software testing methods
like Unit testing, Integration testing, Validation testing and System Testing evolve with
the revalorisation of programming paradigms. This paper revolves around Procedural
Programming, Object Oriented Programming and Aspect Oriented Programming
Paradigm and how testing is performed on this paradigms. This paper concludes by
comparing various testing methods in various programming paradigms.
Key words: Unit Testing, Integration Testing, Validation Testing, System Testing, Procedural
Programming, Object Oriented Programming, Aspect oriented Programming.
Cite this Article: Pravesh Panwar, Deepanshu Agarwal, Purva Vyas, P.A. Jadhav, S.D. Joshi,
Evolution of Testing with Respect to the Programming Paradigms, International Journal of
Mechanical Engineering and Technology 10(4), 2019, pp. 166–171.
[email protected]
Pravesh Panwar, Deepanshu Agarwal, Purva Vyas, P.A. Jadhav, S.D. Joshi
Software Testing is the action of illuminating a software capabilities by placing them under
pre-defined pre-requisite constraints. Testing is one of the important and indispensable
activities of software development life cycle [1] [2].Software testing make sure the deployed
software is error resilient and satisfies the customer specifications. To fulfil the corresponding
requirements: validation and verification is performed on the software. Validation refers to
rectifying the project requirements with respect to the output generated by each phase and
verification refers to the evaluation done on output generated by each phase with respect to
the input criteria test cases fixed by the developer. The testing also gives assurances for the
product quality. [2]. Testing clinches to perform series of activities which range from building
the test cases to evaluating it.
Regardless of using any software development programming paradigm, testing is
performed at each phase of the software development life cycle which are namely as follows
unit testing, integration testing, validation testing and system testing [3] as represented in Fig.
1.Tetsing levels remain same irrespective of the programming paradigms used.
Figure 1 Levels of Software Testing
Unit Testing:- It is the most basic level at which any program or software is tested upon. The
motto is to authenticate that each component of the software performs as planned by the
developer. A component is the tiniest testable part of any software. It commonly has single or
a few inputs and usually a single or multiple output. Unit Testing test cases evolve or changes
respective of the programming paradigms the tester is working on. In structural/procedural
programming, an individual program, function, etc. are considered as a unit whereas the
smallest unit in object-oriented programming is an encapsulated class, which may belong to a
parent/base class, abstract class or derived/child class. In an aspect-oriented programming, the
smallest building block is an aspect itself.
Integration Testing- The coding team codes for various modules of a software and
integration testing is the one which comprises different modules of a software are integrated
to test a software logically as a single unit. The main focus of this testing is to check the flow
of data among various modules. It is also termed as 'I&T' (Integration and Testing), 'String
Testing' or 'Thread Testing' also. Structural programming involves Integration testing over the
control flow diagrams. Also, this testing pedals the communication through the data created
and used by other groups of programs modules, interacting with the group under test. In
Object-Oriented software, integrated testing is to verify the collaboration and responsive
nature among the classes and packages. Aspect-oriented software, aspect involved in a system
are integrated so as to test the collaboration, and communication among aspects and classes
where applied.
[email protected]
Evolution of Testing with Respect to the Programming Paradigms
Validation Testing- testing focuses on human interface attributes and resulting output from
the system. It establishes conformism with software requirements. Usually Black Box Testing
(Functionally Testing) is used where only the expected output is known which respective of
input given to the system .The test cases used in validation testing is common to procedural,
object-oriented and aspect-oriented software.
System testing-Testing which verifies that all components of software are integrated properly
so as to ensure the overall product met its functional and non-functional requirements and
achieved the expected performance. The test cases used in validation testing is also common
to procedural, object-oriented and aspect-oriented software.
2.1. Procedural Programming Paradigm
Procedural programming is step by step construction of the program in the software. Where
each instruction is executed sequentially in top-down manner. This type of programming
pattern focuses more on a process or a function; vital utilities for productivity, where both
function and data are stored separately in memory. In this method the coder codes to get the
efficacy of the software by writing the code step by step in a very concise manner. Traditional
computer language such as C, Pascal, FORTRAN and BASIC all are procedural oriented.
Testing in procedural programming paradigms are as follows2.1.1. Unit Testing on Procedural Programming Paradigm
In procedural programming the smallest unit can be an individual program, module, function
etc. The functionalities of the system are developed and if they are passed by test cases then
they are grouped into modules and each module is tested separately to authenticate if the
module satisfies the specific requirement for which it was developed. In unit testing module
interfaces are tested to know the status of flow of information in a program [2]. If any flaw is
observed appropriate steps are taken to eliminate the issue.
2.1.2. Integration Testing on Procedural Programming Paradigm
In this type of testing, various modules which are developed are integrated to check the data
flow and collaborative nature of each module with one another. The purpose of this testing is
to develop and cluster the set of functions into one module and test it separately to check the
whether the particular module satisfies the business requirements or not. During integration of
different modules there is append of some lines of code to integrate the particular units, care
must be taken during the integration as it may not cause any other problem in the respective
2.1.3. Validation and System Testing on Procedural Programming Paradigm
Validation and system testing is the procedure to test the systems that whether it covers all the
business requirements as specified by the user. It is the phase of triumph or failure and the
intricacy of the software is determined. It depicts the whole test on assembled software. The
main goal of the system testing is to certify the software impeccably respond to all inputs of
the user and exceptions are well managed in an accepted manner.
2.2. Object Oriented Programming Paradigms
Objects are the prime entities in a Object-oriented programming (OOP).This model fits data
into objects (data fields) and describes the state and behaviour of an object via class. It‟s a
data centric approach rather than algorithmic and it is a method based on hierarchy of classes
[email protected]
Pravesh Panwar, Deepanshu Agarwal, Purva Vyas, P.A. Jadhav, S.D. Joshi
and well-defined and cooperating objects[2].The properties of an object are shared with other
objects and collection of objects is termed as a class. Programming paradigm revolves around
five features which are Encapsulation, Abstraction, Inheritance, Polymorphism and message
passing. Encapsulation is referred as wrapping of characteristics and behaviour into single
unit class. Abstraction refers to the act of depicting only the essential features without
including background details such as business logic of a module. Inheritance is a process of
acquiring the behaviour properties from the parent but also have its own uniqueness which
add extension to the classes. Polymorphism enables a number of different operations to have
the same name e.g. when a hierarchical relationship exists between any two or more classes
then there may be a need for a program entity to refer to objects of more than one class [2].
As everything in object-oriented software are objects so procedural testing cannot be lodged
in object-oriented software.
2.2.1. Unit Testing on Object Oriented paradigm
Unit testing is concerned with testing of small chunks of a program in order to substantiate
and authenticate the purpose of it .With respect to Object Oriented programming, the unit is a
method or class. Since class is a collection of data and methods, testing can be on a single
class or group of classes as to verify the collaboration among the classes. Message passing
between the objects are also check to see how context critical resources are shared among
them. In this we can do intra-testing where the method or component of a class is checked or
inter-testing where class as a whole unit is tested.
These aspects of object-oriented features make the conventional testing unfit to test objectoriented software and thereby the need for object-oriented testing is justified [2].
2.2.2. Integration Testing on Object Oriented Paradigm
Integrating the classes to be tested and verifying the class interaction, polymorphic calls and
exception handling is termed as integration testing in object-oriented concept [7]. Since object
oriented paradigm have assortment of packages which can execute independently of it, hence
there is no heretical top-down or bottom-up approach testing towards it. Hence integrated
testing comprise of thread bases and Use Based testing towards it. Thread bases testing
integrate the classes step by step with respective of output generated by each class .Testing is
done repeatedly to make sure that integration is going in the right direction. Use-based testing
are done on independent class where there is minimum interaction is done with the server.
When these classes pass the test, than step by step dependent classes are integrated to
independent class which make use of output, and integration occurs. This recursively happens
until the whole system is constructed.
2.2.3. Validation and System Testing on Object Oriented Paradigm
There is no substantial difference between the procedural software testing and object-oriented
software testing with reverence to validation and system level testing because here aesthetic
of the software is tested. Testing is mainly concerned with all the functionalities provided at
the interface level and check is performed on the basis of the user business requirements.
2.3. Aspect Oriented Programming Paradigm
Aspect-oriented programming (AOP) is a methodology in which global functionalities are
provided to an aspect. This functionalities are provided to an aspect to determine how it is
compiled collaboratively with an executable program. AOP deals with all non-functional
requirements or cross-cutting concerns like security, profiling, Logging, Transaction
management etc. AOP is a programming technique where aspects (cross-cutting concerns) are
identified by the programmer and develop as a separate module and then it is weaved together
[email protected]
Evolution of Testing with Respect to the Programming Paradigms
in a way of making full utilization of the give module in the whole system. Weaving can be
done at many levels with the choice of when the developer wants but it is mainly seen in an
integrating part of the compiling process. Aspect and units are stitched together during
compile time and there by generating the binary out of it [5].
The testing levels of Aspect Oriented are as follows:2.3.1. Unit Testing on Aspect Oriented ParadigmIn Unit testing, units or elements of aspect programming are tested independently such that
error can be detected and analysed during the early development phase of a software so as to
minimize its side effects. As in Aspect Oriented programming, every cross cutting concern are
recognized and test cases are developed within the aspects of the program. Unit testing is
performed to determine array out of bound error, runt-time error and null pointer exceptions
etc. on it.
2.3.2. Integration Testing on Aspect Oriented Paradigm:Integration testing in all paradigms learn about the collection of different set of modules and
its co-operation with other modules. But in aspect oriented programming due to addition of
cross-cutting concerns and fined grained additions tends to transpires with respect to intramethod control and entities flow. As a result new dimensions are explored related to testing.
Due to independence of aspect with respect to class, difficulty arises about the linking and
relationship building towards the classes and aspect units of the paradigm. But the units in the
paradigm can be cross integrated and tested to check all the non-functional requirements of
the respected software.
2.3.3. Validation and System Testing on Aspect Oriented ParadigmValidation and System testing of aspect oriented programming can be automated with respect
to all other programming paradigms. This testing mainly focuses on user interface
functionality of the software and its corresponding actions render by the user. There is no
significant difference in procedure, object oriented and aspect oriented programming testing
with respect to the validation and system testing level.
Software Testing levels remain same irrespective of the programming paradigms used. But
contradictory to the statement, the testing used in every paradigms are different.
3.1. Procedural programming vs. Object Oriented Programming Paradigms
Surveying the literature survey we institute that testing levels used in procedural
programming is different form object oriented programming paradigm. In Unit testing, Unit in
procedural programming can be a module, program, function, procedure, etc., whereas in
object oriented programming the smallest unit is a class which is tested upon. As single
instruction in procedural programming is isolated and thus can be tested upon fulfilling the
conditions of unit testing but in object oriented programming as a whole class is isolated than
a single instruction. In Integration testing, top to down or bottom to up integration can be
followed in procedural programming to develop a critical software product but in object
oriented paradigm no ordering of modules can be followed as each packet is itself
independent of its characteristics and behaviour to one other and collaboration and
consolidation of packages which are integrated are tested. Procedural programming test
essentially on the algorithmic details of a module and the data flow through it, whereas object
[email protected]
Pravesh Panwar, Deepanshu Agarwal, Purva Vyas, P.A. Jadhav, S.D. Joshi
oriented paradigm checks the abstraction, encapsulation, inheritance, polymorphic behaviour
of the classes and the modules.
3.2. Object Oriented Programming vs. Aspect Oriented Programming paradigms
Object oriented programming language evolve around the objects and its software and its
collaboration is tested on the classes or modules they are employed upon. Testing of these
paradigms are diverse in nature. In Unit testing, Object is smallest unit which is tested upon in
object oriented programming paradigms but in aspect oriented programming paradigms aspect
is smallest unit which is tested upon. In Integration testing, modules are integrated to check
their collaboration but in aspect oriented programming paradigm aspects developed by the
software are regressively integrated with all the modules to check the compatibility and also
its collaboration with the software.
Software testing is an imperative phase of software development life cycle and it is doomed
for quality assurance and accuracy of the software. Testing can be accomplished at various
levels in its life cycle like unit, integration, validation and system. Aspect-oriented paradigm
is the contemporary improvement of software programming paradigms which acts as a next
increment to object oriented and procedural programming paradigms. This paper presents the
impression of the testing approaches executed on procedural, object-oriented, aspect-oriented
programming and confers how testing approach differs with recent advancement in
paradigms. This paper concludes that unrelated of different software development paradigm
and testing levels (unit, integration, validation and system) are the same but the testing
approach concerned to individual paradigm differs extensively.
James.A.Whittaker, "What is software testing? And why is it so hard?", IEEE SOFTWARE
January/February 2000. DOI: 10.1109/52.819971
Comparing the Testing Approaches of Traditional, Object-Oriented and Agent Oriented Software
System N.Sivakumar1 and K.Vivekanandan2, International Journal of Computer Science &
Engineering Technology (IJCSET), ISSN : 2229-3345 Vol. 3 No. 10 Oct 2012.
Roger S.Pressman, “Software Engineering – A Practitioner‟s Approach”, Tata Mc Graw Hill, 6th
edition, 2005. DOI: 10.1109/ISED.2010.13.
Zhe (Jessie) Li and Tom Maibaum,”An Approach to Integration Testing of Object-Oriented
Programs”, Department of Computing and Software McMaster University, Hamilton, ON, Canada,
IEEE 2007. DOI: 10.1109/QSIC.2007.4385506
Andr´eRestivo, “The Case for Aspect Oriented Programming”. Doi:10.1145/2559933
Dishek J. Mankad, „Comparative Study on Object Oriented Approach and Aspect Oriented
Approach for the Software Development‟, International Journal of Computer SCIenCe and
technology, IJCST Vol. 4, ISSue 2, AprIl - June 201. https://doi.org/10.1007/978-3-642-224102_15
Guoqing Xu, Zongyuan Yang, Haitao Huang, Qian Chen, Ling Chen and FengbinXu,‟JAOUT:
Automated Generation of Aspect-Oriented Unit Test‟. DOI: 10.1109/APSEC.2004.63
G. Kiczales et al., Aspect-Oriented Programming. ECOOP'97, 220-242. Springer Lecture Notes in
CS, 1997.
Roger T.Alexander, JamesM. Bieman Colorado State University Department of Computer Science
Fort Collins, Colorado, ”Towards the Systematic Testing of Aspect-Oriented Programs”.
Manish Jain, Dinesh Gopalani computer science department MNIT, Jaipur, India, ”Aspect Oriented
Programming and Types of Software Testing”, 2016 Second International Conference on
Computational Intelligence & Communication Technology 978-1-5090-0210-8/16.
[email protected]
Random flashcards

20 Cards


30 Cards


17 Cards

Create flashcards