iWAL

advertisement
iWAL
(intuitive Web Automation Language)
Ashima Arora
: System Integrator
Nithin Reddy
: Project Manager
Pranita Dewan
: System Architect
Priyanka Singh : System Tester
Rafica AR
: Language Guru
Your wish is
my
command!
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
Demo!
Syntactic Constructs
Data Types
Loops
Conditionals
Functions
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…
print()
Password
Input()
clickE()
getPageText()
writeTo
File()
clickLink()
sleep()
inputE()
Architecture
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
1. “make filename” on terminal.
2. iWAL program compiled.
3. “make run” on terminal.
4. 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
A few test cases for intrinsic functions…
Project Management
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
# of commits
Project Management
Date
Github Commits By Date
Day of the week
Project Management
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
Frustrated Project Manager..
Special Thanks to:
Prof. Alfred Aho
and
Junde Huang
Our repo on Github: https://github.com/rafica/iWAL
Download