SlideShare a Scribd company logo
1 of 52
Real-Time Communication
Testing Evolution
with WebRTC
Dr Alex Gouaillard
CoSMo Software Consulting
IMTC, W3C, IETF
RTC Interoperability: Web Apps
Chromecast
• W3C Standardization process (features supported or not)
• Stand-alone tests
• Single browser (one at a time)
(JS API) Compliance and Usual Testing
Test the Web Forward
What about WebRTC 1.0?
Why so low test coverage?
• Some parts of specifications were just written
• Tests not needed early on in standardization process
• Many tests need P2P communication / interop testing
Media devices APIs WebRTC 1.0 APIs
Test coverage as of November 2016 (W3C TPAC)
Ex. of RTC feature not Testable before:
Network and Protocol Testing: ICE
Client A Client B
STUN server
What is my public
IP address?
Your public IP address
is x.x.x.x:y
Compliance and Usual Testing vs.
Interoperability Testing
Compliance & Usual
Testing
Interoperability
Testing
• Interaction automation
• Stand-alone tests
• Single browser
• Interaction automation
• Two synchronized instances
of the same test
• 2+ browsers run in parallel
 New testing tools needed
Browsers Interaction Automation:
WebDriver protocol
ChromeDriver
geckodriver
Microsoft WebDriver
SafariDriver
Browsers as a Service:
hosted selenium nodes
In-Progress: WebDriver needs update
for WebRTC Security & others
• Permission prompt
– Geolocation
– Camera
– Microphone
– Bluetooth
– …
• Fake Media / Mock Capturer
• ICE Candidate Filtering
• Unsecure origin
Wrap-Up: WebDriver for RTC Tests
• Interaction
• Multiple browsers in parallel
• Synchronization of instances
of same test between browsers
Lots of tools out there
addressing a subset of the problem
WebRTC-test
Jitsi-Hammer
Kurento Testing Framework
Jattack
Ok, existing tools are limited but …
How bad can it be, really?
Rough Goal: Test all possible pairs of
[Browser] x [Browser Revision]
x
[OS] x [OS Revision]
WhatweWANTtotest
496
© Dr. Alex Gouaillard @ Citrix Systems, 2016. Document provided under CC BY-NC 4.0
Whatwecouldtesttoday 115
23%
© Dr. Alex Gouaillard @ Citrix Systems, 2016. Document provided under CC BY-NC 4.0
381
77%
1 OS
2 Oses
(Not tested)
© Dr. Alex Gouaillard @ Citrix Systems, 2016. Document provided under CC BY-NC 4.0
6
5%
WhatweACTUALLYtesttoday
21
18%
88
77%
Tested
WIP
Not tested
Ok, it’s REALLY bad …
Get visibility: list and evaluate
Evaluation of Interop Testing Tools
Dimension 1: Tests Triggers and frequency
6 months
Weekly (2d)
Daily / Nightly (4h)
Commit-based and fast (20mn)
Experimental (manually triggered)
Evaluation of Interop Testing Tools
Dimension 2: Type of SE nodes I want to use
Self-Hosted, Pre-configured VM
Hosted, as-a-service (e.g. BrowserStack)
Self-Hosted, Ephemeral VM
Hosted, Ephemeral VM (e.g. Travis)
Local / physical machines
[Apple]
[Only stable browsers]
[Extensions and plug-ins]
[Modified browsers]
[no manual settings]
[Extensions and plug-ins]
[Apple]
[limited OS set]
Evaluation of Interop Testing Tools
Dimension 3: OS I want to support
Evaluation of Interop Testing Tools
Dimension 4: Which Browsers?
Easy, kind of tested already, great WebDriver support
No Apple VM on non-apple Hardware
Webdriver is more recent and less mature than others
WebRTC? What’s your flavor~~ ?
Permission prompt? Fake Media?
36+% of Enterprise market (Windows 7)
which plugin?
Evaluation of Interop Testing Tools
Dimension 5: How early do I want to test?
=> How fast do you want your fix in
Ex: chrome 58  chrome 61
Stable
Windows Insider
Windows Insider
Evaluation of Interop Testing Tools
Own cloud
On-premises
Dimension 6: Freedom, Convenience and Price
Hosted
Trigger
Type of SE node
# OSes
Browsers
Browser channel
Hosted/on-prem
testRTC
Hosted
Trigger
Type of SE node
# OSes
Browsers
Browser channel
Hosted/on-prem
Travis CI
Hosted
Trigger
Type of SE node
# OSes
Browsers
Browser channel
Hosted/on-prem
BrowserStack
Hosted
Trigger
Type of SE node
# OSes
Browsers
Browser channel
Hosted/on-prem
Sauce Labs
Hosted
Ok, I see what’s missing for each.
What’s the right design now?
KITE: Karoshi Interoperability
Testing Engine
Because for most of us, manually testing webrtc
interop felt like “death by overwork”
KITE: Karoshi Interoperability Testing Engine
Automating RTC P2P tests
• Generic (any app, any back-end)
• Reusable (any process, trigger, …)
• Easy to maintain (no death  )
Stable / Beta / Dev / Canary
+
Own cloudOn-premises Hosted
KITE
Trigger
Type of SE node
# OSes
Browsers
Browser channel
Hosted/on-prem
KITE
Hosted
+
On-premises
KITE Design
Easy maintenance by divide and conquer
• Selenium Grid
• Test engine
• Test
• Dashboard
KITE Design
Conductor
Dispatcher
Test Runner Test Runner
Test Runner
Config => BrowserObj
Compute list< N-Tuple< BrowserObj > >
• { Test, Callback }
• list< N-Tuple< BO > >
handle concurrency
if resource: 1 N-tuple => 1 test runner =>1 thread
1 2 … N
• { Test, Callback }
• 1 N-Tuple< BO >
Instruments N BO
Run Test
Callback( results )
BrowserObj available
• Cr/FF - Mac - Rem-BB
• BrX - OSX - Rem-BaaS (SauceLabs)
• BrY - OSY - Rem-VM (AWS)
Result
Dashboard
• { N, Test, Callback }
• list< configs >
Configuration File{
"name": "local selenium example",
"callback": "http://localhost:8080/kiteweb/datacenter",
"remotes": [
{
"type": "local",
"remoteAddress": "http://localhost:4444/wd/hub"
}
],
"tests": [
{
"name": "IceConnectionTest",
"tupleSize": 2,
"testImpl": "org.webrtc.kite.IceConnectionTest"
}
],
"browsers": [
{
"browserName": "firefox"
},
{
"browserName": "chrome"
}
]
}
Configuration File{
"name": "local selenium example",
"callback": "http://localhost:8080/kiteweb/datacenter",
"remotes": [
{
"type": "local",
"remoteAddress": "http://localhost:4444/wd/hub"
}
],
"tests": [
{
"name": "IceConnectionTest",
"tupleSize": 2,
"testImpl": "org.webrtc.kite.IceConnectionTest"
}
],
"browsers": [
{
"browserName": "firefox"
},
{
"browserName": "chrome"
}
]
}
Location of dashboard
to send tests results
"callback": "http://localhost:8080/kiteweb/datacenter",
Configuration File{
"name": "local selenium example",
"callback": "http://localhost:8080/kiteweb/datacenter",
"remotes": [
{
"type": "local",
"remoteAddress": "http://localhost:4444/wd/hub"
}
],
"tests": [
{
"name": "IceConnectionTest",
"tupleSize": 2,
"testImpl": "org.webrtc.kite.IceConnectionTest"
}
],
"browsers": [
{
"browserName": "firefox"
},
{
"browserName": "chrome"
}
]
}
Registration of
Selenium server
"remotes": [
{
"type": "local",
"remoteAddress": "http://localhost:4444/wd/hub"
}
],
Configuration File{
"name": "local selenium example",
"callback": "http://localhost:8080/kiteweb/datacenter",
"remotes": [
{
"type": "local",
"remoteAddress": "http://localhost:4444/wd/hub"
}
],
"tests": [
{
"name": "IceConnectionTest",
"tupleSize": 2,
"testImpl": "org.webrtc.kite.IceConnectionTest"
}
],
"browsers": [
{
"browserName": "firefox"
},
{
"browserName": "chrome"
}
]
}
List of tests
"tests": [
{
"name": "IceConnectionTest",
"tupleSize": 2,
"testImpl": "org.webrtc.kite.IceConnectionTest"
}
],
Configuration File{
"name": "local selenium example",
"callback": "http://localhost:8080/kiteweb/datacenter",
"remotes": [
{
"type": "local",
"remoteAddress": "http://localhost:4444/wd/hub"
}
],
"tests": [
{
"name": "IceConnectionTest",
"tupleSize": 2,
"testImpl": "org.webrtc.kite.IceConnectionTest"
}
],
"browsers": [
{
"browserName": "firefox"
},
{
"browserName": "chrome"
}
]
}
List of browsers to
run the tests
"browsers": [
{
"browserName": "firefox"
},
{
"browserName": "chrome"
}
]
KITE Dashboard
KITE Dashboard
That’s very nice but it feels like
something is missing …
Global RTC Interoperability
Chromecast
Global RTC Interoperability:
MOBILE (Browsers)?
Chromecast
Global RTC Interoperability
Beyond Desktop Browsers
Appium
• Mobile testing framework
• For native, hybrid and mobile web apps
Global RTC Interoperability:
NATIVE, IoT and embedded
Chromecast
IoT
Electron
Global RTC Interoperability
Beyond Desktop Browsers
Electron
• Open source framework
• To build cross platform desktop applications
(HTML, CSS, JS)
• Combines Chromium and node.js into a single
runtime
Global RTC Interoperability:
Beyond 1-1
Jitsi
• Open source multiplatform
• Videoconferencing
• Instant messaging
Global RTC Interoperability:Beyond 1-1
Jitsi
Global RTC Interoperability
Make it easy: Grid Manager
• Set up a grid through a web app
• Set up Selenium hubs and nodes
• Download and set up
– Browsers
– Browsers WebDrivers
• Backup everything for follow-up uses
• Tear-down and clean-up after tests
Thank you!

