Uploaded by IAEME PUBLICATION

EVOLUTION OF TESTING WITH RESPECT TO THE PROGRAMMING PARADIGMS

advertisement

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

EVOLUTION OF TESTING WITH RESPECT TO

THE PROGRAMMING PARADIGMS

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

ABSTRACT

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 . http://www.iaeme.com/IJMET/issues.asp?JType=IJMET&VType=10&IType=4 http://www.iaeme.com/IJMET/index.asp 166 editor@iaeme.com

Pravesh Panwar, Deepanshu Agarwal, Purva Vyas, P.A. Jadhav, S.D. Joshi

1. INTRODUCTION

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. http://www.iaeme.com/IJMET/index.asp 167 editor@iaeme.com

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. EFFECTS ON DIFFERENT TESTING LEVELS WITH RESPECTIVE

OF PROGRAMMING PARADIGMS

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 follows-

2.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 system.

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 http://www.iaeme.com/IJMET/index.asp 168 editor@iaeme.com

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 http://www.iaeme.com/IJMET/index.asp 169 editor@iaeme.com

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 Paradigm-

In 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 Paradigm-

Validation 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.

3. CASE STUDY: COMPARISON BETWEEN PROCEDURAL, OBJECT

ORIENTED AND ASPECT ORIENTED PARADIGMS

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 http://www.iaeme.com/IJMET/index.asp 170 editor@iaeme.com

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.

4. CONCLUSIONS

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.

REFERENCES

[1] James.A.Whittaker, "What is software testing? And why is it so hard?", IEEE SOFTWARE

January/February 2000. DOI: 10.1109/52.819971

[2] 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.

[3] Roger S.Pressman, “Software Engineering – A Practitioner‟s Approach”, Tata Mc Graw Hill, 6th edition, 2005. DOI: 10.1109/ISED.2010.13.

[4] 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

[5] Andr´eRestivo, “The Case for Aspect Oriented Programming”. Doi:10.1145/2559933

[6] 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-22410-

2_15

[7] 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

[8] G. Kiczales et al., Aspect-Oriented Programming. ECOOP'97, 220-242. Springer Lecture Notes in

CS, 1997.

[9] AntoniaBertolino,”SoftwareTestingResearch:Achievements,Challenges,Dreams”,IEEE 0-7695-

2829-5/07

[10] Roger T.Alexander, JamesM. Bieman Colorado State University Department of Computer Science

Fort Collins, Colorado, ”Towards the Systematic Testing of Aspect-Oriented Programs”.

[11] 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. http://www.iaeme.com/IJMET/index.asp 171 editor@iaeme.com

Download