Test Oracles and Metamorphic Testing - A Case Study



Similar documents
ECE 0142 Computer Organization. Lecture 3 Floating Point Representations

Converting Models from Floating Point to Fixed Point for Production Code Generation

Numerical Matrix Analysis

Minimizing code defects to improve software quality and lower development costs.

Verification and Validation of Software Components and Component Based Software Systems

IMPROVING BUSINESS PROCESS MODELING USING RECOMMENDATION METHOD

Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors

UML-based Test Generation and Execution

Metamorphic Testing and DSL for Test Cases & Checker Generators

Index Terms Domain name, Firewall, Packet, Phishing, URL.

International Journal of Computer Engineering and Applications, Volume V, Issue III, March 14

Introduction and Overview

Fault Analysis in Software with the Data Interaction of Classes

Tai Kam Fong, Jackie. Master of Science in E-Commerce Technology

Best Practises for LabVIEW FPGA Design Flow. uk.ni.com ireland.ni.com

Regression Testing Based on Comparing Fault Detection by multi criteria before prioritization and after prioritization

Binary Number System. 16. Binary Numbers. Base 10 digits: Base 2 digits: 0 1

WESTMORELAND COUNTY PUBLIC SCHOOLS Integrated Instructional Pacing Guide and Checklist Computer Math

A FRAMEWORK FOR MANAGING RUNTIME ENVIRONMENT OF JAVA APPLICATIONS

Architecture Centric Development in Software Product Lines

REAL-TIME STREAMING ANALYTICS DATA IN, ACTION OUT

Context-aware Library Management System using Augmented Reality

Fault Localization in a Software Project using Back- Tracking Principles of Matrix Dependency

TECHNICAL UNIVERSITY OF CRETE DATA STRUCTURES FILE STRUCTURES

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Divide: Paper & Pencil. Computer Architecture ALU Design : Division and Floating Point. Divide algorithm. DIVIDE HARDWARE Version 1

Introduction to Formal Methods. Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm

Software testing. Objectives

Domains and Competencies

Dynamic Resource management with VM layer and Resource prediction algorithms in Cloud Architecture

Model Checking based Software Verification

(Refer Slide Time: 01:52)

How To Develop Software

Computer Science 217

Habanero Extreme Scale Software Research Project

THE NAS KERNEL BENCHMARK PROGRAM

An Automated Development Process for Interlocking Software that. Cuts Costs and Provides Improved Methods for Checking Quality.

Candle Plant process automation based on ABB 800xA Distributed Control Systems

Review of Mobile Applications Testing with Automated Techniques

Bachelor Degree in Informatics Engineering Master courses

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

AS-D1 SIMULATION: A KEY TO CALL CENTER MANAGEMENT. Rupesh Chokshi Project Manager

Web Application Regression Testing: A Session Based Test Case Prioritization Approach

Lund, November 16, Tihana Galinac Grbac University of Rijeka

System-on-Chip Design Verification: Challenges and State-of-the-art

Latest Research and Development on Software Testing Techniques and Tools

RN-coding of Numbers: New Insights and Some Applications

The Challenge of Productivity Measurement

Digital Circuit Design

Certification Authorities Software Team (CAST) Position Paper CAST-13

Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland

Instruction Set Architecture (ISA)

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair

Demonstration of an Automated Integrated Test Environment for Web-based Applications

YOKING OBJECT ORIENTED METRICS THROUGH MUTATION TESTING FOR MINIMIZING TIME PERIOD RAMIFICATION

Certification of a Scade 6 compiler

What is Modeling and Simulation and Software Engineering?

Precision & Performance: Floating Point and IEEE 754 Compliance for NVIDIA GPUs

Large-Scale Data Sets Clustering Based on MapReduce and Hadoop

SIMATIC IT Production Suite Answers for industry.

A Platform Independent Testing Tool for Automated Testing of Web Applications

FPGA Prototyping Primer

