Software testing is one of the most challenging and arduous phase of software development life cycle (SDLC) which helps in determining the software quality. Code coverage is a widely used testing paradigm, which descr...
详细信息
Software testing is one of the most challenging and arduous phase of software development life cycle (SDLC) which helps in determining the software quality. Code coverage is a widely used testing paradigm, which describes the degree to which the code has been tested. Aim of the current paper is to propose an optimised code coverage algorithm with the help of an emerging technique, i.e., intelligent water drop (IWD). This approach uses dynamic parameters for finding all the optimal paths using basic properties of natural water drops. It proposes how test cases can be considered as an IWD moving on the edges of the control dependency graph for finding the optimal paths. The algorithm guarantees complete code coverage by generating automated test sequences.
Program slicing is a useful technique for debugging, testing and program integration. Intuitively, by the slice of a program P is meant, for a point n and a variable v in P, the set of statements and expressions in P ...
详细信息
Program slicing is a useful technique for debugging, testing and program integration. Intuitively, by the slice of a program P is meant, for a point n and a variable v in P, the set of statements and expressions in P that affect the value of v at n. To determine a slice, there must be a precise analysis of the dependencies among the statements in the program. It is difficult, on the other hand, to analyze the program containing recursions.
In the domain of software testing, the generation of test cases is a critical process for detecting system errors and bugs. However, automated test case generation for smart contracts often encounters challenges relat...
详细信息
In the domain of software testing, the generation of test cases is a critical process for detecting system errors and bugs. However, automated test case generation for smart contracts often encounters challenges related to automation, vulnerability diversity, and coverage. This paper presents a novel method, the self-adaptive learning Genetic Algorithm (self-adaptive learning GA), designed to address these issues. Our research methodology incorporates several construction models, namely the control dependence graph (CDG), control Flow graph (CFG), and Application Binary Interface (ABI). Initially, the ABI model provides essential information for generating and executing test cases. The CFG model subsequently visualizes potential execution paths through the functions of smart contracts. Ultimately, the CDG model identifies potential vulnerabilities in smart contracts. Using these models, our method enhances automatic test case generation in smart contracts by improving coverage and reducing execution time. We selected a variety of smart contracts from the Decentralized Finance (DeFi) ecosystem for data collection and comparative analysis. The experimental results show superior performance rates, with an average code coverage rate of 98.1%, a total of 3500 vulnerabilities detected, a vulnerability detection rate of 98.7%, a false positive rate of 1.3%, a recall of 98.2%, precision of 98.8%, a path uniqueness rate of 96.4%, false negative rate of 3.5%, an execution time of 25 s, and test case generation time of 16 s. In conclusion, our proposed approach demonstrates a significant improvement over existing methods for test case generation by providing a promising solution for the robustness of smart contracts and security enhancement in the DeFi ecosystem.
We present an efficient interprocedural dynamic slicing algorithm for structured programs. We first propose an intraprocedural dynamic slicing algorithm, and subsequently extend it to handle interprocedural calls. Our...
详细信息
We present an efficient interprocedural dynamic slicing algorithm for structured programs. We first propose an intraprocedural dynamic slicing algorithm, and subsequently extend it to handle interprocedural calls. Our intraprocedural dynamic slicing algorithm uses control dependence graph as the intermediate program representation, and computes precise dynamic slices. The interprocedural dynamic slicing algorithm uses a collection of control dependence graphs (one for each procedure) as the intermediate program representation. and computes precise dynamic slices. We show that our proposed interprocedural dynamic slicing algorithm is more efficient than the existing dynamic slicing algorithms. We also discuss how our algorithm can be extended to efficiently handle recursion, composite data structures and pointers. (C) 2005 Elsevier Inc. All rights reserved.
We propose an innovative approach for handling dynamic memory, arrays, pointers, structures and union by interprocedural dynamic slicing technique which combines the basic techniques from past and current trends of dy...
详细信息
ISBN:
(纸本)9781424447909
We propose an innovative approach for handling dynamic memory, arrays, pointers, structures and union by interprocedural dynamic slicing technique which combines the basic techniques from past and current trends of dynamic interprocedural slicing. At first an improved algorithm for interprocedural dynamic slicing in the presence of derived and user defined data type is given. Secondly the dynamic slices for different derived and user defined data types used in the respective programs are obtained. The proposed extended interprocedural dynamic slicing algorithm is more efficient then the existing algorithm as it gives a detailed idea about the slices that can be obtained for one dimensional pointers, two dimensional pointer, pointer and arrays, dynamic memory allocation, structures and union. The illustrations are given with the programs for the proof of correctness of the proposed algorithm.
Even after thorough testing of a program, usually a few bugs still remain. These residual bugs are randomly distributed through out the code. It is observed that bugs in some parts of a program can cause more frequent...
详细信息
ISBN:
(纸本)9783642116582
Even after thorough testing of a program, usually a few bugs still remain. These residual bugs are randomly distributed through out the code. It is observed that bugs in some parts of a program can cause more frequent and more severe failures compared to those in other parts. So, it is possible to prioritize the program elements at the time of testing according to their potential to cause failures. Based on this idea, we have proposed a metric to compute the influence of an object;in an object-oriented program. Influence of an element indicates the potential of the element to cause failures. The intensity with which each element is tested is proportionate to its influence value. We have conducted experiments to compare our scheme with related schemes. The results establish that the failure rate can indeed be minimized using our scheme when the software is executed for some duration after the completion of testing phase. Our proposed metric can be useful in applications such as coding, debugging, test case design and maintenance etc.
Program Slicing is a basic technique on Program analysis and converse engineering. The control dependence graph is the basic representation of the source code in Program Slicing. From CDG you can do analysis on contro...
详细信息
ISBN:
(纸本)9781424451944
Program Slicing is a basic technique on Program analysis and converse engineering. The control dependence graph is the basic representation of the source code in Program Slicing. From CDG you can do analysis on control flow. In this paper we present algorithms for constructing control dependence graph for programs with transfer statements. We study on the follow region that is caused by the transfer statements and bring up a method which constructs CDG by using and maintaining the virtual nodes stack. From the method you can do controldependence analysis on program with multiple nesting transfer statements.
暂无评论