SlideShare a Scribd company logo
1 of 73
Download to read offline
Nicholas C. Zakas
Yahoo!, Inc.
YUIConf
November 9, 2010
Who's this guy?
@captain_picard
@slicknet
Who's this guy?
Principal Front End
Engineer
Contributor,
Creator of YUI Test
Author Lead Author Contributor Lead Author
YUI Test
How'd we get here?
Automated Integration Testing
with YUI Test (Talk)
October 2009
YUI Test Debut
July 2007 (YUI 2.3.0)
Async Testing
TestReporter
XML and JSON Test Formats
December 2007 (YUI 2.4.0)
Mock Objects
Friendly Test Names
September 2009 (YUI 3.0.0)
Test-Driven Development
with YUI Test (Talk)
October 2008
YUI Test Debut
July 2007 (YUI 2.3.0)
Getting started with
YUI Test (YUIBlog)
December 2008
Writing effective tests
(YUIBlog)
January 2009
Automation Hooks
JUnit XML and TAP Formats
April 2010 (YUI 3.1.0)
ZOMG!!!
Today
Yeti Released
August 2010
Today
YUI Test
Standalone Library
YUI Test
Selenium Driver
YUI Test
Coverage
Today
YUI Test
Standalone Library
YUI Test
Selenium Driver
YUI Test
Coverage
YUI Test Standalone Library has no
YUI dependencies
You can load it completely on its own – outside of YUI 2.x and YUI 3.x
Why?
To address a series of ongoing
problems
Problem
Inconsistencies across versions
YUI Test for YUI 2.x
YAHOO.tool.TestCase
YAHOO.tool.TestSuite
YAHOO.tool.TestRunner
YAHOO.tool.TestReporter
YAHOO.tool.TestManager
YAHOO.tool.TestFormat
YAHOO.util.Assert
YAHOO.util.ArrayAssert
YAHOO.util.DateAssert
YAHOO.util.ObjectAssert
YUI Test for YUI 3.x
Y.Test.Case
Y.Test.Suite
Y.Test.Runner
Y.Test.Reporter
Y.Test.Format
Y.Assert
Y.ArrayAssert
Y.DateAssert
Y.ObjectAssert
Y.Mock
Hmmmm...
Y.Test.Case
Y.Test.Suite
Y.Test.Runner
Y.Test.Reporter
Y.Test.Format
Y.Assert
Y.ArrayAssert
Y.DateAssert
Y.ObjectAssert
Y.Mock
YAHOO.tool.TestCase
YAHOO.tool.TestSuite
YAHOO.tool.TestRunner
YAHOO.tool.TestReporter
YAHOO.tool.TestManager
YAHOO.tool.TestFormat
YAHOO.util.Assert
YAHOO.util.ArrayAssert
YAHOO.util.DateAssert
YAHOO.util.ObjectAssert
YUI Test Standalone 1.0.0
YUITest.TestCase
YUITest.TestSuite
YUITest.TestRunner
YUITest.Reporter
YUITest.PageManager
YUITest.TestFormat
YUITest.Assert
YUITest.ArrayAssert
YUITest.DateAssert
YUITest.ObjectAssert
YUITest.Mock
Problem
I'd like to use YUI Test, but not YUI
Problem
Everyone else is doing it
What's it look like?
<script type="text/javascript"
src="yuitest.js"></script>
<script type="text/javascript">
var testCase = new YUITest.TestCase({
name: "Same ol' test case",
testSomething: function(){
YUITest.Assert.isTrue(true);
},
"This should work": function(){
YUITest.Assert.isTrue(works);
}
});
YUITest.TestRunner.add(testCase);
YUITest.TestRunner.run();
</script>
Familiar
Syntax!
var testSuite = new YUITest.TestSuite("name");
testSuite.add(testCase1);
testSuite.add(testCase2);
YUITest.TestRunner.add(testSuite);
YUITest.TestRunner.run();
Familiar
Syntax!
Not just a port!
API cleanup & bug fixes
YUITest.ObjectAssert
areEqual()
hasKey()
hasKeys()
ownsKey()
ownsKeys()
ownsNoKeys()
inheritsKey()
inheritsKeys()
ownsOrInheritsKey()
ownsOrInheritsKeys()
Friendlier Test Names
var testCase = new YUITest.TestCase({
name: "My Test Case",
"This should be a test": function(){
//this is a test in YUI Test for YUI 3.x
},
"As is this one": function(){
//this is not a test in YUI Test for YUI 3.x
//but is in YUI Test Standalone 1.0.0
}
});
Counting Asserts
var testCase = new YUITest.TestCase({
name: "My Test Case",
"This should be a test": function(){
//this test passes in YUI Test for YUI 3.x
//but fails in YUI Test Standalone 1.0.0
}
});
Beyond _should
var testCase = new YUITest.TestCase({
name: "My Test Case",
_should: { //old
"Another test": "Error message"
},
"Another test": function(){ //new
someFunction();
}
});
Beyond _should
var testCase = new YUITest.TestCase({
name: "My Test Case",
"Another test": function(){ //new
YUITest.Assert.throwsError("Error message",
someFunction);
}
});
What about the YUI 2.x and 3.x
versions?
YUI Test Standalone becomes the
core implementation of both
Today
YUI Test
Standalone Library
YUI Test
Selenium Driver
YUI Test
Coverage
Easy automation for continuous
integration
Hudson
Continuous build/testing system
Used to periodically build from source and
validate by running tests
http://hudson-ci.org/
?JUnit
Selenium
TAP
SelNG
Screen scrape
Hack
Hudson
?JUnit
TAP
SelNG
Screen scrape
Hack
Hudson
Selenium
Selenium
Web application testing system
Primarily used by QA organizations for
functional testing
http://seleniumhq.org/
http://seleniumhq.org/projects/remote-control/
Selenium Remote Control
Hudson Selenium
RC
?
Screen scraping to gather results = ick
Hudson Selenium
Driver
Selenium
RC
Selenium Driver
Three primary goals
Completely handle communication between
Hudson and Selenium RC
Yes, Uhura once wore yellow – focus, people
#1
#2
Extract as much data as possible from tests
Return the results in a format that Hudson can consume and report on
#3
Don't force already-existing tests to change
Seriously, it's just wrong
Test Pages
var testCase = new YUITest.TestCase({
name: "My Test Case",
//...
});
YUITest.TestRunner.add(testCase);
YUITest.TestRunner.run();
Test pages must automatically begin
running tests without additional interaction
Command Line
Usage: java -jar yuitest-selenium-driver-x.y.z.jar [options] [test files]
Global Options
-h, --help Displays this information.
--browsers <browsers> Run tests in these browsers (comma-delimited).
--conf <file> Load options from <file>.
--coveragedir <dir> Output coverage files to <dir>.
--erroronfail Indicates that a test failure should cause
an error to be reported to the console.
--host <host> Use the Selenium host <host>.
--port <port> Use <port> port on the Selenium host.
--resultsdir <dir> Output test result files to <dir>.
--silent Don't output test results to the console.
--tests <file> Loads test info from <file>.
-v, --verbose Display informational messages and warnings.
Examples
java -jar yuitest-selenium-driver.jar
http://www.example.com/tests/test_ui
java -jar yuitest-selenium-driver.jar --host
selenium.example.com --port 9080
http://www.example.com/tests/test_ui
java -jar yuitest-selenium-driver.jar --browsers
*firefox,*iexplore http://www.example.com/tests/test_ui
http://www.example.com/tests/test_util
java -jar yuitest-selenium-driver.jar --tests tests.xml
Tests File
<?xml version="1.0"?>
<yuitest>
<tests base="http://www.example.com/tests/" timeout="10000">
<url>test_core</url>
<url timeout="30000">test_util</url>
<url>test_ui</url>
</tests>
</yuitest>
Easiest way to specify multiple tests to
execute on the same host machine
Demo
(Sorry Slideshare viewers)
Today
YUI Test
Standalone Library
YUI Test
Selenium Driver
YUI Test
Coverage
What is code coverage?
I dunna know what
happened, all my tests
passed!
What was it you were
testing, Mr. Scott?
...
Code coverage tells you what code
executed during testing
Code can have multiple paths
function doSomething(){
if (condition){
doSomethingElse();
} else {
doAThirdThing();
}
}
The goal of unit testing is to exercise each path
The goal of code coverage is to identify if you did
doSomething()
condition
doSomethingElse() doAThirdThing()
doSomething()
condition
doSomethingElse() doAThirdThing()
doSomething()
condition
doAThirdThing()doSomethingElse()
Step One
Instrument JavaScript
Coverage covered-file.jsfile.js
Command Line
Usage: java -jar yuitest-coverage-x.y.z.jar [options] [file|dir]
Global Options
-h, --help Displays this information.
--charset <charset> Read the input file using <charset>.
-d, --dir Input and output (-o) are both directories.
-v, --verbose Display informational messages and warnings.
-o <file|dir> Place the output into <file|dir>. Defaults to
stdout.
Step Two
Run tests with instrumented
JavaScript
Step Three
Generate reports
Extract Coverage Data Yourself
//object results
results = YUITest.TestRunner.getCoverage();
//standard JSON results format
results = YUITest.TestRunner.getCoverage(
YUITest.CoverageFormat.JSON);
//alternate format
results = YUITest.TestRunner.getCoverage(
YUITest.CoverageFormat.XebugJSON);
Coverage
Report
Reportresults.json
Command Line
Usage: java -jar yuitest-coverage-report-x.y.z.jar [options] [file]
Global Options
-h, --help Displays this information.
--format <format> Output reports in <format>. Defaults to HTML.
-v, --verbose Display informational messages and warnings.
-o <file|dir> Place the output into <file|dir>.
CoverageSelenium
Driver
Selenium Driver automatically pulls in coverage data
Complete Testing Solution
YUI Test
Standalone Library
YUI Test
Selenium Driver
YUI Test
Coverage
JavaScript continuous integration testing system
Compatibility
• YUI Test Standalone Library 1.0.0
• YUI Test for YUI 3.1.1+
• YUI Test for YUI 2.8.1+
Contribute
• GitHub:
http://github.com/yui/yuitest/
• YUILibrary:
http://yuilibrary.com/projects/yuitest/
• YUIBlog Announcement:
http://www.yuiblog.com/blog/2010/11/09/intro
ducing-the-new-yui-test
Questions?
Etcetera
• My blog:
www.nczonline.net
• Twitter:
@slicknet
• These Slides:
http://slideshare.net/nzakas/
• Rate Me:
http://spkr8.com/t/4999
Creative Commons Images Used
• http://www.flickr.com/photos/anks/3311228772/
• http://www.flickr.com/photos/eschipul/4716821041/