Best Practices for Verification, Validation, and Test in Model- Based Design

Informatica e Sistemi in Tempo Reale

FAULT TOLERANCE FOR MULTIPROCESSOR SYSTEMS VIA TIME REDUNDANT TASK SCHEDULING

Technical Training Module ( 30 Days)

ISSN: ISO 9001:2008 Certified International Journal of Engineering Science and Innovative Technology (IJESIT) Volume 2, Issue 3, May 2013

Levels of Software Testing. Functional Testing

A Mind Map Based Framework for Automated Software Log File Analysis

How To Calculate Kinematics Of A Parallel Robot

CA Service Desk Manager

Cloud Computing for Agent-based Traffic Management Systems

EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

MEng, BSc Applied Computer Science

A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation

Comparative Study of Automated testing techniques for Mobile Apps

Stream Processing on GPUs Using Distributed Multimedia Middleware

Software Testing Strategies and Techniques

Discuss the size of the instance for the minimum spanning tree problem.

Practical Programming, 2nd Edition

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

A new binary floating-point division algorithm and its software implementation on the ST231 processor

Floating Point Fused Add-Subtract and Fused Dot-Product Units

Decision Mathematics D1 Advanced/Advanced Subsidiary. Tuesday 5 June 2007 Afternoon Time: 1 hour 30 minutes

DIABLO VALLEY COLLEGE CATALOG

Transcription:

METAMORPHIC TESTING: A SIMPLIFIED SOLUTION TO TEST NON-TESTABLE PROGRAMS AND RELIEVES THE NEED OF COMPLEX TEST ORACLES IN TESTING 1 CHITTINENI ARUNA, 2 R.SIVA RAM PRASAD Assoicate professor, KKR & KSR Institute of Technology and Sciences, JNTUK, Guntur 2 Haed, Dept of IBS, ANU, Guntur E-mail: 1 chittineni.aruna@gmail.com Abstract Test oracle is an important factor and plays a vital role in testing to determine the test case result correctness. Most of the automatic testing techniques were adopted test oracle design tools to generate state-of-the-art test oracles to validate test results. Designing the test oracles become more complex and even not possible for most of the application areas like multi precision arithmetic, graph theory, machine learning, Bio-Informatics, Network simulations, Computer graphics and compilers etc. To avoid this test oracle problem, Metamorphic Testing (MT) has been arrived in the area of testing. MT uses the Metamorphic Relations (MR) to ensure the correctness of test outputs and to test the application by generating follow-up test cases for efficient detection of flaws. In this paper, we apply the metamorphic testing on various non-testable programs to relieve the need of complex or unavailable test oracle in testing. To support our research statement, we have taken up the challenge to implement metamorphic relations for the non-testable areas are Multi Precision Arithmetic (MPA) and Graph Theory Algorithms (GTA). Case studies on non-testable programs prove the scalability, accuracy and adoptability of our approach in detailed manner. Results of case studies will be compared to ensure the effectiveness of adopting MT for testing the non-testable programs. Index Terms Metamorphic Testing, Metamorphic Relations, Non-Testable programs, Test Oracles, Test Cases I. INTRODUCTION Computer applications are becoming a part of human s life as we are depending on them for almost every human activity. Software Testing is the primary activity for validating the quality of software and to find the bugs from the software application to make it as reliable. Testing is a process of code and result verification, to ensure the reliability of a product in terms of desired policy and expected behavior. To test any application or program we need to design the test cases, which are the collection of input values and test oracles. In traditional testing methodology test tools generate the test cases along with test oracles to compare the perceived output with expected results. Designing the test oracles become expensive and inaccurate in case of implementing for non-testable programs [1]. There are various application domains are having this test oracle problem [2] mainly Multi Precision Arithmetic, Graph Theory, Machine learning, bio-informatics, Compiler testing and some other. Metamorphic Testing [MT] become an alternate to alleviate the test oracle problem for non-testable programs. This approach will use the general relations by transforming them to metamorphic relations to alleviate the test oracle requirement in testing. Metamorphic testing makes the testing independent from test oracle by utilizing only the metamorphic relations [12]. We can apply the MT for these non-testable programs also by finding the basic metamorphic relations of program attributes. MT reuses the existing test cases to generate new ones by transforming them with the help of metamorphic attributes. This is an integrated mechanism to generate the follow-up test cases based on the target function parameters and validates the results of the function without using the oracles by the help of metamorphic relations. Program checkers and selftesting also use the basic relations of program to test the program without having the oracle intervention. MT uses the data diversity technique (Kuo et al., 2011) to generate the follow-up test cases based on the existed successful test cases, which are low cost, scalable, efficient and leads to N-Version Programming [4]. The generic architecture of MT is shown in the figure 1. Figure 1. Generic Architecture diagram of MT In this paper, we apply the metamorphic testing on various non-testable programs to relieve the need of complex or unavailable test oracle in testing. To support our research statement, we have taken up the challenge to implement metamorphic relations for the 9

