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 ของเว็บแอปพลิเคชันรวมถึงการควบคุมแบบดั้งเดิมและการพึ่งพาข้อมูลโดยใช้ข้อ จำกัด DataLog
มันสำรวจไฟล์ JavaScript หนึ่งไฟล์แบบคงที่และค้นหาความสัมพันธ์ระหว่างสองเหตุการณ์ของ DOMS
เครื่องมือนี้รวมถึงอาร์ทิมิสรุ่นที่แก้ไขเพื่อแสดงการประเมินตามที่นำเสนอในกระดาษ FSE (ปรากฏ)
ลักษณะของเครื่องมือนี้
- นามแฝงแบบคงที่และ interprocedural
- เครื่องมือนี้ไม่รองรับ dom-alias anlaysis
- เครื่องมือนี้ไม่รองรับการสกัด JavaScript จาก HTML (JavaScripts ทั้งหมดสกัดด้วยตนเองสำหรับมาตรฐานที่เรามี)
โครงสร้างของ JSDEP
- ในรูปนี้ไดเรกทอรีทั้งหมดของที่เก็บข้อมูลที่เรามีจะแสดงด้วยโฟลเดอร์และไฟล์เอาต์พุตจะแสดงด้วยไอคอน Notepad และคำสั่งถัดจากลูกศรเป็นสคริปต์จริงที่คุณสามารถใช้ใน JSDEP ส่วนใหญ่มีสามส่วนใน JSDEP:
- การวิเคราะห์ DOM - ส่วนนี้มีการวิเคราะห์หลักของเรา ประกอบด้วยไดเรกทอรี 3 ไดเรกทอรี (SRC, Z3_RULES, NODE_MODULES) หลังจากติดตั้งการพึ่งพาทั้งหมดเมื่อคุณเรียกใช้สคริปต์ชื่อ Make Build-dep ด้วยชื่อไฟล์หรือสร้าง build-dep-all การวิเคราะห์จะสร้าง 3 ไฟล์ (dep.txt, numconstraints.txt, z3.time) ภายใต้ไดเร็กทอรีข้อมูลของแต่ละเบนช์มาร์ก ผลการพึ่งพาถูกพิมพ์ใน dep.txt และเวลาการวิเคราะห์ของแต่ละไฟล์จะถูกบันทึกใน z3.time นอกจากนี้จำนวนข้อ จำกัด ที่สร้างขึ้นจะถูกบันทึกไว้ใน numconstraints.txt
- Modified Artemis - เพื่อให้ผู้ใช้ตรวจสอบประโยชน์ของการวิเคราะห์ของเราเราได้จัดทำ Artemis ที่ปรับเปลี่ยนเพื่อใช้ข้อมูลที่เรามี ก่อนที่จะเรียกใช้อาร์ทิมิสคุณต้องติดตั้ง หลังจากที่คุณติดตั้งอาร์ทิมิสเวอร์ชันที่แก้ไขแล้วคุณสามารถเปรียบเทียบสองเวอร์ชันได้ ด้วยการเรียกใช้คำสั่งทำให้ run-artemis ด้วยชื่อไฟล์หรือทำให้ Run-Artemis-all ใช้ dep.txt ภายใต้แต่ละเกณฑ์มาตรฐานและสร้างไฟล์สองไฟล์ภายใต้ไดเรกทอรี Artemis-hesult สำหรับแต่ละเกณฑ์มาตรฐาน old_artemis.stdout เป็นผลลัพธ์ของอาร์ทิมิสรุ่นก่อนหน้าและ New-Artemis.stdout เป็นเอาต์พุตของ Artemis รุ่นแก้ไขซึ่งใช้ข้อมูลใน dep.txt
- Raw -Data - ไดเรกทอรีนี้มีไว้สำหรับผู้ใช้ที่ต้องการสร้างตารางโดยไม่ต้องติดตั้งและเรียกใช้การวิเคราะห์ของเรา ข้อมูลทั้งหมดได้รับการอัปโหลดและโครงสร้างของไดเรกทอรีนี้เหมือนกับหนึ่งในเกณฑ์มาตรฐาน หากคุณเรียกใช้คำสั่งทำตารางที่ 1 ทำตารางที่ 2 และทำตารางที่ 3 คุณสามารถใช้แต่ละตารางที่ใช้ในกระดาษ ตารางจะถูกพิมพ์บนเทอร์มินัลและแบบฟอร์มสำหรับน้ำยาง ดังนั้นหากคุณคัดลอกสิ่งพิมพ์และวางลงในน้ำยางมันจะแสดงตารางเดียวกันกับที่เราแสดงในกระดาษ และสำหรับผู้ที่ต้องการสร้างตารางที่สร้างข้อมูลใหม่เราให้คำสั่งอีกหนึ่งคำสั่ง คำสั่งนี้จะดึงข้อมูลทั้งหมดภายใต้มาตรฐานไปยังไดเรกทอรี DATA RAW เช่นเดียวกับก่อนหน้านี้หลังจากดึงข้อมูลใหม่คุณสามารถสร้างตารางโครงสร้างเดียวกันได้อย่างง่ายดายโดยการเรียกใช้คำสั่งตาราง
ผู้มีส่วนร่วม
คนต่อไปนี้มีส่วนร่วมในการใช้งานนี้และกระดาษ:
- Chungha Sung (SCH8906/AT/VT/EDU)
- Markus Kusano (mukusano/at/vt/edu)
- Nishant Sinha
- Chao Wang (Chaowang/at/vt/edu)
การพึ่งพาโปรแกรม
สิ่งแวดล้อม
- เราทดสอบโปรแกรมนี้ใน Ubuntu 12.04 เท่านั้น
- เรายังไม่ได้ตรวจสอบกับ Ubuntu อื่น ๆ
ในการดำเนินการวิเคราะห์แบบคงที่เพียงเพื่อเรียกใช้ความสัมพันธ์แบบพึ่งพาอาศัยกันมันต้องการการพึ่งพาเหล่านี้:
- Z3 (https://github.com/z3prover/z3), เวอร์ชันใดก็ได้ (ทดสอบด้วย 4.4.1)
- nodejs (หากต้องการติดตั้งนี้ให้พิมพ์
sudo apt-get install nodejs ) - RealPath (ในการติดตั้งสิ่งนี้ให้พิมพ์
sudo apt-get install realpath )
ในการทดสอบกับอาร์ทิมิสคุณต้องติดตั้งอาร์ทิมิสรุ่นที่แก้ไขก่อน
- คุณสามารถทำตามคำแนะนำภายใต้ไดเรกทอรีที่ดัดแปลงมาจากอาร์ทิมิสเพื่อติดตั้ง (บางครั้งก็ยากที่จะติดตั้งอย่างถูกต้องอย่างไรก็ตามเนื่องจากข้อ จำกัด ขนาดเราไม่สามารถให้รุ่นที่รวบรวมได้อย่างสมบูรณ์)
- คุณต้องใช้เวอร์ชันที่เรามีให้เพราะรุ่นนี้ได้รับการแก้ไขเพื่อเปรียบเทียบอาร์ทิมิสเวอร์ชันก่อนหน้าและอาร์ทิมิสรุ่นที่แก้ไขซึ่งใช้ความสัมพันธ์แบบพึ่งพาของโปรแกรมของเรา
ลิงก์สำหรับ VM (ไฟล์ OVA ของกล่องเสมือน) พร้อมติดตั้ง JSDEP (https://drive.google.com/open?id=1o70kdlfwhan4j06y5nhtqopbqiqciyrq) อย่างไรก็ตามสิ่งนี้ได้รับการปรับปรุงมานานแล้วดังนั้นอาจมีปัญหาบางอย่าง
การใช้งาน
===== คุณต้องติดตั้ง Artemis เวอร์ชันที่แก้ไขแล้วเราให้การเรียกใช้ comands เหล่านี้ด้านล่าง =====
- สร้าง file-artemis file = [filename] iter = [การวนซ้ำ]
- คุณต้องทำการวิเคราะห์การพึ่งพาเพื่อรับ dep.txt ก่อน
- เรียกใช้อาร์ทิมิสเวอร์ชันก่อนหน้าด้วยไฟล์ที่ระบุและหมายเลขการวนซ้ำที่ระบุ
- ทำ artemis-all iter = [การวนซ้ำ]
- คุณต้องทำการวิเคราะห์การพึ่งพาเพื่อรับ dep.txt ก่อน
- เรียกใช้อาร์ทิมิสเวอร์ชันก่อนหน้าด้วยไฟล์ทั้งหมดที่มีหมายเลขแทรกที่ระบุ
จะตีความ dep.txt ได้อย่างไร?
หากคุณเรียกใช้โปรแกรมคุณสามารถดูไฟล์ชื่อ dep.txt ได้ภายใต้ไดเรกทอรีข้อมูล
มีบรรทัดของข้อความและความสัมพันธ์ระหว่างกันแต่ละรายการประกอบด้วยข้อความ 4 บรรทัด
บรรทัดแรกและบรรทัดที่สองระบุชื่อของ DOM และบรรทัดที่สามและสี่ระบุประเภทของเหตุการณ์
ตัวอย่างเช่นหากเนื้อหาไฟล์คือ 1 dom1 2 คลิก 3 dom2 4 mousemove
DOM1 และ DOM2 เป็นชื่อของโหนด DOM และคลิกและ Mousemove เป็นประเภทของเหตุการณ์สำหรับแต่ละ DOM
ความหมายของสี่บรรทัดเหล่านี้คือ mousemove ของ test2 ขึ้นอยู่กับการคลิกของ test1
แต่ละบรรทัดมีความสัมพันธ์กัน (เช่น 1 4, 5 8 ... )