SlideShare a Scribd company logo
Video automation testing at Skype


         Pierre Gronlier - pierre.gronlier@skype.net

Video Software Development Engineer in Test - Microsoft Skype division



                        April 2012 - Kiev
1   The Video Library
2   Continuous Integration
      Building
      Testing
      Feedback
3   Unit, Component, System testing
      Some wrappers for testing.
      Test Driven Development
4   Cross-platform testing
      CI team
      Plugin mechanisms
5   NFR
      Denition
      KPIs
      Increase visibility
6   Conclusion
The Video Library
What is Skype made of ?


                                     UI

                                  Network

                    Video          Audio      Messaging



                            Figure: Inside Skype
What is Skype made of ?


                                                   UI

                                                Network

                                 Video           Audio         Messaging



                                         Figure: Inside Skype


                              Video Codec      Streaming         ToolBox
                                               Platforms
                              Apple, Android, Windows, Linux, Embedded, ...


                                 Figure: Inside the Video Library

  Platforms contains specic code like capturing, rendering methods.
Continuous Integration
Continuous integration means :
    building continuously.

    testing continuously.

    having an immediate feedback.
Quickbuild

  http://www.pmease.com/features/




                                Figure: Quickbuild
Quickbuild
     There is, only for the Video Library, around 20 dierent build congurations for dierent
     platforms and compilation modes.
         release/debug
         internal/external
         stable/experimental
         ...
     We have a farm of building computers.
     To enable compilation and maintenance across platforms, Makefile is used for compiling
     and farm agents are in Java




                                       Figure: HeatMap
Cross branches builds




   Example

  Network :             Video :              Codec :
      trunk/                trunk/               trunk/
      branches/             branches/            branches/
          network-69              video-42             codec-23
          network-68              video-41             codec-22
          ...                     ...                  ...
Cross branches builds


   Example

  Network :                        Video :                            Codec :
      trunk/                            trunk/                            trunk/
      branches/                         branches/                         branches/
          network-69 *                       video-42                           codec-23 *
          network-68                         video-41 *                         codec-22
          ...                                ...                                ...
       To enable two dierent dependent teams to develop new features without becoming
       incompatible, we compile our code with the latest stable release of the dependencies.

       In addition to trunk source code, we build our latest Long Term Support branch (*) every
       time there is a backport of a x.
Cross branches builds

   Example

  Network :                      Video :                        Codec :
      trunk/                         trunk/                         trunk/
      branches/                      branches/                      branches/
          network-69 *                     video-42                        codec-23 *
          network-68                       video-41 *                      codec-22
          ...                              ...                             ...

                   Mode                    Network      Video    Codec
                   Video stable              ∅       video-41   codec-23
                   Video release             ∅         trunk    codec-23
                   Video experimental        ∅         trunk      trunk
                   Network release         trunk     video-41   codec-23
                   Network experimental    trunk       trunk      trunk
CI as a daily tool




   Continuous integration means that :
     1 every 10 mins, a script checks for new commits on video trunk/ or the branches/.

     2 once a build for a platform is done successfully, it triggers a list of short tests. Every test

       lasts around 30 seconds.
     3 at night, a list of longer tests is executed.

     4 for every test execution, a report is generated in a database and the results are aggregated

       on a web page for Devs and QEs
CI as a daily tool




                     Figure: Test results
The importance of visual feedback




                   Figure: TVs with build/test feedback

                           Make it visible ! !
Unit, Component, System testing
Who writes and maintains the tests ?
       Writing tests is writing code.
       When you automate testing, QE are software developers in test.
  The closer and deeper you get into the production source code, more probably it will be a
  developer test.
                                              UI
                                                                         Python
                                           Network

                            Video            Audio         Messaging



                                          Figure: Inside Skype

                                                                         Lua, C#
                         Video Codec      Streaming         ToolBox
                                          Platforms                     Lua
                         Apple, Android, Windows, Linux, Embedded, ...



                                    Figure: Inside the Video Library
QE and Devs together




  1   Don't wait for developers to write your
      tests.

  2   Dene the tests when you dene the
      Acceptance Criteria of your PBI.

  3   Evaluate the value of your tests (e.g. code
      coverage).

  4   KISS : Keep it Stupid Short and Simple.



                                                    Figure: Test plan
Cross-platform testing
Requirements
  We want to have those features :
     run our tests on dierent platforms
     run our tests with dierent builds
     retrieve the results of our tests and analyze it
     save the result of the analysis
     output a report, trigger alarms

  The cross-platform CI team can provide :
      a pool of devices, platform and capture devices.
      access to various builds.
      provide uniform alarming systems (chat, email, sms)
      a database.
      a storage space.
              It is only a matter of contract denition between you and the CI team
