JSDEP (analyse de dépendance 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 est un outil pour trouver la dépendance DOM-Event d'une application Web, y compris le contrôle traditionnel et la dépendance aux données à l'aide de contraintes de données.
Il traverse un fichier JavaScript statiquement et trouve la relation entre deux événements de DOMS.
Cet outil comprend une version modifiée d'Artemis pour montrer l'évaluation telle que présentée dans l'article FSE (pour apparaître).
Les caractéristiques de cet outil
- Alias statique et interprocédurale et insensible au contexte Anlaysis
- Cet outil ne prend pas en charge Dom-Alias Anlaysis
- Cet outil ne prend pas en charge l'extraction de JavaScript de HTML (tous les Javascripts extraits manuellement pour les repères que nous avons)
Structure de JSDEP
- Dans cette figure, tous les répertoires du référentiel que nous avons sont représentés avec un dossier et les fichiers de sortie sont représentés avec une icône de bloc-notes. Et, les commandes à côté des flèches sont des scripts réels que vous pouvez utiliser dans JSDEP. Surtout, il y a trois parties dans JSDEP:
- Analyse DOM - Cette partie contient notre analyse principale. Il se compose de 3 répertoires (SRC, Z3_rules, Node_Modules). Après avoir installé toutes les dépendances, lorsque vous exécutez des scripts nommés Making Build-Dep avec un nom de fichier ou créez une build-dep-all, l'analyse produira 3 fichiers (dep.txt, numConstraints.txt, z3.time) sous le répertoire d'informations de chaque référence. Le résultat de la dépendance est imprimé dans Dep.txt, et le temps d'analyse de chaque fichier est enregistré en z3. time. De plus, le nombre de contraintes générées est enregistré dans numConstraints.txt.
- Artemis modifié - Pour faire en sorte que les utilisateurs vérifient l'utilité de notre analyse, nous fournissons un Artemis modifié pour utiliser les informations dont nous disposons. Avant de diriger Artemis, vous devez l'installer. Après avoir installé la version modifiée d'Artemis, vous pouvez en comparer deux versions. En exécutant la commande, faites en sorte que Run-Artemis avec un nom de fichier ou réalise le run-artemis-all, il utilise Dep.txt sous chaque référence et produit deux fichiers sous le répertoire Artemis-Result pour chaque référence. Old_artemis.stdout est la sortie de la version précédente d'Artemis, et New-Artemis.Stdout est la sortie d'une version modifiée d'Artemis qui utilise les informations dans Dep.txt.
- Data brute - Ce répertoire est fourni pour les utilisateurs qui souhaitent fabriquer des tables sans aucune installation et exécuter notre analyse. Toutes les données ont été téléchargées et la structure de ce répertoire est la même que celle de Benchmark. Si vous exécutez les commandes, faites le tableau 1, créez la table2 et créez le tableau3, vous pouvez utiliser chaque table dans le papier. Le tableau sera imprimé sur le terminal et le formulaire est pour le latex. Par conséquent, si vous copiez l'impression et collez-le en latex, il montrera le même tableau que nous l'avons montré dans le journal. Et, pour ceux qui veulent faire une table avec de nouvelles données générées, nous fournissons une commande de plus, faisons des données de fetch. Cette commande rapportera toutes les données sous Benchmark vers le répertoire brutes. Identique qu'avant, après avoir récupéré de nouvelles données, vous pouvez facilement créer les mêmes tables de structure en exécutant des commandes de table.
Contributeurs
Les personnes suivantes ont contribué à cette appliacation et à l'article:
- Chungha Sung (sch8906 / at / vt / edu)
- Markus Kusano (mukusano / at / vt / edu)
- Nishant Sinha
- Chao Wang (chaowang / at / vt / edu)
Dépendances du programme
Environnement
- Nous n'avons testé ce programme que sur Ubuntu 12.04
- Nous ne l'avons pas vérifié avec d'autres versions Ubuntu
Pour exécuter uniquement une analyse statique pour exécuter les relations de dépendance DOM, il a besoin de ces dépendances:
- Z3 (https://github.com/z3prover/Z3), toute version (testée avec 4.4.1).
- Nodejs (pour installer ce type, Type
sudo apt-get install nodejs ) - realpath (pour installer ce type, type
sudo apt-get install realpath )
Pour tester avec Artemis, vous devez d'abord installer une version modifiée d'Artemis.
- Vous pouvez suivre les instructions sous le répertoire modifié par Artemis pour l'installer (il est parfois difficile à installer correctement, mais en raison de la limitation de taille, nous ne pouvons pas fournir une version entièrement compilée).
- Vous devez utiliser la version que nous fournissons car cette version est modifiée pour comparer la version précédente d'Artemis et la version modifiée d'Artemis qui utilise les relations de dépendance de notre programme.
Le lien pour VM (fichier OVA de la boîte virtuelle) avec JSDEP installé (https://drive.google.com/open?id=1o70kdlfwhan4j06y5nhtqopbqiqciyrq). Cependant, cela a été mis à jour il y a très longtemps, alors peut-être que cela a des problèmes.
USAGE
===== Vous devez installer la version modifiée d'Artemis que nous fournissons pour exécuter ces comands ci-dessous =====
- faire du fichier de run-artemis = [filename] iter = [itération]
- Vous devez effectuer une analyse de dépendance pour obtenir en premier dep.txt
- Exécutez la version précédente d'Artemis avec un fichier spécifié et un numéro d'itération spécifié
- faire de run-artemis-all iter = [itération]
- Vous devez effectuer une analyse de dépendance pour obtenir en premier dep.txt
- Exécutez la version précédente d'Artemis avec tous les fichiers avec un numéro d'intervention spécifié
Comment interpréter Dep.txt?
Si vous exécutez le programme, vous pouvez voir le fichier nommé Dep.txt Fichier dans le répertoire Info.
Il y a des lignes de texte, et chaque relation de dépèche se compose de 4 lignes de texte.
La première et la deuxième ligne indiquent le nom de DOM, et la troisième et la quatrième ligne indiquent le type d'événement.
Par exemple, si le contenu du fichier est 1 Dom1 2 Cliquez 3 Dom2 4 Mousemove
DOM1 et DOM2 sont le nom des nœuds DOM et Click et MouseMove sont le type d'événements pour chaque DOM.
La signification de ces quatre lignes est que MouseMove de Test2 dépend du clic de test1.
Chaque quatre lignes sont liées (par exemple 1 4, 5 8 ...)