non-testable areas are Multi Precision Arithmetic (MPA) and Graph Theory Algorithms (GTA). Multi Precision Arithmetic (MPA) plays a vital role in majority of scientific applications, where the accuracy levels are more considerable and even a small mistake may misguide the downstream experimental results. Normal testing strategies rely on test oracles to predict the expected output to compare with target output. Testing of MPA programs is a crucial work with normal testing strategies, due to the complexity of generating oracles to verify the correctness of test outputs. This paper uses the MT to test the MPA programs without designing any test oracle. Case studies will explain, adopting the metamorphic relations to MPA programs to test and generating follow-up test cases also. Graph theory [6] is an integral part of mathematics used to resolve the essential real time problems in application development. Many popular graph theory algorithms were become the prominent solutions for various application design and development issues. Designing the test cases and test oracles for graph theory algorithms is an expensive task due to the complexity of their design and development. Many researches were introduced various approaches for testing graph theory algorithms are having the common limitation as test-oracle problem. We are using metamorphic relations to test some crucial graph theory algorithms in this paper. Our research work also dedicated to adopt the metamorphic testing for graph theory algorithms to test them in a feasible manner with the help of metamorphic relations. II. LITERATURE REVIEW A. Metamorphic Testing In the year of 1998, prof. T.Y. Chen and his coauthors were introduced metamorphic testing in their publishing s [3], as a better alternative to overcome the test oracle problem. Metamorphic Testing is an attribute based testing methodology, which identifies the general attribute (input) relations to verify the test results to alleviate the need of test oracle design. Instead of test oracles MT uses the Metamorphic Relations [1, 2] to identify the existence of unrevealed bug s information and to generate the follow-up test cases by using the successive test cases of MT. The abstracted design of metamorphic relations for a program P is described as below. For example, if a program P is the implementation of specification T and having the function f for testing with possible input values set I = {i1, i2, i3 in, where n>1 and I D(input domain D). After running the program code, the output is f(i1), f(i2), f(i3),, f(in) as result set K = { f(i1), f(i2), f(i3),, f(in)}, which satisfies the relation set R ={r1, r2, r3,, rn} with D as: Each value of D => R => Each counterpart of KMeans each value of input domain D is having a relation R with the respective counterpart K (result 10 set). We can describe this in detail as: i1, i2, i3 in)<=> r <=> (f(i1), f(i2), f(i3),, f(in)) r (i1, i2, i3 in) <=> r(f(i1), f(i2), f(i3),, f(in)) Then r is one bi-directional relation from R, and applicable to the given inputs and outputs in bidirectional way. This relation should be verified at each input and respective output combination level as: {(i1<=> r <=> f(i1)), (i2<=> r <=> f(i2)), (i3<=> r <=> f(i3)), (in<=> r <=> f(in)) } In the above test set, i1 is input value with relation r to output f(i1) is considered as a metamorphic relation MR1 (i1, f(i1)). Like this we can create the metamorphic relations set for the given I/O combinations as: MRN1 = {MR1 (i1, f(i1)), MR1 (i2, f(i2)), MR1 (i3, f(i3)), MR1 (in, f(in)) } Sometimes even more relations (MRN) need to be verifying for the same attribute set as: MRN2 = {MR2 (i1, f(i1)), MR2 (i2, f(i2)), MR2 (i3, f(i3)), MR2 (in, f(in)) } MRN3 = {MR3 (i1, f(i1)), MR3 (i2, f(i2)), MR3 (i3, f(i3)), MR3 (in, f(in)) } and so on. This can be written as metamorphic relations set MR: MR = {MRN1, MRN2, MRN3, MRNK} Once the MR is verified against all possible statements of program with all possible test relations, MT gives the test result report with successive test cases and failed test case. Successive test cases are the ones which are satisfied the metamorphic relation with the given input values, if the relation doesn t satisfied by the given input data, alerts that there is a presence of flaw. We describe the test report results as: MR = {MRN1(t), MRN2(f), MRN3(t), MRNK(t)} In above case, MRN1(t), MRN3(t) are successive test cases and MRN2(t) is a failure test case. By using successive test cases MT creates the follow-up test case for efficient testing. B. Testing MPA Applications Nowadays most of the applications are using the floating-point computations are done in double precision with a mantissa of 53 bits. However some prominent applications (i.e. weather forecasting, Biological DNA applications, Aircraft controlling applications etc.) are using double extended (64 bits), quadruple precision[5] (113 bits) or even more. MPA is an arithmetic carried out in software as IEEE 754 standard to achieve higher precision and accuracy than hardware based environment. The ANSI/IEEE 754 become a new standard for floating point arithmetic to improve the accuracy and having the same behavior with all IEEE 754 compliant systems. Researchers are following the IEEE 754 standard floating point arithmetic to design the efficient algorithms to prove correctness of their work for complex systems mentioned above. Many software applications GMP [Granlund 2004], CLN [Haible and Kreckel 2005], MPFR library [Fousse 2009] designed

