A method and system for generating a test suite for a computer program
written in the JAVA programming language. The JAVA program comprises
program statements and program variables represented as JAVA source code
and compiled by a JAVA compiler into JAVA bytecodes, including at least
one input statement having one or more input variables, that are grouped
into code blocks and stored in a program database. The test suite
comprises sets of inputs. Each of the sets of inputs corresponds to a pth
in the program. The program statements corresponding to a candidate code
block are read from the program database. Each of the input variables for
each input statement and each of the program variables that depend on them
are represented in symbolic form as a symbolic memory value and
transforming each program statement dependent on such an input variable
into a symbolic expression. A trial set of inputs for each of the input
statements is created by finding a solution to the symbolic expression
obtained using dynamic symbolic execution. The trial set of inputs are
stored into the test suite if coverage of the candidate code block was
obtained. A dynamic symbolic execution consists of a symbolic execution of
the program performed along the path that corresponds to the trial set of
actual inputs. The first input to the program is generated randomly. From
that first input, inputs satisfying any coverage criteria can be obtained
by performing the above procedure iteratively.
Метод и система для производить сюиту испытания для компьутерной программы написанной в языке программирования JAVA. Программа JAVA состоит из заявлений программы и перемеююых программы представленных как Кодий источника JAVA и составленных составителем JAVA в bytecodes JAVA, включая по крайней мере одну input формулировку имея one or more перемеююые входного сигнала, которые собраны в блоки Кодего и сохранены в базе данных программы. Сюита испытания состоит из комплектов входных сигналов. Каждый из комплектов входных сигналов соответствует к pth в программе. Заявления программы соответствуя к блоку Кодего выбранного прочитаны от базы данных программы. Каждая из перемеююых входного сигнала для каждого заявления входного сигнала и каждая из перемеююых программы зависят на их представлены в символической форме как символическое значение и преобразовывать памяти каждого иждивенца заявления программы на такой перемеююом входного сигнала в символическое выражение. Пробный комплект входных сигналов по каждом из из заявления входного сигнала создан путем находить разрешение к символическому полученному выражению использующ динамическое символическое исполнение. Пробный комплект входных сигналов хранится в сюиту испытания если был получен охват блока Кодего выбранного. Динамическое символическое исполнение состоит символического исполнения программы выполненной вдоль курса соответствует к пробному комплекту фактических входных сигналов. Первый входной сигнал к программе произведен случайно. От того первого входного сигнала, входные сигналы удовлетворяя все критери по охвата могут быть получены путем выполнять вышеуказанную процедуру итеративно.