SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Outline
Uniqueness of web app testing
Heterogonous system
Dynamic pages
Load
Security
Selenium WebDriver
Course project 4
Web application architecture
Heterogeneous system
Front end
 Browser: IE, Firefox, Chrome, Safari…
Server side
 Application Server
 Database Server
 File System
 ……
Heterogeneous system
Front end
HTML, JavaScript, Adobe Flash……
HTML
JavaScript
Page in Browser
Source behind
Heterogeneous system
Should test all involved parts
Everything can go wrong…
However, only front end is accessible for tests
Can not directly test the Server code and SQL
Have to drive the execution and test
 Frontend
 HTML: Malformed HTML page? (demo)
 JavaScript: Runtime Errors? (demo)
 Server script
 PHP, Java…: Runtime Errors? (demo)
 SQL: Malformed SQL query string? (demo)
Test from the front end
Good things
Hide the complexity of the backend
Uniformed interface
Can put a robot in the front end and automate the tests
Bad things
The front end is not trustable
 Crafted malicious requests
Good things of testing from the
front end
 Automated web app testing
 Compare to commend-line program testing…
 Sensitive to input values (the same)
 GUI testing: event driven (the difference)
 “Button A” then “Button B”  OK
 “Button B” then “Button A”  FAIL
 The robot should be able to
 Provide input values
 Simulate user actions
 Selenium
 A tool set automates web app testing across platforms
 Can simulate user interactions in browser
 Two components
 Selenium IDE
 Selenium WebDriver (aka. Selenium 2)
Selenium IDE
Firefox extension
Easy record and replay
Debug and set breakpoints
Save tests in HTML,
WebDriver and other
formats.
Selenium IDE test cases
Selenium saves all information in an HTML table format
Each record consists of:
Command – tells Selenium what to do (e.g. “open”, “type”, “click”,
“verifyText”)
Target – tells Selenium which HTML element a command refers to
(e.g. textbox, header, table)
Value – used for any command that might need a value of some
kind (e.g. type something into a textbox)
How to record/replay with
Selenium IDE
1. Start recording in Selenium IDE
2. Execute scenario on running web application
3. Stop recording in Selenium IDE
4. Verify / Add assertions
5. Replay the test.
Selenium IDE Demo……
Bad things of testing from the front end
The front end is not trustable
Front end code can be accessed to anybody
They can infer the input parameters
 Crafted requests!
Demo
Front end limits the length of the input values
Front end limits the content of the input values
Front end limits the combination of the input values
Uniqueness 2: Dynamic pages
Client page is dynamic
 It can change itself in the runtime
 HTML can be modified by JavaScript
 JavaScript can modify itself
 Demo
Server script is dynamic
 Client pages are constructed in the runtime
 A same server script can produce completely different client
pages
 Demo
 SchoolMate
Uniqueness 3: Performance
Performance is crucial to the success of a web app
 Recall the experience to register for a class in the first days of
the semester…
 Are the servers powerful enough?
Performance testing evaluates system performance under
normal and heavy usage
 Load testing
 For expected concurrent number of users
 Stress testing
 To understand the upper limits of capacity