How to conceive a modular testing framework ?
           Targets:
           - tablets, mobile, notebook w/ and w/o hardware encoding camera, desktop
           - Windows (desktop + mobile), Linux, Mac (desktop + mobile), Android

                                              +/-




                Full logs

                                     Insert/Update entry

                                                                                      Frontend
                                                               DataBase                Server




            Parsing
            Server                                                                    Web Rendering
                                 Reduced logs


                                                            Storage Server




                                           Figure: Framework
How to conceive a modular testing framework ?
           Targets:
           - tablets, mobile, notebook w/ and w/o hardware encoding camera, desktop
           - Windows (desktop + mobile), Linux, Mac (desktop + mobile), Android

                                              +/-




                Full logs

                                     Insert/Update entry

                                                                                      Frontend
                                                               DataBase                Server




            Parsing
            Server                                                                    Web Rendering
                                 Reduced logs


                                                            Storage Server




                                           Figure: Framework
NFR
What is non-functional ?




  Functional vs Non-Functional
                           the video works = we see something
                                            vs
                  the video has a good quality = we enjoy our video call
Key performance indicators

  list of kpis

      resolution and frame rate
      bitrate
      dropped frames and freeze durations
      frame-quality
      ...

  list of usecases
      for every codec
      for every media protocol version
      1-to-1 call and Group Video Calling
      software encoding vs hardware encoding
      for dierent network conditions
Pass/Fail vs Score



                                    Video Call A        Network Emulation        Video Call B
                               with controlled inputs                       with analyzed outputs




                 x                    x
    1. VGA = 640 480, QVGA = 320 240, QQVGA = 160 120               x
    2. Image Quality measurement algorithms
Pass/Fail vs Score



                                     Video Call A        Network Emulation        Video Call B
                                with controlled inputs                       with analyzed outputs



  Example   :
                     KPI                   Functional                                   Non-functional
                                             pass/fail                                   0% → 100%
                  resolution                  = 0x0                                     max = VGA 1
                  framerate                    =0                                        max = 15fps
                    bitrate       in the range of [20..5000]kb                         350kbps ± 10 %
                frame-quality              frame exist                               PSNR or SSIM 2 score
                       .
                       .                         .
                                                 .                                            .
                                                                                              .
                       .                         .                                            .
    Everything is automated using stats and feedback values from the Video Library.

                 x                     x
    1. VGA = 640 480, QVGA = 320 240, QQVGA = 160 120                x
    2. Image Quality measurement algorithms
How to evaluate the best available quality for a call ?

  The best quality of a call is given by :
                              optimal settings   = gcd(sender , receiver )

  with
             sender     = gcd (max (Encoding     power   ) , max (Network) , max (Camera))
             receiver   = gcd (max (Decoding     power   ) , max (Network) , max (Screen))




   (gcd = greatest common divisor)
How to evaluate the best available quality for a call ?

  The best quality of a call is given by :
                              optimal settings   = gcd(sender , receiver )

  with
             sender     = gcd (max (Encoding     power   ) , max (Network) , max (Camera))
             receiver   = gcd (max (Decoding     power   ) , max (Network) , max (Screen))
   where, with some simplications,
              Encoding power      = f1 (CPU power, Power supply mode, Codec        perf.)
              Network             = f2 (Bandwidth, RTT, Relay/P2P)
              Camera              = f3 (Resolution, Framerate)
              Decoding power      = f4 (CPU power, Power supply mode, Codec        perf.)
              Screen              = f5 (Resolution)

   (gcd = greatest common divisor)
Compare across revisions / branches
Compare across revisions / branches
Conclusion
Summary



   1   Quick feedback between development and testing.

   2   Devs and QE in the same team.

   3   Collocation helps a lot !

   4   Don't over-complicate your tests/frameworks.

   5   Measure the eciency/value of your tests.
Questions

 1   The Video Library
 2   Continuous Integration
       Building
       Testing
       Feedback
 3   Unit, Component, System testing
       Some wrappers for testing.
       Test Driven Development         Äÿêóþ çà óâàãó !
 4   Cross-platform testing
       CI team
       Plugin mechanisms                Çàïèòàííÿ ?
 5   NFR
       Denition
       KPIs
       Increase visibility
 6   Conclusion

More Related Content

PDF
Skype testing overview
PDF
How we test tvideo at skype
PDF
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
PDF
Accelerated Android Development with Linaro
PPTX
Dalvik Vm & Jit
PPT
Program development tools
PPTX
Windows7: Video Improvements
PDF
Introduction to Android by Demian Neidetcher
Skype testing overview
How we test tvideo at skype
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Accelerated Android Development with Linaro
Dalvik Vm & Jit
Program development tools
Windows7: Video Improvements
Introduction to Android by Demian Neidetcher