to obtain the accurate results from multi precision arithmetic under IEEE 754 standard. Designing the test oracles for these programs to verify the test results is challenging because of its prediction complexity is called oracle problem [3]. C. Testing Graph Theory Applications Graph theory and algorithms are the common requirements to be implemented in almost every domain of software application design and development. Graph theory algorithms were documented in graph catalogues and implemented by developers by following the catalogues. Testing these developer implementations is mandatory to ensure that the implementation is satisfying the catalogue policy and results are accurate or not. This process will improve the application quality and reliability in a streamlined manner. We need to generate and test maximum possible number of test cases with all variations of input values to ensure the defect freeness of an application. Designing the test cases and test oracles for graph theory algorithms is an expensive task due to the complexity of their design and development. Many researches were introduced various approaches for testing graph theory algorithms are having the common limitation as testoracle problem. From manual testing to automatic testing all mechanism are having the same problem while testing graph theory algorithms. III. ADOPTING MT FOR MPA AND GRAPH THEORY In this section, we discuss about applying the MT for Multi Precision Arithmetic (MPA) and Graph Theory Algorithms (GTA) as two different case studies. The major aim of each case study is problem statement, MT adoption, Test Results verification and conclusion. Here the both case studies will follow the same approach to prove the efficiency of metamorphic testing on non-testable programs. IV. MULTI PRECISION ARITHMETIC WITH MT CASE STUDY This case study describes the adoption of metamorphic testing in the area of multi precision arithmetic, to perform the testing and identifying hidden bug information under non testable circumstances. As per the above mentioned case study model, we implemented this as follows: A. Problem Statement of MPA Multi Precision Arithmetic (MPA) plays a vital role in majority of scientific applications, where the accuracy levels are more considerable and even a small mistake may misguide the downstream experimental results. In order to assure the accuracy of these applications, they should be tested in robust manner with an efficient software testing environment. Defining the test oracles for this is always difficult due to their evaluation complexity and time consuming. Here we would like to discuss about the difficulties while comparing the results of MPA with an example of C language: #include<math.h> #include<stdio.h> double complexevaluation (double x, double y, double z){ double result = 173746*x + 94228*y - 78487*z; printf ("Result = %.16e\n", result ); return result; } When calling the above method on 64-bit core2 with Fedora10 system with the actual values as double complexevaluation(sin(1e22), log(17.1), exp(0.46) ) the obtained value of result = 2.9103830456733704e-11 which is completely wrong as per IEEE 754 [16], since the expected value is 1.341818958 10-12. The reason is overflow of double variable in the program, to avoid this problem we have to use the long double instead of double. Identifying these types of errors in program is very difficult although we need the complex test oracle in hand. B. MT adoption for testing MPA In our research we proposed MT to assure the accuracy of Multi Precision Arithmetic applications, which are having high effect on mission critical software [7]. MT validates the test outputs by converting the general relations of program attributes to the metamorphic relations of MT. This work concentrates on multiplication and division problems of two types of numbers systems both integer and rational (floating point) from multi precision arithmetic (MPA). Evaluating complex arithmetic operations (division, multiplication and exponential ) of big numbers with IEEE 754 compliant programing language[8] applications still having the problems due variable overflow, memory over flow, truncation of scale, inaccurate rounding and so on. Henceforth we have to design the efficient testing strategy to reveal the bugs from these programs. Metamorphic Testing technique is applicable in this case to test the programs by converting the general relations of operations as metamorphic relations as show below for multiplication and division operations of MPA: Definition1: If i, j and k are three numbers {i, j, k R } and multiplication result of (i,j) is k than i, j, k has to satisfy all these proven relations[17] to assure the accuracy of generated test output instead of relations. (i) i * j = k (i*j) * x = k * x {(i, j, k) N and (i, j, k) Q } (ii) i * j = k k / j = i && k / i = j { ( i, j, k ) N and ( i, j, k ) Q } Definition2: If i, j and k are three numbers {i, j, k R } and multiplication result of (i,j) is k than i, j, k has to satisfy all these proven relations[17] to assure the accuracy of generated test output instead of 11

