Font Size: a A A

Research On Key Technologies For Concurrent Programs Testing

Posted on:2010-01-20Degree:DoctorType:Dissertation
Country:ChinaCandidate:F L PuFull Text:PDF
GTID:1118360302971131Subject:Computer software and theory
Abstract/Summary:PDF Full Text Request
During the whole lifecycle of software development,software testing is one of the key steps to ensure the high quality of software.With the development of parallel distributed systems and network technology,concurrent programs is becoming more popular in modern software development.A concurrent program contains two or more threads that execute concurrently and work together to perform some task.Using multithread can increase computational efficiency.The non-determinism of concurrent programs brings new challenging problems to concurrency testing.Some traditional testing strategies and methods can be adjusted or improved for testing the concurrent programs.On the other hand,exploiting a new system of testing methods and technology for these new specialties is essentially important.Concurrency testing can be classified into four testing methods:non-deterministic testing,deterministic testing,reachability testing and concolic testing.Non-deterministic testing is to execute the program with the same input many times and examine each executing result.Non-deterministic testing is uncontrolled testing.Non-deterministic testing based on delay is to set delay instructions before special instructions and ensure the special instructions be executed in the next repeated testing.The graph of selecting delay point of the method can't reflect the procedure of the program and the selecting delay points are more and the algorithm of the method isn't proposed.Through using concurrent control flow graph(CCFG) to select delay points and proposing the testing algorithm improves the exist non-deterministic testing based on delay.The new method enhances the controllability of non-deterministic testing and further enhances the practicability of the non-deterministic testing.Reachability testing and concolic testing select SYN-sequences with strong happened-before relation(SHB) and have the problem that the number of testing SYN-sequences are too many and can't exhaust all the SYN-sequences.Research on Little strong happened-before relation(LSHB) that supports 'keeping-read-result' and propose the new SYN-sequences selecting method that can find out all the read results of the concurrent program and ensures definite sufficiency of testing and can reduce the number of testing SYN-sequences.The new method equivalence partitions the set of SYN-sequences according to the set of 'write-read' pairs of SYN-sequences and reaches the target of reducing the number of testing SYN-sequences.T-way reachability testing uses t-way testing for reachability testing and needs to analyze and record the control structure and race set of each send or receive event,which is a quite difficult work and is difficult to realize in the practice and reduces the practicability of the testing.Through using timestamps to define the order of the race receive events and generating the race table according to horizontal and vertical growth rules,propose a a feasibly combinatorial testing strategy for concurrent programs based on timestamp.The new strategy needn't analyze and record the control structure and race set of each send or receive event,ensures the send event of each race receive event to be changed,reduces the testing SYN-sequences of reachability testing and the number of executing wrong SYN-sequences,further enhances the behaviours of t-way reachability testing.Reachability testing can generate and test all the partially ordered SYN-sequnces of the concurrent program with the same input and exhaust all the paths with the same input. Reachability testing has the difficulty of finding out unreachable points and edges and can't exhaust all the testing SYN-sequences.Aiming at the reason of the difficulty and using all-synchronizable-pairs coverage criterion,all-points coverage criterion,and all-edges coverage criterion for reachability testing,propose the reachability testings based on the three coverage criteria and compare the three methods.Through analzing the results of experiments,the reachability testings based on all-points,all-edges coverage criteria can find out all unreachable points,unreachable edges.The reachability testings based on the three coverage criteria further enhance the behaviours of reachability testing based on ensuring the definite effect of reachability testing.Concolic testing is a concurrency testing method based on Java with high practicability and can execute all reachable statements of a concurrent programs and detect all possible data races and deadlock states.Concolic testing solves the problem of selecting input that reachability testing doesn't discuss.But concolic testing has the difficulty of saving a quite lot of information and executing the same SYN-sequences more than two times.Reseach on dynamic slicing of concurrent Java programs,propose concolic testing based on dynamic slicing of concurrent Java programs.The new method largely reduces saving information and ensures not to execute the same SYN-sequences more than two times based on ensuring the intrinsical behaviours of concolic testing. Through analzing the results of the experiments,prove that the new method has the merits of less saving information,high executing efficiency,and so on.
Keywords/Search Tags:Software Testing, Concurrency, SYN-sequence, Non-deterministic Testing, Combinatorial Testing, Reachability Testing, Coverage Criterion, Dynamic Slicing, Concolic Testing
PDF Full Text Request
Related items