More Related Content

What's hot

Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!Nicholas Zakas
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010Nicholas Zakas
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Nicholas Zakas
 
High Performance Snippets
High Performance SnippetsHigh Performance Snippets
High Performance SnippetsSteve Souders
 
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceNicholas Zakas
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)Nicholas Zakas
 
Mobile Web Speed Bumps
Mobile Web Speed BumpsMobile Web Speed Bumps
Mobile Web Speed BumpsNicholas Zakas
 
Testing Mobile JavaScript
Testing Mobile JavaScriptTesting Mobile JavaScript
Testing Mobile JavaScriptjeresig
 
jQuery 1.9 and 2.0 - Present and Future
jQuery 1.9 and 2.0 - Present and FuturejQuery 1.9 and 2.0 - Present and Future
jQuery 1.9 and 2.0 - Present and FutureRichard Worth
 
Node JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web AppNode JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web AppEdureka!
 
Building testable chrome extensions
Building testable chrome extensionsBuilding testable chrome extensions
Building testable chrome extensionsSeth McLaughlin
 
Hyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris ZachariasHyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris ZachariasChristopher Zacharias
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!Chris Mills
 
Search and play more than 50 clips
Search and play more than 50 clipsSearch and play more than 50 clips
Search and play more than 50 clipsphanhung20
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"Chris Mills
 