relations. (i) i / j = k ( i / j) * x = k * x { ( i, j, k ) N and ( i, j, k ) Q } (ii) i / j = k k * j = i && i / k = j {( i, j, k ) N and ( i, j, k ) Q } C. Experiments on MPA In our case study we had concentrated on various complex multi precision arithmetic operations like multiplication, division, modules, round, ceil etc. For any given program p, having the complex operation O and expecting the input values i1, i2, i3 in where ik Q and the result is either R or C. Our Relational approach collects all successful test cases as t and uses them to generate the next level test cases t and compare the results like p(t) p(t ) to reveal the unidentified bugs in the system. For example as mentioned in related work program example, we evaluated sin (1e22), log (17.1), exp (0.46) with the predefined set of MR s [9] and we applied our proposed relations of definition 1 & 2 for the complex multiplication with double values 173746*x, 94228*y and 78487*z. Each of this doubles multiplication result for various test cases are compared against all the proposed metamorphic relations and any mismatch leads to confirm the existence of a flaw. In our experiments we mainly concentrated on identifying the hidden bugs due to test oracle complexity. For this operation we selected 4 real-time mathematical C projects to test, where each of them having approximately 15 20 programs with MPA. Our simulations are evaluated the results of every math program based on their type of operation and operand metamorphic relations. Similarly we compared the results of our proposed technique MT using Metamorphic Relations with System-level properties of other testing tools on the four mathematical applications and showed in Table.1. Graph 1.Comparison results of MR s with System level properties and total mutants V. GRAPH THEORY ALGORITHMS (GTA) WITH MT CASE STUDY This case study describes the adoption of metamorphic testing in the area of Graph Theory Algorithms, to perform the testing and identifying hidden bug information under non testable circumstances. As per the above mentioned case study model, we implemented this as follows: A. Problem Statement of GTA Graph theory and algorithms become an essential knowledge for computer science and relevant applications. Minimal spanning tree implementation is another important and widely used algorithm from graph theory in computer application. This is widely used in transistors design, network routing, DNA Analysis and some other. Kruskal s Algorithm is one prominent implementation for finding minimal spanning tree from the given graph structure as shown in figure.2.a and 2.b. Figure2.a Undirected non-negative weighted graph Table.1. Comparison results of MR s with System level properties From the above table (Table.1) results we can assure that MR found almost all flaws from the given applications and having the high detection ration when compared with other system level approaches SVM, Arhant-II, GBT and PAYL as shown in graph 1. Figure2.bminimal spanning treefor weighted graph The below diagram figure 2.a shows that an undirected non-negative weighted graph with vertices set V = {a, b, c, d, e, f, g, h, i} and edge set E as t ={(a,b),(b,c),(b,h),(a,h),(b,c),(c,i),(i,h), (h,g),(i,g),(c,f),(g,f),(c,d),(d,f),(d,e),(e,f)}. Figure 2.b displays the obtained Kruskal s minimal spanning tree [10 ] with blue colored edges which cover all 12