Performance testing can be automated
Uniqueness 4: Security
Web app usually deals with sensitive info, e.g.
Credit card number
SSN
Billing / Shipping address
Security is the biggest concern
Security testing should simulate possible attacks
Uniqueness 4: Security
SQL Injection
The untrusted input is used to construct dynamic SQL
queries.
E.g, update my own password
$str = "UPDATE users SET password = ” “ . $_POST['newPass’] .
“” WHERE username =”“ . $_POST['username'] . “””;
mysql_query( $str );
$_POST['newPass’] = pass, $_POST['username'] = me
Query String: UPDATE users SET password = “pass” WHERE username =“me”
$_POST['newPass’] = pass, $_POST['username'] = “ OR 1=1 --
Query String: UPDATE users SET password = “pass” WHERE username =“” OR 1=1 --”
Normal Case
Attack
PHP ScriptPHP Script
Uniqueness 4: Security
Cross Site Scripting (XSS)
The untrusted input is used to construct dynamic
HTML pages.
The malicious JS injected executes in victim’s browser
The malicious JS can steal sensitive info
Demo
Solution: Never trust user inputs
Design test cases to simulate attacks
Outline
Uniqueness of web app testing
Heterogonous system
Dynamic pages
Load
Security
Selenium WebDriver
Course project 4
Limitation of Selenium IDE
No multiple browsers support
It runs only in Mozilla Firefox.
No manual scripts
E.g. conditions and Loops for Data Driven Testing
Fancy test cases  Selenium WebDriver
Selenium WebDriver (Selenium 2)
 Selenium-WebDriver
 A piece of program
 Control the browser by programming
 More flexible and powerful
 Selenium-WebDriver supports multiple browsers in multiple
platforms
 Google Chrome 12.0.712.0+
 Internet Explorer 6+
 Firefox 3.0+
 Opera 11.5+
 Android – 2.3+ for phones and tablets
 iOS 3+ for phones
 iOS 3.2+ for tablets
Selenium WebDriver
WebDriver is designed to providing a simpler and
uniformed programming interface
Same WebDriver script runs for different platforms
Support multiple programming language:
Java, C#, Python, Ruby, PHP, Perl…
It’s efficient
WebDriver leverages each browser’s native support for
automation.
What Selenium can do
A solution for the automated testing
Simulate user actions
Functional testing
 Create regression tests to verify functionality and user
acceptance.
Browser compatibility testing
 The same script can run on any Selenium platform
Load testing
Stress testing
How to use Selenium WebDriver
(1) Go to a page
(2) Locate an element
(3) Do something with that element
......
(i) Locate an element
(i+1) Do something with that element
(i+2) Verify / Assert the result
Demo: Verify page title
public static void main( String[] args )
{
// Create a new instance of the Firefox driver
WebDriver driver = new FirefoxDriver();
// (1) Go to a page
driver.get("http://www.google.com");
// (2) Locate an element
WebElement element = driver.findElement(By.name("q"));
// (3-1) Enter something to search for
element.sendKeys("Purdue Univeristy");
// (3-2) Now submit the form. WebDriver will find the form for us from the element
element.submit();
// (3-3) Wait up to 10 seconds for a condition
WebDriverWait waiting = new WebDriverWait(driver, 10);
waiting.until( ExpectedConditions.presenceOfElementLocated( By.id("pnnext") ) );
// (4) Check the title of the page
if( driver.getTitle().equals("purdue univeristy - Google Search") )
System.out.println("PASS");
else
System.err.println("FAIL");
//Close the browser
driver.quit();
}
How to locate an element
 By id
 HTML: <div id="coolestWidgetEvah">...</div>
 WebDriver:
 driver.findElement( By.id("coolestWidgetEvah") );
 By name
 HTML: <input name="cheese" type="text"/>
 WebDriver: driver.findElement( By.name("cheese") );
 By Xpath
 HTML
 <html>
 <input type="text" name="example" />
 <input type="text" name="other" />
 </html>
 WebDriver: driver.findElements( By.xpath("//input") );
 There are plug-ins for firefox/chrome to automatically display the Xpath

Timeissue
There are delays between submitting a request and
receiving the response
We can wait until the response page is loaded
Robot doesn’t know!
In WebDriver, sometimes it doesn’t work if
 Submit a request
 Verify the response immediately
Solution:
 Simulate the wait. Wait until some HTML object appears
 Demo
Outline
What to test for a web application
Test web app with selenium
What’s Selenium?
Why Selenium?
How to use Selenium
Course project 4
Course Project 4
Test a functionality without the source
The subject web application
“Add New Class” in “SchoolMate”
Course Project 4
Part 1: overview
Design test cases against the requirement
 The tests should consider
 all possible cases
 equivalence class partitioning
Implement Selenium WebDriver Script for “Add new
class”
Your testYour test
casescases
Your WebDriverYour WebDriver
test templatetest template
inputinput outputoutput
TestTest
resultsresults
Part 1: requirement analysis
Requirement for the “add” function
After clicking the “Add class” button…
[R-6] The class record added is successfully shown in
the table.
[R-7] The values are exactly the same as those were
entered or selected.
Part 1: Implement WebDriver
Script
 In WebDriver script, Simulate the user action
Navigate to the subject page
Enter values into textboxs based on input values
Select options based on input values
Click the “add class” button
Check the result against the requirements
Run all your test cases and report the results.
Course Project 4
Part 2: Pair wise testing
Use an existing pair wise testing tool fire-eye
Largely you may reuse the WebDriver template in Part 1
Your testYour test
casescases
Your WebDriverYour WebDriver
test templatetest template
inputinput outputoutput
TestTest
resultresult
Test casesTest cases
generatedgenerated
ConvertConvert

Weitere ähnliche Inhalte

Was ist angesagt?

Selenium ide made easy
Selenium ide made easySelenium ide made easy
Selenium ide made easy
Narayanan Palani
 
Selenium ide1
Selenium ide1Selenium ide1
Selenium ide1
mindqqa
 
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Applitools
 

Was ist angesagt? (19)

Interview Question & Answers for Selenium Freshers | LearningSlot
Interview Question & Answers for Selenium Freshers | LearningSlotInterview Question & Answers for Selenium Freshers | LearningSlot
Interview Question & Answers for Selenium Freshers | LearningSlot
 
Selenium - The page object pattern
Selenium - The page object patternSelenium - The page object pattern
Selenium - The page object pattern
 
Interview question & Answers for 3+ years experienced in Selenium | LearningSlot
Interview question & Answers for 3+ years experienced in Selenium | LearningSlotInterview question & Answers for 3+ years experienced in Selenium | LearningSlot
Interview question & Answers for 3+ years experienced in Selenium | LearningSlot
 
Selenium Basics Tutorial
Selenium Basics TutorialSelenium Basics Tutorial
Selenium Basics Tutorial
 
Selenium webdriver interview questions and answers
Selenium webdriver interview questions and answersSelenium webdriver interview questions and answers
Selenium webdriver interview questions and answers
 
Selenium ide made easy
Selenium ide made easySelenium ide made easy
Selenium ide made easy
 
Selenium presentation
Selenium presentationSelenium presentation
Selenium presentation
 
Selenium and The Grinder
Selenium and The GrinderSelenium and The Grinder
Selenium and The Grinder
 
PhpUnit & web driver
PhpUnit & web driverPhpUnit & web driver
PhpUnit & web driver
 
Selenium Interview Questions and Answers | Selenium Tutorial | Selenium Train...
Selenium Interview Questions and Answers | Selenium Tutorial | Selenium Train...Selenium Interview Questions and Answers | Selenium Tutorial | Selenium Train...
Selenium Interview Questions and Answers | Selenium Tutorial | Selenium Train...
 
Selenium Overview
Selenium OverviewSelenium Overview
Selenium Overview
 
Automation framework using selenium webdriver with java
Automation framework using selenium webdriver with javaAutomation framework using selenium webdriver with java
Automation framework using selenium webdriver with java
 
Selenium ide1
Selenium ide1Selenium ide1
Selenium ide1
 
Selenium
SeleniumSelenium
Selenium
 
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium MeetupSelenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
 
Foundation selenium java
Foundation selenium java Foundation selenium java
Foundation selenium java
 
Selenium Webdriver Interview Questions
Selenium Webdriver Interview QuestionsSelenium Webdriver Interview Questions
Selenium Webdriver Interview Questions
 
How to Configure Selenium WebDriver (java)
How to Configure Selenium WebDriver (java)How to Configure Selenium WebDriver (java)
How to Configure Selenium WebDriver (java)
 
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
 

Ähnlich wie Selenium

#2 integration + ui tests
#2 integration + ui tests#2 integration + ui tests
#2 integration + ui tests
eleksdev
 
Selenium withnet
Selenium withnetSelenium withnet
Selenium withnet
Vlad Maniak
 
Steps to write Selenium
Steps to write Selenium  Steps to write Selenium
Steps to write Selenium
Rohit Thakur
 

Ähnlich wie Selenium (20)

Selenium
SeleniumSelenium
Selenium
 
selenium.ppt
selenium.pptselenium.ppt
selenium.ppt
 
selenium.ppt
selenium.pptselenium.ppt
selenium.ppt
 
selenium.ppt
selenium.pptselenium.ppt
selenium.ppt
 
Selenium
SeleniumSelenium
Selenium
 
Web UI Tests: Introduce UI tests using Selenium
Web UI Tests: Introduce UI tests using Selenium Web UI Tests: Introduce UI tests using Selenium
Web UI Tests: Introduce UI tests using Selenium
 
Selenium training
Selenium trainingSelenium training
Selenium training
 
#2 integration + ui tests
#2 integration + ui tests#2 integration + ui tests
#2 integration + ui tests
 
Automated Web Testing using JavaScript
Automated Web Testing using JavaScriptAutomated Web Testing using JavaScript
Automated Web Testing using JavaScript
 
Selenium -Test automation for web applications
Selenium -Test automation for web applicationsSelenium -Test automation for web applications
Selenium -Test automation for web applications
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
 
Whys and Hows of Automation
Whys and Hows of AutomationWhys and Hows of Automation
Whys and Hows of Automation
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
 
Selenium Automation
Selenium AutomationSelenium Automation
Selenium Automation
 
QA Fest 2014. Ярослав Пернеровский. Appium - два в одном. рецепт приготовлени...
QA Fest 2014. Ярослав Пернеровский. Appium - два в одном. рецепт приготовлени...QA Fest 2014. Ярослав Пернеровский. Appium - два в одном. рецепт приготовлени...
QA Fest 2014. Ярослав Пернеровский. Appium - два в одном. рецепт приготовлени...
 
Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!
Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!
Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!
 
Selenium withnet
Selenium withnetSelenium withnet
Selenium withnet
 
Selenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And AnswersSelenium Automation Testing Interview Questions And Answers
Selenium Automation Testing Interview Questions And Answers
 
Selenium
SeleniumSelenium
Selenium
 
Steps to write Selenium
Steps to write Selenium  Steps to write Selenium
Steps to write Selenium
 

Kürzlich hochgeladen

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Kürzlich hochgeladen (20)

ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 

Selenium

  • 1.
  • 2. Outline Uniqueness of web app testing Heterogonous system Dynamic pages Load Security Selenium WebDriver Course project 4
  • 3. Web application architecture Heterogeneous system Front end  Browser: IE, Firefox, Chrome, Safari… Server side  Application Server  Database Server  File System  ……
  • 4. Heterogeneous system Front end HTML, JavaScript, Adobe Flash…… HTML JavaScript Page in Browser Source behind
  • 5. Heterogeneous system Should test all involved parts Everything can go wrong… However, only front end is accessible for tests Can not directly test the Server code and SQL Have to drive the execution and test  Frontend  HTML: Malformed HTML page? (demo)  JavaScript: Runtime Errors? (demo)  Server script  PHP, Java…: Runtime Errors? (demo)  SQL: Malformed SQL query string? (demo)
  • 6. Test from the front end Good things Hide the complexity of the backend Uniformed interface Can put a robot in the front end and automate the tests Bad things The front end is not trustable  Crafted malicious requests
  • 7. Good things of testing from the front end  Automated web app testing  Compare to commend-line program testing…  Sensitive to input values (the same)  GUI testing: event driven (the difference)  “Button A” then “Button B”  OK  “Button B” then “Button A”  FAIL  The robot should be able to  Provide input values  Simulate user actions  Selenium  A tool set automates web app testing across platforms  Can simulate user interactions in browser  Two components  Selenium IDE  Selenium WebDriver (aka. Selenium 2)
  • 8. Selenium IDE Firefox extension Easy record and replay Debug and set breakpoints Save tests in HTML, WebDriver and other formats.
  • 9. Selenium IDE test cases Selenium saves all information in an HTML table format Each record consists of: Command – tells Selenium what to do (e.g. “open”, “type”, “click”, “verifyText”) Target – tells Selenium which HTML element a command refers to (e.g. textbox, header, table) Value – used for any command that might need a value of some kind (e.g. type something into a textbox)
  • 10. How to record/replay with Selenium IDE 1. Start recording in Selenium IDE 2. Execute scenario on running web application 3. Stop recording in Selenium IDE 4. Verify / Add assertions 5. Replay the test. Selenium IDE Demo……
  • 11. Bad things of testing from the front end The front end is not trustable Front end code can be accessed to anybody They can infer the input parameters  Crafted requests! Demo Front end limits the length of the input values Front end limits the content of the input values Front end limits the combination of the input values
  • 12. Uniqueness 2: Dynamic pages Client page is dynamic  It can change itself in the runtime  HTML can be modified by JavaScript  JavaScript can modify itself  Demo Server script is dynamic  Client pages are constructed in the runtime  A same server script can produce completely different client pages  Demo  SchoolMate
  • 13. Uniqueness 3: Performance Performance is crucial to the success of a web app  Recall the experience to register for a class in the first days of the semester…  Are the servers powerful enough? Performance testing evaluates system performance under normal and heavy usage  Load testing  For expected concurrent number of users  Stress testing  To understand the upper limits of capacity Performance testing can be automated
  • 14. Uniqueness 4: Security Web app usually deals with sensitive info, e.g. Credit card number SSN Billing / Shipping address Security is the biggest concern Security testing should simulate possible attacks
  • 15. Uniqueness 4: Security SQL Injection The untrusted input is used to construct dynamic SQL queries. E.g, update my own password $str = "UPDATE users SET password = ” “ . $_POST['newPass’] . “” WHERE username =”“ . $_POST['username'] . “””; mysql_query( $str ); $_POST['newPass’] = pass, $_POST['username'] = me Query String: UPDATE users SET password = “pass” WHERE username =“me” $_POST['newPass’] = pass, $_POST['username'] = “ OR 1=1 -- Query String: UPDATE users SET password = “pass” WHERE username =“” OR 1=1 --” Normal Case Attack PHP ScriptPHP Script
  • 16. Uniqueness 4: Security Cross Site Scripting (XSS) The untrusted input is used to construct dynamic HTML pages. The malicious JS injected executes in victim’s browser The malicious JS can steal sensitive info Demo Solution: Never trust user inputs Design test cases to simulate attacks
  • 17. Outline Uniqueness of web app testing Heterogonous system Dynamic pages Load Security Selenium WebDriver Course project 4
  • 18. Limitation of Selenium IDE No multiple browsers support It runs only in Mozilla Firefox. No manual scripts E.g. conditions and Loops for Data Driven Testing Fancy test cases  Selenium WebDriver
  • 19. Selenium WebDriver (Selenium 2)  Selenium-WebDriver  A piece of program  Control the browser by programming  More flexible and powerful  Selenium-WebDriver supports multiple browsers in multiple platforms  Google Chrome 12.0.712.0+  Internet Explorer 6+  Firefox 3.0+  Opera 11.5+  Android – 2.3+ for phones and tablets  iOS 3+ for phones  iOS 3.2+ for tablets
  • 20. Selenium WebDriver WebDriver is designed to providing a simpler and uniformed programming interface Same WebDriver script runs for different platforms Support multiple programming language: Java, C#, Python, Ruby, PHP, Perl… It’s efficient WebDriver leverages each browser’s native support for automation.
  • 21. What Selenium can do A solution for the automated testing Simulate user actions Functional testing  Create regression tests to verify functionality and user acceptance. Browser compatibility testing  The same script can run on any Selenium platform Load testing Stress testing
  • 22. How to use Selenium WebDriver (1) Go to a page (2) Locate an element (3) Do something with that element ...... (i) Locate an element (i+1) Do something with that element (i+2) Verify / Assert the result
  • 23. Demo: Verify page title public static void main( String[] args ) { // Create a new instance of the Firefox driver WebDriver driver = new FirefoxDriver(); // (1) Go to a page driver.get("http://www.google.com"); // (2) Locate an element WebElement element = driver.findElement(By.name("q")); // (3-1) Enter something to search for element.sendKeys("Purdue Univeristy"); // (3-2) Now submit the form. WebDriver will find the form for us from the element element.submit(); // (3-3) Wait up to 10 seconds for a condition WebDriverWait waiting = new WebDriverWait(driver, 10); waiting.until( ExpectedConditions.presenceOfElementLocated( By.id("pnnext") ) ); // (4) Check the title of the page if( driver.getTitle().equals("purdue univeristy - Google Search") ) System.out.println("PASS"); else System.err.println("FAIL"); //Close the browser driver.quit(); }
  • 24. How to locate an element  By id  HTML: <div id="coolestWidgetEvah">...</div>  WebDriver:  driver.findElement( By.id("coolestWidgetEvah") );  By name  HTML: <input name="cheese" type="text"/>  WebDriver: driver.findElement( By.name("cheese") );  By Xpath  HTML  <html>  <input type="text" name="example" />  <input type="text" name="other" />  </html>  WebDriver: driver.findElements( By.xpath("//input") );  There are plug-ins for firefox/chrome to automatically display the Xpath 
  • 25. Timeissue There are delays between submitting a request and receiving the response We can wait until the response page is loaded Robot doesn’t know! In WebDriver, sometimes it doesn’t work if  Submit a request  Verify the response immediately Solution:  Simulate the wait. Wait until some HTML object appears  Demo
  • 26. Outline What to test for a web application Test web app with selenium What’s Selenium? Why Selenium? How to use Selenium Course project 4
  • 27. Course Project 4 Test a functionality without the source The subject web application “Add New Class” in “SchoolMate”
  • 28. Course Project 4 Part 1: overview Design test cases against the requirement  The tests should consider  all possible cases  equivalence class partitioning Implement Selenium WebDriver Script for “Add new class” Your testYour test casescases Your WebDriverYour WebDriver test templatetest template inputinput outputoutput TestTest resultsresults
  • 29. Part 1: requirement analysis Requirement for the “add” function After clicking the “Add class” button… [R-6] The class record added is successfully shown in the table. [R-7] The values are exactly the same as those were entered or selected.
  • 30. Part 1: Implement WebDriver Script  In WebDriver script, Simulate the user action Navigate to the subject page Enter values into textboxs based on input values Select options based on input values Click the “add class” button Check the result against the requirements Run all your test cases and report the results.
  • 31. Course Project 4 Part 2: Pair wise testing Use an existing pair wise testing tool fire-eye Largely you may reuse the WebDriver template in Part 1 Your testYour test casescases Your WebDriverYour WebDriver test templatetest template inputinput outputoutput TestTest resultresult Test casesTest cases generatedgenerated ConvertConvert