More Related Content

What's hot

What's hot (20)

Building great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to knowBuilding great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to know
 
WebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco StrategyWebRTC - On Standards, Identity and Telco Strategy
WebRTC - On Standards, Identity and Telco Strategy
 
Deploying WebRTC in a low-latency streaming service
Deploying WebRTC in a low-latency streaming serviceDeploying WebRTC in a low-latency streaming service
Deploying WebRTC in a low-latency streaming service
 
WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016WebRTC Reborn SignalConf 2016
WebRTC Reborn SignalConf 2016
 
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
WebRTC Tutorial by Dean Bubley of Disruptive Analysis & Tim Panton of Westhaw...
 
WEBRTC_SEMINAR_FOR_TEAM_by_daebalprime
WEBRTC_SEMINAR_FOR_TEAM_by_daebalprimeWEBRTC_SEMINAR_FOR_TEAM_by_daebalprime
WEBRTC_SEMINAR_FOR_TEAM_by_daebalprime
 
Things I wished I knew before building my first WebRTC app - RTE2020
Things I wished I knew before building my first WebRTC app - RTE2020Things I wished I knew before building my first WebRTC app - RTE2020
Things I wished I knew before building my first WebRTC app - RTE2020
 
WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。 WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。
 
Hackference 2014 - Node.js, the awesome parts
Hackference 2014 - Node.js, the awesome partsHackference 2014 - Node.js, the awesome parts
Hackference 2014 - Node.js, the awesome parts
 