vertices of given graph with minimal weight. Testing this minimal spanning tree result accuracy is very complex in traditional testing methodology with test oracles due to the expensiveness of oracle generation. Many researches were implemented test cases for minimal spanning tree by giving different combinations of input values with edge weights and oracles to test the program behavior. Very few among them were concentrated on the concept of result accuracy due to the difficulties in testing the result. Logical errors of a program at run time might generate the output which is incorrect without any exception. B. MT adoption for testing GTA To overcome the test oracle problem and logical errors in testing graph theory applications we are adopting metamorphic testing for the minimal spanning tree also. In this case our research is transforming the existed basic spanning tree relations to metamorphic relations to overcome the above specified problems. Our present research contributing relations might not be enough to all aspects of testing but improvements on this area will fulfill the gap. The main advantage of this approach is testing the graph results accuracy with proven metamorphic relations without designing complex and expensive test oracles. This process will behave as black box testing for graph theory algorithms and identifies the hidden logical errors also. Figure 2.b describes that kruskal s minimal spanning tree as t = {(a, b), (a, h), (c, i), (h, g), (c, f), (g, f), (c, d), (d, e)}. In order to test these results we are applying the below metamorphic relations are test cases for metamorphic testing and based on the successful test cases again we design the new test cases. (i) A Minimal spanning tree should be connected and has to cover all the vertices of source graph without cycles. (ii) For a graph G with N number of vertices, should contain N-1 edges with positive weights in their minimal tree implementation. (iii) Always the weight(length) of minimal spanning tree should be equal or less than the weight of all edges of a source graph (iv) Adding an edge to the spanning tree should create a cycle and removing an edge from spanning tree leaves the spanning tree as disconnected. (v) Spanning tree is a sub graph to its source graph C. Experiments on GTA To implement the above metamorphic relations we consider the figure.2.a as a base model graph G= {V, E} whereas V =9 and E = 14. Minimal spanning tree for the same is shown in figure.2.b as a sub graph G = {V, E } whereas V =9 and E = 8. To test the first relation we compared the V G and V G results true for equality relation because V = V = 9. Second relation is also returning true because G ( E ) = [G( V ) /G ( V ) 1 ]. Third relation compared with edges as G ( E ) G( E ) is also returning true as result based on the weight values mentioned above. If we added any edge to this tree is creating a cycle and removing any edge making the graph disconnect is proving fourth relations. As all edges of spanning tree are appeared with adjacent connections like t t is supporting the final relation. We test all these relations one by one in an order with follow up test cases from successful test cases. This process revealed many flaws when we tested with wrong (negative) test cases. Above theory is concluding that, this type of test case implementation with metamorphic relations is feasible and alternate for non-testable programs like graph theory applications. CONCLUSION In generally testing complex programs without oracles leads to avoid the in-depth testing of software causes failure at runtime. As scientific applications become more ubiquitous in society, we have to assure the accuracy of them at high level with efficient testing. Metamorphic Testing is an efficient automatic approach to overcome the oracleproblem in testing non-testable programs.mt uses the Metamorphic Relations (MR) to ensure the correctness of test outputs and to test the application by generating follow-up test cases for efficient detection of flaws. In this paper, we applied the metamorphic testing on non-testable programs to relieve the need of complex or unavailable test oracle in testing. To support our research statement, we have taken up the challenge to implement metamorphic relations for the non-testable areas are multi precision arithmetic and graph theory algorithms. Case studies on non-testable programs prove the scalability, accuracy and adoptability of our approach in detailed manner. REFERENCES [1] Ch Aruna, Dr.R.Siva Ram Prasad Integration of Dynamic Symbolic Execution with Metamorphic Relations to Solve Complex Path Constraints 10.5176/2251-2195_CSEIT14 by GSTF digital library 2014. [2] T. Y. Chen, F.C. Kuo, T. H. Tse, and Z. Q. Zhou. Metamorphic testing and beyond. In Proc. of the International Workshop on Software Technology and Engineering Practice (STEP), pages 94 100, 2004. [3] T.Y. Chen, S.C. Cheung, and S.M. Yiu. Metamorphic testing: a new approach for generating next test cases. Technical Report HKUST-CS98-01, University of Science and Technology, Hong Kong, 1998. [4] H. Lu, W. K. Chan, and T. H. Tse. Testing contextaware middleware-centric programs: a data flow approach and an RFID-based experimentation. In Proceedings of the 14th ACM SIGSOFT ISFS pages 242 252. ACM Press, New York, NY, 2006. [5] Fousse, L., Hanrot, G., Lefèvre, V., Pélissier, P., Zimmermann, P.: MPFR: A multiple-precision binary 13

