JSDEP (анализ DOM-зависимости)
@inproceedings{DBLP:conf/sigsoft/SungKS016,
author = {Chungha Sung and
Markus Kusano and
Nishant Sinha and
Chao Wang},
title = {Static {DOM} event dependency analysis for testing web applications},
booktitle = {Proceedings of the 24th {ACM} {SIGSOFT} International Symposium on
Foundations of Software Engineering, {FSE} 2016, Seattle, WA, USA,
November 13-18, 2016},
pages = {447--459},
year = {2016},
crossref = {DBLP:conf/sigsoft/2016},
url = {https://doi.org/10.1145/2950290.2950292},
doi = {10.1145/2950290.2950292},
timestamp = {Tue, 06 Nov 2018 16:59:23 +0100},
biburl = {https://dblp.org/rec/bib/conf/sigsoft/SungKS016},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
JSDEP-это инструмент для поиска зависимости веб-приложения DOM-EVENT, включая традиционное управление и зависимость от данных с использованием ограничений Datalog.
Он проходит один файл JavaScript статически и находит взаимосвязь между двумя событиями DOMS.
Этот инструмент включает в себя модифицированную версию Artemis, чтобы показать оценку, представленную в статье FSE (появление).
Характеристики этого инструмента
- Статический, межпроцедурный и нечувствительный к контексту псевдоним anlaysis
- Этот инструмент не поддерживает Dom-alias anlaysis
- Этот инструмент не поддерживает извлечение JavaScript из HTML (все Javascripts извлечены вручную для тестов, которые у нас есть)
Структура JSDEP
- На этом рисунке все каталоги репозитория, которые мы имеем, представлены с папкой, а выходные файлы представлены со значком блокнота. И команды рядом со стрелками - это фактические сценарии, которые вы можете использовать в JSDEP. Главным образом, в JSDEP есть три части:
- Анализ DOM - эта часть содержит наш основной анализ. Он состоит из 3 каталогов (src, z3_rules, node_modules). После установки всех зависимостей, когда вы запускаете сценарии с именем с именем Make Build-DEP с именем файла или создаете сборку-все, анализ будет создавать 3 файла (dep.txt, numconstraints.txt, Z3.Time) в соответствии с информационным каталогом каждого эталона. Результат зависимости печатается в dep.txt, а время анализа каждого файла записывается в Z3.Time. Кроме того, количество сгенерированных ограничений записывается в numconstraints.txt.
- Модифицированная Artemis - Чтобы пользователи проверяли полезность нашего анализа, мы предоставляем Artemis, модифицированную для использования информации, которую мы имеем. Перед запуском Artemis вы должны установить ее. После установки модифицированной версии Artemis вы можете сравнить две ее версии. Запустив команду, создавая run-artemis с именем файла или сделайте run-artemis-all, он использует dep.txt под каждым тестом и производит два файла в каталоге Artemis-Result для каждого эталона. Old_Artemis.stdout-это выход предыдущей версии Artemis, а new-artemis.stdout-вывод модифицированной версии Artemis, которая использует информацию в dep.txt.
- RAW -DATA - этот каталог предоставляется для пользователей, которые хотят создавать таблицы без какой -либо установки и запуска нашего анализа. Все данные были загружены, и структура этого каталога такая же, как и эталон. Если вы запускаете команды, создайте таблицу1, составьте таблицу2 и сделайте таблицу3, вы можете получить каждую таблицу, используемой в бумаге. Таблица будет напечатана на терминале, а форма - латекс. Поэтому, если вы скопируете печать и вставьте ее в латекс, он покажет ту же таблицу, что и в бумаге. И для тех, кто хочет создать таблицу с новыми сгенерированными данными, мы предоставляем еще одну команду, сделаем DATA. Эта команда принесет все данные под контролем в каталоге RAW-DATA. То же самое, что и раньше, после получения новых данных вы можете легко создавать такие же структурные таблицы, запустив команды Make Table.
Участники
Следующие люди внесли свой вклад в это привлечение и статью:
- Chungha Sung (Sch8906/at/vt/edu)
- Маркус Кусано (Мукусано/AT/VT/EDU)
- Нишант Синха
- Chao Wang (Chaowang/at/vt/edu)
Зависимости программы
Среда
- Мы тестировали эту программу только на Ubuntu 12.04
- Мы не проверили его с другими версиями Ubuntu
Чтобы запустить только статический анализ для запуска отношений с зависимостью DOM, ему нужны эти зависимости:
- Z3 (https://github.com/z3prover/z3), любая версия (протестирована с помощью 4.4.1).
- Nodejs (чтобы установить это, введите
sudo apt-get install nodejs ) - REALPATH (чтобы установить это, введите
sudo apt-get install realpath )
Чтобы проверить с Artemis, вы должны сначала установить модифицированную версию Artemis.
- Вы можете следовать инструкции в рамках каталога, модифицированного Artemis для его установки (иногда его трудно установить, однако из-за ограничения размера мы не можем предоставить полностью скомпилированную версию).
- Вы должны использовать версию, которую мы предоставляем, потому что эта версия изменена для сравнения предыдущей версии Artemis и модифицированной версии Artemis, которая использует отношения зависимости нашей программы.
Ссылка для виртуальной машины (файл OVA виртуальной коробки) с установленным JSDEP (https://drive.google.com/open?id=1o70kdlfwhan4j06y5nhtqopbqiirq). Тем не менее, это было обновлено очень давно, так что, возможно, у него есть некоторые проблемы.
Использование
===== Вы должны установить модифицированную версию Artemis, которую мы предоставляем для запуска этих компаний ниже =====
- Сделайте run-artemis file = [filename] iter = [итерация]
- Вы должны запустить анализ зависимостей, чтобы сначала получить dep.txt
- Запустите предыдущую версию Artemis с указанным файлом и указанным номером итерации
- Сделайте run-artemis-all iter = [итерация]
- Вы должны запустить анализ зависимостей, чтобы сначала получить dep.txt
- Запустите предыдущую версию Artemis со всеми файлами с указанным номером взаимодействия
Как интерпретировать dep.txt?
Если вы запустите программу, вы можете увидеть файл с именем файла dep.txt в Directory Info.
Существуют строки текста, и каждое отношения Depedency состоят из 4 строк текста.
Первая и вторая строка указывают на имя DOM, а третья и четвертая строка указывают тип события.
Например, если содержимое файла составляет 1 Dom1 2 Нажмите 3 Dom2 4 MouseMove
DOM1 и DOM2 - это название узлов DOM и щелчок, а MouseMove - это тип событий для каждого DOM.
Значение этих четырех линий является MouseMove Test2, зависит от клика Test1.
Каждая четыре строки связаны (например, 1 4, 5 8 ...)