WebRTC overview
WebRTC overviewWebRTC overview
WebRTC overview
 
The New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonThe New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by Python
 
PuppetConf 2016: Delivering Premium Quality Modules: Using Beaker and VMpoole...
PuppetConf 2016: Delivering Premium Quality Modules: Using Beaker and VMpoole...PuppetConf 2016: Delivering Premium Quality Modules: Using Beaker and VMpoole...
PuppetConf 2016: Delivering Premium Quality Modules: Using Beaker and VMpoole...
 
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KH
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KHKernel Recipes 2017 - Linux Kernel Release Model - Greg KH
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KH
 
Lessons Learned in Automating Compliance for Containers
Lessons Learned in Automating Compliance for ContainersLessons Learned in Automating Compliance for Containers
Lessons Learned in Automating Compliance for Containers
 
WbeRTC in IOT presented in KrankyGeek
WbeRTC in IOT presented in KrankyGeekWbeRTC in IOT presented in KrankyGeek
WbeRTC in IOT presented in KrankyGeek
 
WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021
 
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
PuppetConf 2016: Implementing Puppet within a Complex Enterprise – Jerry Caup...
 
DevOps meetup 16oct docker and jenkins
DevOps meetup 16oct docker and jenkinsDevOps meetup 16oct docker and jenkins
DevOps meetup 16oct docker and jenkins
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
 