floating-point library with correct rounding. ACM Trans. Math. Softw. 33(2) (2007) 13. [6] Sven Dickinson, Pelillo, Ramin Zabih, Introduction to the special section on graph algorithms in computer vision, IEEE on pattern analysis, Vol 23 No. 10, September 2001. [7] R. C. Sercord, Secure Coding in C and C++, Addison Wesley& Person Education Asia, 2006. [8] Université Pierre et Marie Curie, Paris, F.: CADNA: Control of Accuracy and Debugging for Numerical Applications (2010) http://www.lip6.fr/cadna. [9] Yozo Hida, Xiaoye S. Li and David H. Bailey, Algorithms for Quad-Double Precision Floating Point Arithmetic, Proceedings of ARITH-15, IEEE Computer Society, 2001. [10] Chazelle, B. A faster deterministic algorithm for minimum spanning trees In Proceedings of the IEEE Symposium on Foundations of Computing Science. IEEE Computer Society Press, Los Alamitos, Calif., 22 31. 2000. [11] Martin D. Davis, Elaine J. Weyuker : Pseudo-oracles for non-testable programs, Proceeding ACM '81 Proceedings of the ACM '81 conference Pages 254-257, ISBN:0-89791-049-4. [12] Ch Aruna, Dr.R.Siva Ram Prasad Testing Approach for Dynamic Web applications based on Automated Test Strategies proceedings of 48th Annual convocation of CSI Volume II, Advances in intelligent systems and Computer, Apr-2014 cited by Springer. 14