How To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages ApplicationHow To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages ApplicationMichael McGarel
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance PatternsStoyan Stefanov
 
APIs, now and in the future
APIs, now and in the futureAPIs, now and in the future
APIs, now and in the futureChris Mills
 

What's hot (20)

Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)
 
High Performance Snippets
High Performance SnippetsHigh Performance Snippets
High Performance Snippets
 
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
 
Mobile Web Speed Bumps
Mobile Web Speed BumpsMobile Web Speed Bumps
Mobile Web Speed Bumps
 
Testing Mobile JavaScript
Testing Mobile JavaScriptTesting Mobile JavaScript
Testing Mobile JavaScript
 
jQuery 1.9 and 2.0 - Present and Future
jQuery 1.9 and 2.0 - Present and FuturejQuery 1.9 and 2.0 - Present and Future
jQuery 1.9 and 2.0 - Present and Future
 
Cache is King
Cache is KingCache is King
Cache is King
 
Node JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web AppNode JS Express : Steps to Create Restful Web App
Node JS Express : Steps to Create Restful Web App
 
Building testable chrome extensions
Building testable chrome extensionsBuilding testable chrome extensions
Building testable chrome extensions
 
Hyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris ZachariasHyperlight Websites - Chris Zacharias
Hyperlight Websites - Chris Zacharias
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!
 