What's hot (20)

PDF
안드로이드 MediaPlayer & VideoView
PDF
Improve Android System Component Performance
PDF
Inside Android's Dalvik VM - NEJUG Nov 2011
ODP
Embedded Linux Multimedia
PDF
Linux on System z Update: Current & Future Linux on System z Technology
PDF
TOMOYO Linux on Android
PPT
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
PDF
PDF
Performance Analysis of Various Video Compression Techniques
PPS
Comp tia a+_session_11
PPS
Comp tia a+_session_03
DOC
Harsh gaurav
PDF
Raju_Biswas_Resume
PDF
EclipseCon 2011: Deciphering the CDT debugger alphabet soup
PPS
Comp tia a+_session_13
PPS
Comp tia a+_session_10
PDF
Open Source Licenses and Tools
PPT
Android cameraoverview
PPS
Comp tia a+_session_02
안드로이드 MediaPlayer & VideoView
Improve Android System Component Performance
Inside Android's Dalvik VM - NEJUG Nov 2011
Embedded Linux Multimedia
Linux on System z Update: Current & Future Linux on System z Technology
TOMOYO Linux on Android
Learning, Analyzing and Protecting Android with TOMOYO Linux (JLS2009)
Performance Analysis of Various Video Compression Techniques
Comp tia a+_session_11
Comp tia a+_session_03
Harsh gaurav
Raju_Biswas_Resume
EclipseCon 2011: Deciphering the CDT debugger alphabet soup
Comp tia a+_session_13
Comp tia a+_session_10
Open Source Licenses and Tools
Android cameraoverview
Comp tia a+_session_02
Ad

Similar to Skype testing overview (20)

DOC
Srikanth_PILLI_CV_latest
PDF
20110917 saitama iphone_dev
PDF
Code Factory avec GitLab CI et Rancher
PDF
Code Factory avec GitLab CI et Rancher
PDF
Video Drivers
DOC
Richard Bronson Full Resume 2015
PPTX
LlinuxKit security, Security Scanning and Notary
PDF
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
PDF
IBC2022 IPShowcase: Tips for Media-over-IP Network Design
PDF
Making Networking Apps Scream on Windows with DPDK
PDF
DCC Labs Company Presentation
PDF
Embedded system-Introduction to development cycle and development tool
PPTX
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
PPTX
Deep Dive into WinRT
PDF
Docker adventures in Continuous Delivery - Alex Vranceanu
PDF
Kahuna Systems : Product Engineering Services
PDF
Agile Bodensee - Testautomation & Continuous Delivery Workshop
PPTX
Automated Build using teamcity
PDF
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Srikanth_PILLI_CV_latest
20110917 saitama iphone_dev
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
Video Drivers
Richard Bronson Full Resume 2015
LlinuxKit security, Security Scanning and Notary
IMAGE CAPTURE, PROCESSING AND TRANSFER VIA ETHERNET UNDER CONTROL OF MATLAB G...
IBC2022 IPShowcase: Tips for Media-over-IP Network Design
Making Networking Apps Scream on Windows with DPDK
DCC Labs Company Presentation
Embedded system-Introduction to development cycle and development tool
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Deep Dive into WinRT
Docker adventures in Continuous Delivery - Alex Vranceanu
Kahuna Systems : Product Engineering Services
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Automated Build using teamcity
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Ad

More from QA Club Kiev (20)

