330 likes | 519 Views
iWAL. Your wish is my command!. (intuitive Web Automation Language). Ashima Arora : System Integrator Nithin Reddy : Project Manager Pranita Dewan : System Architect Priyanka Singh : System Tester Rafica AR : Language Guru. Motivation.
E N D
iWAL Your wish is my command! (intuitive Web Automation Language) AshimaArora: System Integrator Nithin Reddy : Project Manager PranitaDewan : System Architect Priyanka Singh : System Tester Rafica AR : Language Guru
Motivation • Make web browser automation simpler and more productive • Automate monotonous tasks on the web easily • Wide spectrum of users, not familiar with advanced programming • Save time • Have fun!
What is iWAL? A simple programming language designed to assist amateur programmers in writing programs that make web-browsing automatic, time-saving and a fun experience! tabE(..,..,..,) mainYacc()
Sample iWAL program Start the browser Open the web page Accept username Accept password Input username & password Click login button
Data Types int double boolean string
Loops repeat loop until loop
Functions • User-defined • Inbuilt- a whole suite of functions for the iWAL user! You can write your own functions! A whole set of inbuilt functions and more!
Some more inbuilt funcs… Password Input() print() clickE() getPageText() clickLink() writeToFile() sleep() inputE()
Type Checking • Perform type checking by traversing the AST generated by the parser. • Variable assignment • Function definition • Function call • Operations on appropriate types • if-else constructs • Type checking in loops • Use after declaration
Scope Checking Information for variables and functions in scope 2 Information for variables and functions in scope 1 Scope = 2 Scope = 1 Scope = 0 Global scope Information for variables and functions in scope 0 Symbol Table
Development Environment • PLY 3.4-2build1 • Python 2.7.3 • Java SE 6 (1.6.0) • Selenium 2.39.0.2 • Local Mac/Windows • IDLE
Runtime Environment “make filename” on terminal. iWAL program compiled. “make run” on terminal. Java code is run.
Testing Methodology • Incremental Approach • Unit Testing • Peer Review • Regression Testing Challenges • The grammar evolved... • Code size grew bigger! • Integration issues
Test Plan • Used Python’s unittest testing framework • Tested ilexer,iyaccer,intrinsic functions & final code • ilexer:- Used several equality assertions to check correctness. • iyaccer:- Used test cases written in testcases file to generate AST and final code. Output files inspected by a team member. • Intrinsic functions:- Test cases written. Verified by a team member
testing_ilexer.py Output of Test run
testing_iyaccer.py Output of Test run
Project Management • Weekly meetings with the team • Scheduled meetings with our mentor Junde • Documents sharing over Google Drive • Collaborative coding, version control over Github • Discussions over whatsapp group • Report writing on sharelatex.com
Project Management # of commits Date Github Commits By Date
Project Management Day of the week Time of the day
What worked & What didn’t • What worked well: • Achieved most of what we envisioned • Fun, satisfying experience! • What did not: • Should have listened to Prof. and started even sooner! • Hard time narrowing down problem domain
Lessons Learnt… • Ashima:- Keep an open mind and be a good listener. • Nithin:- It's easy to get good players. Getting them to play together, that’s the hard part. • Pranita:- Disagreements are a part of any group project. Try to resolve them logically and amicably. • Priyanka:- There is a lot of learning to take from group discussions and brainstorming sessions. If you're stuck at a point, take a second opinion. • Rafica:- Have regular meetings with your mentors. Their insights can help a lot.
Why iWAL? • Intuitive • Simplifies web automation • Wide applicability • Powerful built-in functions
Special Thanks to: Prof. Alfred Ahoand Junde Huang Our repo on Github: https://github.com/rafica/iWAL