Search and play more than 50 clips
Search and play more than 50 clipsSearch and play more than 50 clips
Search and play more than 50 clips
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
 
Meteor Day Talk
Meteor Day TalkMeteor Day Talk
Meteor Day Talk
 
How To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages ApplicationHow To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages Application
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
 
APIs, now and in the future
APIs, now and in the futureAPIs, now and in the future
APIs, now and in the future
 

Viewers also liked

The New Yahoo! Homepage and YUI 3
The New Yahoo! Homepage and YUI 3The New Yahoo! Homepage and YUI 3
The New Yahoo! Homepage and YUI 3Nicholas Zakas
 
JavaScript Variable Performance
JavaScript Variable PerformanceJavaScript Variable Performance
JavaScript Variable PerformanceNicholas Zakas
 
Test Driven Development With YUI Test (Ajax Experience 2008)
Test Driven Development With YUI Test (Ajax Experience 2008)Test Driven Development With YUI Test (Ajax Experience 2008)
Test Driven Development With YUI Test (Ajax Experience 2008)Nicholas Zakas
 
Maintainable JavaScript
Maintainable JavaScriptMaintainable JavaScript
Maintainable JavaScriptNicholas Zakas
 
Color, themes, fonts: The building blocks of good e-commerce and ui design
Color, themes, fonts: The building blocks of good e-commerce and ui designColor, themes, fonts: The building blocks of good e-commerce and ui design
Color, themes, fonts: The building blocks of good e-commerce and ui designJosh Levine
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Nicholas Zakas
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011Nicholas Zakas
 
Speed Up Your JavaScript
Speed Up Your JavaScriptSpeed Up Your JavaScript
Speed Up Your JavaScriptNicholas Zakas
 
Enterprise JavaScript Error Handling (Ajax Experience 2008)
Enterprise JavaScript Error Handling (Ajax Experience 2008)Enterprise JavaScript Error Handling (Ajax Experience 2008)
Enterprise JavaScript Error Handling (Ajax Experience 2008)Nicholas Zakas
 
Writing Efficient JavaScript
Writing Efficient JavaScriptWriting Efficient JavaScript
Writing Efficient JavaScriptNicholas Zakas
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureNicholas Zakas
 

Viewers also liked (12)

The New Yahoo! Homepage and YUI 3
The New Yahoo! Homepage and YUI 3The New Yahoo! Homepage and YUI 3
The New Yahoo! Homepage and YUI 3
 
JavaScript Variable Performance
JavaScript Variable PerformanceJavaScript Variable Performance
JavaScript Variable Performance
 
Test Driven Development With YUI Test (Ajax Experience 2008)
Test Driven Development With YUI Test (Ajax Experience 2008)Test Driven Development With YUI Test (Ajax Experience 2008)
Test Driven Development With YUI Test (Ajax Experience 2008)
 
Maintainable JavaScript
Maintainable JavaScriptMaintainable JavaScript
Maintainable JavaScript
 
The Pointerless Web
The Pointerless WebThe Pointerless Web
The Pointerless Web
 
Color, themes, fonts: The building blocks of good e-commerce and ui design
Color, themes, fonts: The building blocks of good e-commerce and ui designColor, themes, fonts: The building blocks of good e-commerce and ui design
Color, themes, fonts: The building blocks of good e-commerce and ui design
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
 
Speed Up Your JavaScript
Speed Up Your JavaScriptSpeed Up Your JavaScript
Speed Up Your JavaScript
 