Kernel Recipes 2017 - The state of kernel self-protection - Kees Cook
Kernel Recipes 2017 - The state of kernel self-protection - Kees CookKernel Recipes 2017 - The state of kernel self-protection - Kees Cook
Kernel Recipes 2017 - The state of kernel self-protection - Kees Cook
 

Similar to Real-Time Communication Testing Evolution with WebRTC

Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
CIVEL Benoit
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
WSPDC & FEDSPUG
 
automation framework
automation frameworkautomation framework
automation framework
ANSHU GOYAL
 

Similar to Real-Time Communication Testing Evolution with WebRTC (20)

WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
 
2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art2016 Q1 - WebRTC testing State of The Art
2016 Q1 - WebRTC testing State of The Art
 
1,2,3 … Testing : Is this thing on(line)? with Mike Martin
1,2,3 … Testing : Is this thing on(line)? with Mike Martin1,2,3 … Testing : Is this thing on(line)? with Mike Martin
1,2,3 … Testing : Is this thing on(line)? with Mike Martin
 
DYI - Starting your own webrtc project
DYI - Starting your own webrtc projectDYI - Starting your own webrtc project
DYI - Starting your own webrtc project
 
Real time web
Real time webReal time web
Real time web
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
KrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfKrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdf
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for Developers
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
DockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging WorkshopDockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging Workshop
 
Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript
 
automation framework
automation frameworkautomation framework
automation framework
 
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
 
Structured Functional Automated Web Service Testing
Structured Functional Automated Web Service TestingStructured Functional Automated Web Service Testing
Structured Functional Automated Web Service Testing
 
The 3 Top Techniques for Web Security Testing Using a Proxy
The 3 Top Techniques for Web Security Testing Using a ProxyThe 3 Top Techniques for Web Security Testing Using a Proxy
The 3 Top Techniques for Web Security Testing Using a Proxy
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Continuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CIContinuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CI
 

More from Alexandre Gouaillard

Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Alexandre Gouaillard
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Alexandre Gouaillard
 

More from Alexandre Gouaillard (14)

Streaming Media West: Webrtc the future of low latency streaming
Streaming Media West: Webrtc the future of low latency streamingStreaming Media West: Webrtc the future of low latency streaming
Streaming Media West: Webrtc the future of low latency streaming
 
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
IIT-RTC 2017 Qt WebRTC Tutorial (Qt Janus Client)
 
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
2014 Webrtc Summit & Cloud Expo, RealTime Interactions for IoT
 