PPTX
QA Club Kiev #20. Mobile Testing. Tips & Tricks
PPTX
QA Club Kiev #20. Making life easier with Docker
PPTX
QA Club Kiev #19 - ISTQB to be or not to be
PPTX
QA Club Kiev #18 - Test Management in Google Sheets
PPTX
QA Club Kiev 18 - Test Management and Approaches
PPTX
Performance Testing
PPT
Whay QA- engineers should know how to code
PPTX
Mobile Testing. What to do?
PPTX
Мифы Автоматизации
PPTX
QA Club Kiev #17 Measuring quality by Volodymyr Prymakov
PPTX
QA Club Kiev #17 QA Challenge by Oleksandr Maidaniuk
PPTX
QA Club Kiev #16: BA in IT
PDF
Agile performance testing
PDF
QAClubKiev Performance-Structure
PDF
QA Club Kiev #13 Performance Testing - introduction
PDF
Qa club kiev #12 istqb сertification
PPT
ISTQB Certification
PPTX
Test management in scrum
PPT
Qa club kiev #11 test documentation - introduction
PDF
Agile testing - introduction
QA Club Kiev #20. Mobile Testing. Tips & Tricks
QA Club Kiev #20. Making life easier with Docker
QA Club Kiev #19 - ISTQB to be or not to be
QA Club Kiev #18 - Test Management in Google Sheets
QA Club Kiev 18 - Test Management and Approaches
Performance Testing
Whay QA- engineers should know how to code
Mobile Testing. What to do?
Мифы Автоматизации
QA Club Kiev #17 Measuring quality by Volodymyr Prymakov
QA Club Kiev #17 QA Challenge by Oleksandr Maidaniuk
QA Club Kiev #16: BA in IT
Agile performance testing
QAClubKiev Performance-Structure
QA Club Kiev #13 Performance Testing - introduction
Qa club kiev #12 istqb сertification
ISTQB Certification
Test management in scrum
Qa club kiev #11 test documentation - introduction
Agile testing - introduction

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
KodekX | Application Modernization Development
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Review of recent advances in non-invasive hemoglobin estimation
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Encapsulation theory and applications.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
KodekX | Application Modernization Development
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
20250228 LYD VKU AI Blended-Learning.pptx
Empathic Computing: Creating Shared Understanding
Review of recent advances in non-invasive hemoglobin estimation
The AUB Centre for AI in Media Proposal.docx
Chapter 3 Spatial Domain Image Processing.pdf
Spectral efficient network and resource selection model in 5G networks
Building Integrated photovoltaic BIPV_UPV.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Programs and apps: productivity, graphics, security and other tools
Encapsulation theory and applications.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Mobile App Security Testing_ A Comprehensive Guide.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Unlocking AI with Model Context Protocol (MCP)
Dropbox Q2 2025 Financial Results & Investor Presentation
Approach and Philosophy of On baking technology

