17 research outputs found

    An Experimental Study on Attribute Validity of Code Quality Evaluation Model

    Get PDF
    Regarding the practicality of the quality evaluation model, the lack of quantitative experimental evaluation affects the effective use of the quality model, and also a lack of effective guidance for choosing the model. Aiming at this problem, based on the sensitivity of the quality evaluation model to code defects, a machine learning-based quality evaluation attribute validity verification method is proposed. This method conducts comparative experiments by controlling variables. First, extract the basic metric elements; then, convert them into quality attributes of the software; finally, to verify the quality evaluation model and the effectiveness of medium quality attributes, this paper compares machine learning methods based on quality attributes with those based on text features, and conducts experimental evaluation in two data sets. The result shows that the effectiveness of quality attributes under control variables is better, and leads by 15% in AdaBoostClassifier; when the text feature extraction method is increased to 50 - 150 dimensions, the performance of the text feature in the four machine learning algorithms overtakes the quality attributes; but when the peak is reached, quality attributes are more stable. This also provides a direction for the optimization of the quality model and the use of quality assessment in different situations

    Inter-Procedural Diagnosis Path Generation for Automatic Confirmation of Program Suspected Faults

    Get PDF
    Static analysis plays an important role in the software testing field. However, the initial results of static analysis always have a large number of false positives, which need to be confirmed by manual or automatic tools. In this paper, a novel approach is proposed, which combines the demand-driven analysis and the inter-procedural dataflow analysis, and generates the inter-procedural diagnosis paths to help the testers confirm the suspected faults automatically. In our approach, first, the influencing nodes of suspected fault are calculated. Then, the CFG of each associated procedure is simplified according to the influencing nodes. Finally, the “section-whole” strategy is employed to generate the inter-procedural diagnosis path. In order to illustrate and verify our approach, an experimental study is performed on the five open source C language projects. The results show that compared with the traditional approach, our approach requires less time and can generate more inter-procedural diagnosis paths in the given suspected faults

    Large scale software test data generation based on collective constraint and weighted combination method

    Get PDF
    Ispitivanje pouzdanosti softvera znači ispitivanje softvera kako bi se provjerilo da li udovoljava zahtjevima pouzdanosti i kako bi se procijenio njegov stupanj pouzdanosti. Statistički temeljeno ispitivanje pouzdanosti softvera općenito uključuje tri dijela: izgradnju modela, generiranje ispitnih podataka i ispitivanje. Stvaranje modela upotrebe softvera treba što je više moguće odražavati korisnikovu stvarnu primjenu. Potreban je ogroman broj ispitivanih slučajeva da bi se zadovoljila distribucija vjerojatnoće u slučaju stvarne upotrebe; inače će ispitivanje pouzdanosti izgubiti originalno značenje. U ovom radu najprije predlažemo novu metodu strukturiranja modela primjene softvera zasnovanu na modulima i heurističkoj metodi koja se temelji na ograničenjima. Zatim predlažemo metodu za generiranje podataka za ispitivanje uzimajući u obzir kombinaciju i težinu ulaznih podataka što smanjuje veliki broj mogućih kombinacija ulaznih varijabli na samo nekoliko reprezentativnih i povećava praktičnost primjene ispitne metode. U svrhu provjere učinkovitosti metode predložene u ovom radu, organizirane su četiri grupe eksperimenata. Ispravnost odgovarajućeg indeksa (GFI- goodness of fit index) pokazuje da je predložena metoda bliža upotrebi aktualnog softvera; također smo ustanovili da ima bolju pokrivenost kod uporabe Java Pathfinder-a za analizu četiri niza pokrivenosti internog koda.Software reliability test is to test software with the purpose of verifying whether the software achieves reliability requirements and evaluating software reliability level. Statistical-based software reliability testing generally includes three parts: building usage model, test data generation and testing. The construction of software usage model should reflect user\u27s real use as far as possible. A huge number of test cases are required to satisfy the probability distribution of the actual usage situation; otherwise, the reliability test will lose its original meaning. In this paper, we first propose a new method of structuring software usage model based on modules and constraint-based heuristic method. Then we propose a method for the testing data generation in consideration of the combination and weight of the input data, which reduces a large number of possible combinations of input variables to a few representative ones and improves the practicability of the testing method. To verify the effectiveness of the method proposed in this paper, four groups of experiments are organized. The goodness of fit index (GFI) shows that the proposed method is closer to the actual software use; we also found that the method proposed in this paper has a better coverage by using Java Pathfinder to analyse the four sets of internal code coverage

    Research of alarm correlations based on static defect detection

    Get PDF
    Tradicionalni alati za detekciju statičkog kvara mogu detektirati kvarove softvera i objaviti alarm, ali korelacije između alarma nisu identificirane i masivni nezavisni alarmi protivni su razumijevanju. Pomaganje korisnicima u verifikaciji alarma predstavlja veliki izazov postojećim alatima za detekciju statičke greške. U ovom radu mi formalno uvodimo korelacije alarma. Ako postojanje jednog alarma uzrokuje drugi, kažemo da su u korelaciji. Ako je jedan dominantni alarm jedinstveno povezan s drugim, znamo da će se verifikacijom jednoga također verificirati drugi. Na osnovu korelacije možemo reducirati broj alarma potrebnih za verifikaciju. Naši su algoritmi inter-proceduralni, osjetljivi na putanju i podesivi (scalable). Mi prikazujemo sumarni model postupka korelacije za računanje inter-proceduralne korelacije alarma. Osnovni algoritmi su implementirani u naše alate za detekciju kvara. Izabrali smo jednu uobičajenu semantičku pogrešku za analizu slučaja i dokazali da naša metoda rezultira smanjenjem radnog opterećenja za 34,23 %. Primjenom korelacijeske informacije možemo automatizirati verifikaciju alarma, što se ranije moralo raditi ručno.Traditional static defect detection tools can detect software defects and report alarms, but the correlations among alarms are not identified and massive independent alarms are against the understanding. Helping users in the alarm verification task is a major challenge for current static defect detection tools. In this paper, we formally introduce alarm correlations. If the occurrence of one alarm causes another alarm, we say that they are correlated. If one dominant alarm is uniquely correlated with another, we know verifying the first will also verify the others. Guided by the correlation, we can reduce the number of alarms required for verification. Our algorithms are inter-procedural, path-sensitive, and scalable. We present a correlation procedure summary model for inter-procedural alarm correlation calculation. The underlying algorithms are implemented inside our defect detection tools. We chose one common semantic fault as a case study and proved that our method has the effect of reducing 34,23 % of workload. Using correlation information, we are able to automate the alarm verification that previously had to be done manually

    Coverage Hole Recovery Algorithm Based on Molecule Model in Heterogeneous WSNs

    Get PDF
    In diverse application fields, the increasing requisitions of Wireless Sensor Networks (WSNs) have more and more research dedicated to the question of sensor nodes’ deployment in recent years. For deployment of sensor nodes, some key points that should be taken into consideration are the coverage area to be monitored, energy consumed of nodes, connectivity, amount of deployed sensors and lifetime of the WSNs. This paper analyzes the wireless sensor network nodes deployment optimization problem. Wireless sensor nodes deployment determines the nodes’ capability and lifetime. For node deployment in heterogeneous sensor networks based on different probability sensing models of heterogeneous nodes, the author refers to the organic small molecule model and proposes a molecule sensing model of heterogeneous nodes in this paper. DSmT is an extension of the classical theory of evidence, which can combine with any type of trust function of an independent source, mainly concentrating on combined uncertainty, high conflict, and inaccurate source of evidence. Referring to the data fusion model, the changes in the network coverage ratio after using the new sensing model and data fusion algorithm are studied. According to the research results, the nodes deployment scheme of heterogeneous sensor networks based on the organic small molecule model is proposed in this paper. The simulation model is established by MATLAB software. The simulation results show that the effectiveness of the algorithm, the network coverage, and detection efficiency of nodes are improved, the lifetime of the network is prolonged, energy consumption and the number of deployment nodes are reduced, and the scope of perceiving is expanded. As a result, the coverage hole recovery algorithm can improve the detection performance of the network in the initial deployment phase and coverage hole recovery phase

    A hybrid backtracking algorithm for automatic test data generation

    Get PDF
    Kao osnovno pitanje u ispitivanju softvera, automatsko generiranje podataka za ispitivanje je od najveće važnosti, što je u biti problem zadovoljavanja ograničenja, a rješava se algoritmima pretraživanja. U našem prethodnom istraživanju za rješenje ograničenja predložena je metoda grananja i ograničavanja, a elaborirane su unaprijedne metode. Zasnovan na intervalnom aritmetičkom i simboličkom izvršenju, ovaj je rad usredotočen na unatražnu metodu, a to je povezivanje unaprijednog provjeravanja i unatražnog ispitivanja usmjerenog konflikta, u cilju poboljšanja učinkovitosti unatražnog praćenja u postupku traženja. Zatvaranja varijabli se koriste kako bi se olakšalo lociranje nesuglasica koje dovode do neriješenih rezultata (dead ends). Empirijski eksperimenti dokazuju učinkovitost predložene hibridne unatražne metode i njenu primjenljivost u inženjerstvu.As a fundamental issue in software testing, automatic test data generation is of crucial importance, which is essentially a constraint satisfaction problem and solved by search algorithms. In our previous research, branch and bound was proposed as our constraint solver and the look-ahead methods were elaborated. Based on interval arithmetic and symbolic execution, this paper focuses on the look-back or backtracking method, which is the hybridization of forward checking and conflict-directed backjumping, with the aim of improving the efficiency of backtracking in the search procedure. The closures of variables are used to facilitate the localization of the conflicts which cause dead ends. Empirical experiments prove the effectiveness of the proposed hybrid backtracking method and its applicability in engineering

    A Model for Predicting Statement Mutation Scores

    No full text
    A test suite plays a key role in software testing. Mutation testing is a powerful approach to measure the fault-detection ability of a test suite. The mutation testing process requires a large number of mutants to be generated and executed. Hence, mutation testing is also computationally expensive. To solve this problem, predictive mutation testing builds a classification model to predict the test result of each mutant. However, the existing predictive mutation testing methods only can be used to estimate the overall mutation scores of object-oriented programs. To overcome the shortcomings of the existing methods, we propose a new method to directly predict the mutation score for each statement in process-oriented programs. Compared with the existing predictive mutation testing methods, our method uses more dynamic program execution features, which more adequately reflect dynamic dependency relationships among the statements and more accurately reflects information propagation during the execution of test cases. By comparing the prediction effects of logistic regression, artificial neural network, random forest, support vector machine, and symbolic regression, we finally decide to use a single hidden layer feedforward neural network as the predictive model to predict the statement mutation scores. In our two experiments, the mean absolute errors between the statement mutation scores predicted by the neural network and the real statement mutation scores both approximately reach 0.12

    STG-based verification and test generation

    No full text

    Statement-Grained Hierarchy Enhanced Code Summarization

    No full text
    Code summarization plays a vital role in aiding developers with program comprehension by generating corresponding textual descriptions for code snippets. While recent approaches have concentrated on encoding the textual and structural characteristics of source code, they often neglect the global hierarchical features, causing limited code representation. Addressing this gap, our paper introduces the statement-grained hierarchy enhanced Transformer model (SHT), a novel framework that integrates global hierarchy, syntax, and token sequences to automatically generate summaries for code snippets. SHT is distinctively designed with two encoders to learn both hierarchical and sequential features of code. One relational attention encoder processes the statement-grained hierarchical graph, producing hierarchical embeddings. Subsequently, another sequence encoder integrates these hierarchical structures with token sequences. The resulting enriched representation is then fed into a vanilla Transformer decoder, which effectively generates concise and informative summarizations. Our extensive experiments demonstrate that SHT significantly outperforms state-of-the-art approaches on two widely used Java benchmarks. This underscores the effectiveness of incorporating global hierarchical information in enhancing the quality of code summarizations

    A state machine for detecting c/c++ memory faults

    Full text link
    Memory faults are major forms of software bugs that severely threaten system availability and security in c/c++ program. Many tools and techniques are available to check memory faults, but few provide systematic full-scale research and quantitative analysis. Furthermore, most of them produce high noise ratio of warning messages that require many human hours to review and eliminate false-positive alarms. And thus, they cannot locate the root causes of memory faults precisely. This paper provides an innovative state machine to check memory faults, which has three main contributions. Firstly, five concise formulas describing memory faults are given to make the mechanism of the state machine simple and flexible. Secondly, the state machine has the ability to locate the cause roots of the memory faults. Finally, a case study applying to an embedded software, which is written in 50 thousand lines of c codes, shows it can provide useful data to evaluate the reliability and quality of software
    corecore