JSDEP (analisis dependensi 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 adalah alat untuk menemukan ketergantungan dom-event dari aplikasi web termasuk kontrol tradisional dan ketergantungan data menggunakan kendala datalog.
Ini melintasi satu file JavaScript secara statis dan menemukan hubungan antara dua peristiwa DOM.
Alat ini mencakup versi Artemis yang dimodifikasi untuk menunjukkan evaluasi seperti yang disajikan dalam makalah FSE (untuk muncul).
Karakteristik alat ini
- Static & Interprocedural & Context-Sensitive Alias Anlaysis
- Alat ini tidak mendukung Dom-Alias Anlaysis
- Alat ini tidak mendukung ekstraksi JavaScript dari HTML (semua JavaScript yang diekstraksi secara manual untuk tolok ukur yang kami miliki)
Struktur JSDEP
- Dalam gambar ini, semua direktori repositori yang kami miliki diwakili dengan folder, dan file output diwakili dengan ikon notepad. Dan, perintah di sebelah panah adalah skrip aktual yang dapat Anda gunakan di JSDEP. Terutama, ada tiga bagian di JSDEP:
- Analisis DOM - Bagian ini berisi analisis utama kami. Ini terdiri dari 3 direktori (SRC, Z3_RULES, NODE_MODULES). Setelah menginstal semua dependensi, saat Anda menjalankan skrip bernama Make Build-Dep dengan nama file atau membuat build-dep-all, analisis akan menghasilkan 3 file (DEP.TXT, numConstraints.txt, z3.Time) Di bawah direktori info setiap tolok ukur. Hasil ketergantungan dicetak dalam dep.txt, dan waktu analisis setiap file dicatat dalam z3.time. Juga, jumlah kendala yang dihasilkan dicatat dalam numconstraints.txt.
- Modified Artemis - Untuk membuat pengguna memeriksa kegunaan analisis kami, kami menyediakan artemis yang dimodifikasi untuk menggunakan informasi yang kami miliki. Sebelum menjalankan Artemis, Anda harus menginstalnya. Setelah Anda menginstal versi Artemis yang dimodifikasi, Anda dapat membandingkan dua versi. Dengan menjalankan perintah, buat run-artemis dengan nama file atau buat run-artemis-all, ia menggunakan dep.txt di bawah setiap tolok ukur dan menghasilkan dua file di bawah direktori Artemis-Result untuk setiap tolok ukur. old_artemis.stdout adalah output dari versi Artemis sebelumnya, dan new-artemis.stdout adalah output dari versi modifikasi Artemis yang menggunakan informasi dalam dep.txt.
- RAW -DATA - Direktori ini disediakan untuk pengguna yang ingin membuat tabel tanpa instalasi dan menjalankan analisis kami. Semua data telah diunggah dan struktur direktori ini sama dengan salah satu tolok ukur. Jika Anda menjalankan perintah, buat Table1, buat Table2 dan buat Table3, Anda dapat menggunakan setiap tabel yang digunakan di koran. Tabel akan dicetak di terminal dan formulir adalah untuk lateks. Oleh karena itu, jika Anda menyalin cetakan dan menempelkannya ke Latex, itu akan menampilkan tabel yang sama seperti yang kami tunjukkan di koran. Dan, bagi mereka yang ingin membuat tabel dengan data baru yang dihasilkan, kami menyediakan satu perintah lagi, membuat data pengambilan. Perintah ini akan mengambil semua data di bawah tolok ukur ke direktori data mentah. Sama seperti sebelumnya, setelah mengambil data baru, Anda dapat dengan mudah membuat tabel struktur yang sama dengan menjalankan membuat perintah tabel.
Kontributor
Orang -orang berikut telah berkontribusi pada aplikasi ini dan kertas:
- Chungha Sung (SCH8906/AT/VT/EDU)
- Markus Kusano (mukusano/at/vt/edu)
- Nishant Sinha
- Chao Wang (chaowang/at/vt/edu)
Dependensi program
Lingkungan
- Kami hanya menguji program ini di Ubuntu 12.04
- Kami belum memeriksanya dengan versi Ubuntu lainnya
Untuk hanya menjalankan analisis statis untuk menjalankan hubungan DOM-dependency, ia membutuhkan ketergantungan ini:
- Z3 (https://github.com/z3prover/z3), versi apa pun (diuji dengan 4.4.1).
- NodeJs (Untuk menginstal ini, ketik
sudo apt-get install nodejs ) - RealPath (untuk menginstal ini, ketik
sudo apt-get install realpath )
Untuk menguji dengan Artemis, Anda harus menginstal versi Artemis yang dimodifikasi terlebih dahulu.
- Anda dapat mengikuti instruksi di bawah direktori yang dimodifikasi Artemis untuk menginstalnya (kadang-kadang sulit untuk dipasang dengan benar, namun karena batasan ukuran kami tidak dapat memberikan versi yang sepenuhnya dikompilasi).
- Anda harus menggunakan versi yang kami berikan karena versi ini dimodifikasi untuk membandingkan versi Artemis sebelumnya dan versi yang dimodifikasi dari Artemis yang menggunakan hubungan ketergantungan dari program kami.
Tautan untuk VM (file OVA dari kotak virtual) dengan JSDEP diinstal (https://drive.google.com/open?id=1o70kdlfwhan4j06y5nhtqopbqiqciyrq). Namun, ini telah diperbarui sejak lama, jadi mungkin ada beberapa masalah.
PENGGUNAAN
===== Anda harus menginstal versi Artemis yang dimodifikasi yang kami berikan untuk menjalankan comand di bawah ini =====
- buat file run-artemis = [nama file] iter = [iterasi]
- Anda harus menjalankan analisis ketergantungan untuk mendapatkan dep.txt terlebih dahulu
- Jalankan versi Artemis sebelumnya dengan file yang ditentukan dan nomor iterasi yang ditentukan
- buat run-artemis-all iter = [iterasi]
- Anda harus menjalankan analisis ketergantungan untuk mendapatkan dep.txt terlebih dahulu
- Jalankan versi Artemis sebelumnya dengan semua file dengan nomor interaksi yang ditentukan
Bagaimana cara menafsirkan dep.txt?
Jika Anda menjalankan program, Anda dapat melihat file bernama DEP.txt file di bawah direktori info.
Ada garis teks, dan setiap hubungan depedensi terdiri dari 4 baris teks.
Baris pertama dan kedua menunjukkan nama DOM, dan baris ketiga dan keempat menunjukkan jenis acara.
Misalnya, jika konten file adalah 1 DOM1 2 Klik 3 DOM2 4 Mousemove
DOM1 dan DOM2 adalah nama node DOM dan klik dan mousemove adalah jenis acara untuk setiap DOM.
Arti dari empat baris ini adalah mousemove of test2 tergantung pada klik test1.
Setiap empat baris terkait (misalnya 1 4, 5 8 ...)