2016 February - WebRTC Conference japan - English
2016 February - WebRTC Conference japan - English2016 February - WebRTC Conference japan - English
2016 February - WebRTC Conference japan - English
 
2016 February - WebRTC Conference Japan - 日本語
2016 February - WebRTC Conference Japan - 日本語2016 February - WebRTC Conference Japan - 日本語
2016 February - WebRTC Conference Japan - 日本語
 
WebRTC Object Model API - Transceivers
WebRTC Object Model API - TransceiversWebRTC Object Model API - Transceivers
WebRTC Object Model API - Transceivers
 
2015 Q4 webrtc standards update
2015 Q4 webrtc standards update2015 Q4 webrtc standards update
2015 Q4 webrtc standards update
 
overview-peerconnection-lifetime
overview-peerconnection-lifetimeoverview-peerconnection-lifetime
overview-peerconnection-lifetime
 
Testing and packaging WebRTC Stack
Testing and packaging WebRTC StackTesting and packaging WebRTC Stack
Testing and packaging WebRTC Stack
 
Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
Open Source Options for Building your WebRTC Solution, May 2015 @ WebRTC Conf...
 
WebRTC Infrastructure scalability notes - Geek'n Kranky - June 2014 @ Google SF
WebRTC Infrastructure scalability notes - Geek'n Kranky - June 2014 @ Google SFWebRTC Infrastructure scalability notes - Geek'n Kranky - June 2014 @ Google SF
WebRTC Infrastructure scalability notes - Geek'n Kranky - June 2014 @ Google SF
 
WebRTC status and what to expect in 2015
WebRTC status and what to expect in 2015WebRTC status and what to expect in 2015
WebRTC status and what to expect in 2015
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
 

Recently uploaded

result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
Tonystark477637
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Christo Ananth
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 

Recently uploaded (20)

PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spain
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 