Skype testing overview

  • 1. Video automation testing at Skype Pierre Gronlier - pierre.gronlier@skype.net Video Software Development Engineer in Test - Microsoft Skype division April 2012 - Kiev
  • 2. 1 The Video Library 2 Continuous Integration Building Testing Feedback 3 Unit, Component, System testing Some wrappers for testing. Test Driven Development 4 Cross-platform testing CI team Plugin mechanisms 5 NFR Denition KPIs Increase visibility 6 Conclusion
  • 4. What is Skype made of ? UI Network Video Audio Messaging Figure: Inside Skype
  • 5. What is Skype made of ? UI Network Video Audio Messaging Figure: Inside Skype Video Codec Streaming ToolBox Platforms Apple, Android, Windows, Linux, Embedded, ... Figure: Inside the Video Library Platforms contains specic code like capturing, rendering methods.
  • 7. Continuous integration means : building continuously. testing continuously. having an immediate feedback.
  • 9. Quickbuild There is, only for the Video Library, around 20 dierent build congurations for dierent platforms and compilation modes. release/debug internal/external stable/experimental ... We have a farm of building computers. To enable compilation and maintenance across platforms, Makefile is used for compiling and farm agents are in Java Figure: HeatMap
  • 10. Cross branches builds Example Network : Video : Codec : trunk/ trunk/ trunk/ branches/ branches/ branches/ network-69 video-42 codec-23 network-68 video-41 codec-22 ... ... ...
  • 11. Cross branches builds Example Network : Video : Codec : trunk/ trunk/ trunk/ branches/ branches/ branches/ network-69 * video-42 codec-23 * network-68 video-41 * codec-22 ... ... ... To enable two dierent dependent teams to develop new features without becoming incompatible, we compile our code with the latest stable release of the dependencies. In addition to trunk source code, we build our latest Long Term Support branch (*) every time there is a backport of a x.
  • 12. Cross branches builds Example Network : Video : Codec : trunk/ trunk/ trunk/ branches/ branches/ branches/ network-69 * video-42 codec-23 * network-68 video-41 * codec-22 ... ... ... Mode Network Video Codec Video stable ∅ video-41 codec-23 Video release ∅ trunk codec-23 Video experimental ∅ trunk trunk Network release trunk video-41 codec-23 Network experimental trunk trunk trunk
  • 13. CI as a daily tool Continuous integration means that : 1 every 10 mins, a script checks for new commits on video trunk/ or the branches/. 2 once a build for a platform is done successfully, it triggers a list of short tests. Every test lasts around 30 seconds. 3 at night, a list of longer tests is executed. 4 for every test execution, a report is generated in a database and the results are aggregated on a web page for Devs and QEs
  • 14. CI as a daily tool Figure: Test results
  • 15. The importance of visual feedback Figure: TVs with build/test feedback Make it visible ! !
  • 17. Who writes and maintains the tests ? Writing tests is writing code. When you automate testing, QE are software developers in test. The closer and deeper you get into the production source code, more probably it will be a developer test. UI Python Network Video Audio Messaging Figure: Inside Skype Lua, C# Video Codec Streaming ToolBox Platforms Lua Apple, Android, Windows, Linux, Embedded, ... Figure: Inside the Video Library
  • 18. QE and Devs together 1 Don't wait for developers to write your tests. 2 Dene the tests when you dene the Acceptance Criteria of your PBI. 3 Evaluate the value of your tests (e.g. code coverage). 4 KISS : Keep it Stupid Short and Simple. Figure: Test plan
  • 20. Requirements We want to have those features : run our tests on dierent platforms run our tests with dierent builds retrieve the results of our tests and analyze it save the result of the analysis output a report, trigger alarms The cross-platform CI team can provide : a pool of devices, platform and capture devices. access to various builds. provide uniform alarming systems (chat, email, sms) a database. a storage space. It is only a matter of contract denition between you and the CI team
  • 21. How to conceive a modular testing framework ? Targets: - tablets, mobile, notebook w/ and w/o hardware encoding camera, desktop - Windows (desktop + mobile), Linux, Mac (desktop + mobile), Android +/- Full logs Insert/Update entry Frontend DataBase Server Parsing Server Web Rendering Reduced logs Storage Server Figure: Framework
  • 22. How to conceive a modular testing framework ? Targets: - tablets, mobile, notebook w/ and w/o hardware encoding camera, desktop - Windows (desktop + mobile), Linux, Mac (desktop + mobile), Android +/- Full logs Insert/Update entry Frontend DataBase Server Parsing Server Web Rendering Reduced logs Storage Server Figure: Framework
  • 23. NFR
  • 24. What is non-functional ? Functional vs Non-Functional the video works = we see something vs the video has a good quality = we enjoy our video call
  • 25. Key performance indicators list of kpis resolution and frame rate bitrate dropped frames and freeze durations frame-quality ... list of usecases for every codec for every media protocol version 1-to-1 call and Group Video Calling software encoding vs hardware encoding for dierent network conditions
  • 26. Pass/Fail vs Score Video Call A Network Emulation Video Call B with controlled inputs with analyzed outputs x x 1. VGA = 640 480, QVGA = 320 240, QQVGA = 160 120 x 2. Image Quality measurement algorithms
  • 27. Pass/Fail vs Score Video Call A Network Emulation Video Call B with controlled inputs with analyzed outputs Example : KPI Functional Non-functional pass/fail 0% → 100% resolution = 0x0 max = VGA 1 framerate =0 max = 15fps bitrate in the range of [20..5000]kb 350kbps ± 10 % frame-quality frame exist PSNR or SSIM 2 score . . . . . . . . . Everything is automated using stats and feedback values from the Video Library. x x 1. VGA = 640 480, QVGA = 320 240, QQVGA = 160 120 x 2. Image Quality measurement algorithms
  • 28. How to evaluate the best available quality for a call ? The best quality of a call is given by : optimal settings = gcd(sender , receiver ) with sender = gcd (max (Encoding power ) , max (Network) , max (Camera)) receiver = gcd (max (Decoding power ) , max (Network) , max (Screen)) (gcd = greatest common divisor)
  • 29. How to evaluate the best available quality for a call ? The best quality of a call is given by : optimal settings = gcd(sender , receiver ) with sender = gcd (max (Encoding power ) , max (Network) , max (Camera)) receiver = gcd (max (Decoding power ) , max (Network) , max (Screen)) where, with some simplications, Encoding power = f1 (CPU power, Power supply mode, Codec perf.) Network = f2 (Bandwidth, RTT, Relay/P2P) Camera = f3 (Resolution, Framerate) Decoding power = f4 (CPU power, Power supply mode, Codec perf.) Screen = f5 (Resolution) (gcd = greatest common divisor)
  • 33. Summary 1 Quick feedback between development and testing. 2 Devs and QE in the same team. 3 Collocation helps a lot ! 4 Don't over-complicate your tests/frameworks. 5 Measure the eciency/value of your tests.
  • 34. Questions 1 The Video Library 2 Continuous Integration Building Testing Feedback 3 Unit, Component, System testing Some wrappers for testing. Test Driven Development Äÿêóþ çà óâàãó ! 4 Cross-platform testing CI team Plugin mechanisms Çàïèòàííÿ ? 5 NFR Denition KPIs Increase visibility 6 Conclusion