Enterprise JavaScript Error Handling (Ajax Experience 2008)
Enterprise JavaScript Error Handling (Ajax Experience 2008)Enterprise JavaScript Error Handling (Ajax Experience 2008)
Enterprise JavaScript Error Handling (Ajax Experience 2008)
 
Writing Efficient JavaScript
Writing Efficient JavaScriptWriting Efficient JavaScript
Writing Efficient JavaScript
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application Architecture
 

Similar to YUI Test The Next Generation (YUIConf 2010)

Watir Presentation Sumanth Krishna. A
Watir Presentation   Sumanth Krishna. AWatir Presentation   Sumanth Krishna. A
Watir Presentation Sumanth Krishna. ASumanth krishna
 
Testing The Testers
Testing The TestersTesting The Testers
Testing The TestersTed Husted
 
Ted Husted Presentation Testing The Testers Ae2009
Ted Husted Presentation Testing The Testers Ae2009Ted Husted Presentation Testing The Testers Ae2009
Ted Husted Presentation Testing The Testers Ae2009Ajax Experience 2009
 
探討Web ui自動化測試工具
探討Web ui自動化測試工具探討Web ui自動化測試工具
探討Web ui自動化測試工具政億 林
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationPaul Blundell
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightOpenDaylight
 
Android UI Testing with Appium
Android UI Testing with AppiumAndroid UI Testing with Appium
Android UI Testing with AppiumLuke Maung
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Boni García
 
Testing And Drupal
Testing And DrupalTesting And Drupal
Testing And DrupalPeter Arato
 
Security testing of YUI powered applications
Security testing of YUI powered applicationsSecurity testing of YUI powered applications
Security testing of YUI powered applicationsdimisec
 
Hacking Selenium @ JSConf
Hacking Selenium @ JSConfHacking Selenium @ JSConf
Hacking Selenium @ JSConfhugs
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With SeleniumMarakana Inc.
 
An Introduction To Unit Testing and TDD
An Introduction To Unit Testing and TDDAn Introduction To Unit Testing and TDD
An Introduction To Unit Testing and TDDAhmed Ehab AbdulAziz
 

Similar to YUI Test The Next Generation (YUIConf 2010) (20)

Testing Tools
Testing ToolsTesting Tools
Testing Tools
 
Qunit testing slider
Qunit testing sliderQunit testing slider
Qunit testing slider
 
Watir Presentation Sumanth Krishna. A
Watir Presentation   Sumanth Krishna. AWatir Presentation   Sumanth Krishna. A
Watir Presentation Sumanth Krishna. A
 
Testing The Testers
Testing The TestersTesting The Testers
Testing The Testers
 
Ted Husted Presentation Testing The Testers Ae2009
Ted Husted Presentation Testing The Testers Ae2009Ted Husted Presentation Testing The Testers Ae2009
Ted Husted Presentation Testing The Testers Ae2009
 
Yui intro
Yui introYui intro
Yui intro
 
探討Web ui自動化測試工具
探討Web ui自動化測試工具探討Web ui自動化測試工具
探討Web ui自動化測試工具
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to Mutation
 
ikp321-04
ikp321-04ikp321-04
ikp321-04
 
L08 Unit Testing
L08 Unit TestingL08 Unit Testing
L08 Unit Testing
 
Junit_.pptx
Junit_.pptxJunit_.pptx
Junit_.pptx
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylight
 
Android UI Testing with Appium
Android UI Testing with AppiumAndroid UI Testing with Appium
Android UI Testing with Appium
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5
 
Testing And Drupal
Testing And DrupalTesting And Drupal
Testing And Drupal
 
Security testing of YUI powered applications
Security testing of YUI powered applicationsSecurity testing of YUI powered applications
Security testing of YUI powered applications
 
Test ng for testers
Test ng for testersTest ng for testers
Test ng for testers
 
Hacking Selenium @ JSConf
Hacking Selenium @ JSConfHacking Selenium @ JSConf
Hacking Selenium @ JSConf
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
 
An Introduction To Unit Testing and TDD
An Introduction To Unit Testing and TDDAn Introduction To Unit Testing and TDD
An Introduction To Unit Testing and TDD
 

Recently uploaded

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Recently uploaded (20)

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

YUI Test The Next Generation (YUIConf 2010)