Real-Time Communication Testing Evolution with WebRTC

  • 1. Real-Time Communication Testing Evolution with WebRTC Dr Alex Gouaillard CoSMo Software Consulting IMTC, W3C, IETF
  • 2. RTC Interoperability: Web Apps Chromecast
  • 3. • W3C Standardization process (features supported or not) • Stand-alone tests • Single browser (one at a time) (JS API) Compliance and Usual Testing Test the Web Forward
  • 4. What about WebRTC 1.0? Why so low test coverage? • Some parts of specifications were just written • Tests not needed early on in standardization process • Many tests need P2P communication / interop testing Media devices APIs WebRTC 1.0 APIs Test coverage as of November 2016 (W3C TPAC)
  • 5. Ex. of RTC feature not Testable before: Network and Protocol Testing: ICE Client A Client B STUN server What is my public IP address? Your public IP address is x.x.x.x:y
  • 6. Compliance and Usual Testing vs. Interoperability Testing Compliance & Usual Testing Interoperability Testing • Interaction automation • Stand-alone tests • Single browser • Interaction automation • Two synchronized instances of the same test • 2+ browsers run in parallel  New testing tools needed
  • 7. Browsers Interaction Automation: WebDriver protocol ChromeDriver geckodriver Microsoft WebDriver SafariDriver
  • 8. Browsers as a Service: hosted selenium nodes
  • 9. In-Progress: WebDriver needs update for WebRTC Security & others • Permission prompt – Geolocation – Camera – Microphone – Bluetooth – … • Fake Media / Mock Capturer • ICE Candidate Filtering • Unsecure origin
  • 10. Wrap-Up: WebDriver for RTC Tests • Interaction • Multiple browsers in parallel • Synchronization of instances of same test between browsers
  • 11. Lots of tools out there addressing a subset of the problem WebRTC-test Jitsi-Hammer Kurento Testing Framework Jattack
  • 12. Ok, existing tools are limited but … How bad can it be, really? Rough Goal: Test all possible pairs of [Browser] x [Browser Revision] x [OS] x [OS Revision]
  • 13. WhatweWANTtotest 496 © Dr. Alex Gouaillard @ Citrix Systems, 2016. Document provided under CC BY-NC 4.0
  • 14. Whatwecouldtesttoday 115 23% © Dr. Alex Gouaillard @ Citrix Systems, 2016. Document provided under CC BY-NC 4.0 381 77% 1 OS 2 Oses (Not tested)
  • 15. © Dr. Alex Gouaillard @ Citrix Systems, 2016. Document provided under CC BY-NC 4.0 6 5% WhatweACTUALLYtesttoday 21 18% 88 77% Tested WIP Not tested
  • 16. Ok, it’s REALLY bad … Get visibility: list and evaluate
  • 17. Evaluation of Interop Testing Tools Dimension 1: Tests Triggers and frequency 6 months Weekly (2d) Daily / Nightly (4h) Commit-based and fast (20mn) Experimental (manually triggered)
  • 18. Evaluation of Interop Testing Tools Dimension 2: Type of SE nodes I want to use Self-Hosted, Pre-configured VM Hosted, as-a-service (e.g. BrowserStack) Self-Hosted, Ephemeral VM Hosted, Ephemeral VM (e.g. Travis) Local / physical machines [Apple] [Only stable browsers] [Extensions and plug-ins] [Modified browsers] [no manual settings] [Extensions and plug-ins] [Apple] [limited OS set]
  • 19. Evaluation of Interop Testing Tools Dimension 3: OS I want to support
  • 20. Evaluation of Interop Testing Tools Dimension 4: Which Browsers? Easy, kind of tested already, great WebDriver support No Apple VM on non-apple Hardware Webdriver is more recent and less mature than others WebRTC? What’s your flavor~~ ? Permission prompt? Fake Media? 36+% of Enterprise market (Windows 7) which plugin?
  • 21. Evaluation of Interop Testing Tools Dimension 5: How early do I want to test? => How fast do you want your fix in Ex: chrome 58  chrome 61 Stable Windows Insider Windows Insider
  • 22. Evaluation of Interop Testing Tools Own cloud On-premises Dimension 6: Freedom, Convenience and Price Hosted
  • 23. Trigger Type of SE node # OSes Browsers Browser channel Hosted/on-prem testRTC Hosted
  • 24. Trigger Type of SE node # OSes Browsers Browser channel Hosted/on-prem Travis CI Hosted
  • 25. Trigger Type of SE node # OSes Browsers Browser channel Hosted/on-prem BrowserStack Hosted
  • 26. Trigger Type of SE node # OSes Browsers Browser channel Hosted/on-prem Sauce Labs Hosted
  • 27. Ok, I see what’s missing for each. What’s the right design now?
  • 28. KITE: Karoshi Interoperability Testing Engine Because for most of us, manually testing webrtc interop felt like “death by overwork”
  • 29. KITE: Karoshi Interoperability Testing Engine Automating RTC P2P tests • Generic (any app, any back-end) • Reusable (any process, trigger, …) • Easy to maintain (no death  ) Stable / Beta / Dev / Canary + Own cloudOn-premises Hosted
  • 30. KITE Trigger Type of SE node # OSes Browsers Browser channel Hosted/on-prem KITE Hosted + On-premises
  • 31. KITE Design Easy maintenance by divide and conquer • Selenium Grid • Test engine • Test • Dashboard
  • 32. KITE Design Conductor Dispatcher Test Runner Test Runner Test Runner Config => BrowserObj Compute list< N-Tuple< BrowserObj > > • { Test, Callback } • list< N-Tuple< BO > > handle concurrency if resource: 1 N-tuple => 1 test runner =>1 thread 1 2 … N • { Test, Callback } • 1 N-Tuple< BO > Instruments N BO Run Test Callback( results ) BrowserObj available • Cr/FF - Mac - Rem-BB • BrX - OSX - Rem-BaaS (SauceLabs) • BrY - OSY - Rem-VM (AWS) Result Dashboard • { N, Test, Callback } • list< configs >
  • 33. Configuration File{ "name": "local selenium example", "callback": "http://localhost:8080/kiteweb/datacenter", "remotes": [ { "type": "local", "remoteAddress": "http://localhost:4444/wd/hub" } ], "tests": [ { "name": "IceConnectionTest", "tupleSize": 2, "testImpl": "org.webrtc.kite.IceConnectionTest" } ], "browsers": [ { "browserName": "firefox" }, { "browserName": "chrome" } ] }
  • 34. Configuration File{ "name": "local selenium example", "callback": "http://localhost:8080/kiteweb/datacenter", "remotes": [ { "type": "local", "remoteAddress": "http://localhost:4444/wd/hub" } ], "tests": [ { "name": "IceConnectionTest", "tupleSize": 2, "testImpl": "org.webrtc.kite.IceConnectionTest" } ], "browsers": [ { "browserName": "firefox" }, { "browserName": "chrome" } ] } Location of dashboard to send tests results "callback": "http://localhost:8080/kiteweb/datacenter",
  • 35. Configuration File{ "name": "local selenium example", "callback": "http://localhost:8080/kiteweb/datacenter", "remotes": [ { "type": "local", "remoteAddress": "http://localhost:4444/wd/hub" } ], "tests": [ { "name": "IceConnectionTest", "tupleSize": 2, "testImpl": "org.webrtc.kite.IceConnectionTest" } ], "browsers": [ { "browserName": "firefox" }, { "browserName": "chrome" } ] } Registration of Selenium server "remotes": [ { "type": "local", "remoteAddress": "http://localhost:4444/wd/hub" } ],
  • 36. Configuration File{ "name": "local selenium example", "callback": "http://localhost:8080/kiteweb/datacenter", "remotes": [ { "type": "local", "remoteAddress": "http://localhost:4444/wd/hub" } ], "tests": [ { "name": "IceConnectionTest", "tupleSize": 2, "testImpl": "org.webrtc.kite.IceConnectionTest" } ], "browsers": [ { "browserName": "firefox" }, { "browserName": "chrome" } ] } List of tests "tests": [ { "name": "IceConnectionTest", "tupleSize": 2, "testImpl": "org.webrtc.kite.IceConnectionTest" } ],
  • 37. Configuration File{ "name": "local selenium example", "callback": "http://localhost:8080/kiteweb/datacenter", "remotes": [ { "type": "local", "remoteAddress": "http://localhost:4444/wd/hub" } ], "tests": [ { "name": "IceConnectionTest", "tupleSize": 2, "testImpl": "org.webrtc.kite.IceConnectionTest" } ], "browsers": [ { "browserName": "firefox" }, { "browserName": "chrome" } ] } List of browsers to run the tests "browsers": [ { "browserName": "firefox" }, { "browserName": "chrome" } ]
  • 38.
  • 39.
  • 40.
  • 43. That’s very nice but it feels like something is missing …
  • 45. Global RTC Interoperability: MOBILE (Browsers)? Chromecast
  • 46. Global RTC Interoperability Beyond Desktop Browsers Appium • Mobile testing framework • For native, hybrid and mobile web apps
  • 47. Global RTC Interoperability: NATIVE, IoT and embedded Chromecast IoT Electron
  • 48. Global RTC Interoperability Beyond Desktop Browsers Electron • Open source framework • To build cross platform desktop applications (HTML, CSS, JS) • Combines Chromium and node.js into a single runtime
  • 49. Global RTC Interoperability: Beyond 1-1 Jitsi • Open source multiplatform • Videoconferencing • Instant messaging
  • 51. Global RTC Interoperability Make it easy: Grid Manager • Set up a grid through a web app • Set up Selenium hubs and nodes • Download and set up – Browsers – Browsers WebDrivers • Backup everything for follow-up uses • Tear-down and clean-up after tests