SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Web testing
                           A general approach




  CLIW                                          Bogdan Gaza
Tuesday, January 10, 12
Agenda

                          What is web testing?
                          Tools & techniques
                          Practical examples - demo
                          Conclusions

  CLIW                                                Bogdan Gaza
Tuesday, January 10, 12
What is web testing?


                    • Write a lot of code implies that someday
                           things will break / stop working
                    • Fixing a bug is simple, finding it can be
                           difficult
                    • Finding a bug while trying to maintain
                           cross-browser compatibility can be a
                           nightmare

  CLIW                                                            Bogdan Gaza
Tuesday, January 10, 12
What is web testing?




               ... software testing with a focus on web
               applications.




  CLIW                                                    Bogdan Gaza
Tuesday, January 10, 12
How can we do web testing?

                • Different approaches:
                 - Unit testing client side code
                 - Client side performance testing
                 - Usability testing
                 - Functional testing
                 - etc
  CLIW                                                 Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code




  CLIW                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code

                  • Why?
                   • Cross browser issues
                   • Refactoring & Bug fixing can produce
                          unforeseen problems
                  • When?
                   • When code base is large enough
                   • When cross browser compatibility is a
                          must
  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code


                  • Popular frameworks:
                   • QUnit
                   • JSUnit
                   • Selenium
                   • YUITest
                   • and many more
  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code


                  • Popular frameworks:
                   • QUnit
                   • JSUnit
                   • Selenium
                   • YUITest
                   • and many more
  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code


                  • QUnit
                   • Built for jQuery
                   • Break code into logical chuncks for
                            testing
                          • Focus on one method at a time
                          • http://docs.jquery.com/QUnit
  CLIW                                                           Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code
           • QUnit
            test("a basic test example", function() {
              ok( true, "this test is fine" );
              var value = "hello";
              equal( value, "hello", "We expect value to be hello" );
            });

            module("Module A");

            test("first test within module", function() {
              ok( true, "all pass" );
            });

            test("second test within module", function() {
              ok( true, "all pass" );
            });
  CLIW                                                             Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code
           • QUnit




  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code




           • Automatation
           • Running unit tests outside the browser?


  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code



           • Unit tests for client side code can be
                   integrated with current build systems
           • Using Node.js / Rhino we can create a
                   browser-like environment




  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code

           • PhantomJS
           • Headless WebKit with JavaScript API
           • Native support for various web standards:
                   DOM handling, CSS selector, JSON,
                   Canvas, and SVG.
           • PhantomJS can be controlled or scripted
                   using JavaScript API

  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Unit testing for client side code

           • PhantomJS
           • Headless WebKit with JavaScript API
           • Native support for various web standards:
                   DOM handling, CSS selector, JSON,
                   Canvas, and SVG.
           • PhantomJS can be controlled or scripted
                   using JavaScript API

  CLIW                                                        Bogdan Gaza
Tuesday, January 10, 12
Client side performance testing




  CLIW                                      Bogdan Gaza
Tuesday, January 10, 12
Client side performance testing

                          In order to measure client side performance
                          testing, metrics about the environment need
                          to be gathered.


                          Ex:
                          How much times does it take to load the
                          page?

  CLIW                                                              Bogdan Gaza
Tuesday, January 10, 12
Client side performance testing


             • Measuring:
              • Insert JS code and measure performance
              • Browser web developer tools - waterfall
                          diagram




  CLIW                                                      Bogdan Gaza
Tuesday, January 10, 12
Client side performance testing




  CLIW                                                      Bogdan Gaza
Tuesday, January 10, 12
Usability testing




  CLIW                                        Bogdan Gaza
Tuesday, January 10, 12
Usability testing



                  • Usability testing is a technique used in user-
                          centered interaction design to evaluate a
                          product by testing it on users. (Wikipedia)




  CLIW                                                                  Bogdan Gaza
Tuesday, January 10, 12
Usability testing
                  • How?
                   • Hallway testing: random set of people are
                           brought to test the product/service.
                      • Expert review: use experts (possibly from
                           companies that specialize in usability
                           testing)
                  • Usually complicated and error prone

  CLIW                                                              Bogdan Gaza
Tuesday, January 10, 12
Functional testing




  CLIW                                         Bogdan Gaza
Tuesday, January 10, 12
Functional testing


                  • Functional testing is a type of black box
                          testing that bases its test cases on the
                          specifications of the software component
                          under test.
                  •       Black-box: http://en.wikipedia.org/wiki/Black_box_testing




  CLIW                                                                                Bogdan Gaza
Tuesday, January 10, 12
Functional testing

              • How?
               • Specifying scenarios:

              Feature: Addition
               In order to avoid silly mistakes
               As a math noobie
               I want to be told the sum of two numbers



  CLIW                                                    Bogdan Gaza
Tuesday, January 10, 12
Functional testing

              • How?
               • Specifying scenarios:

                 Scenario Outline: Add two numbers
                  Given I have entered <input_1> into the calculator
                  And I have entered <input_2> into the calculator
                  When I press <button>
                  Then the result should be <output> on the screen


  CLIW                                                                 Bogdan Gaza
Tuesday, January 10, 12
Functional testing



            • How?
             • Selenium




  CLIW                                         Bogdan Gaza
Tuesday, January 10, 12
Functional testing


          • Selenium
           • Test automation tool for web applications
           • Can be used for most of the browsers/
                      platform combinations
              • Supports many languages


  CLIW                                                   Bogdan Gaza
Tuesday, January 10, 12
Functional testing

          • Selenium IDE
           • Firefox plugin
           • IDE for selenium tests
           • Provides record and playback
                      functionalities
              • Exports tests in different formats (HTML,
                      Ruby, Python etc)
  CLIW                                                      Bogdan Gaza
Tuesday, January 10, 12
Practical examples - demo




  CLIW                                                Bogdan Gaza
Tuesday, January 10, 12
Conclusions




  CLIW                                  Bogdan Gaza
Tuesday, January 10, 12
Client-side web testing improves
                            the quality of your software




  CLIW                                                   Bogdan Gaza
Tuesday, January 10, 12
Client-side web testing can be
                                   cumbersome




  CLIW                                                     Bogdan Gaza
Tuesday, January 10, 12
But saves bug tracking/fixing time, and is
                 a must in business critical software




  CLIW                                             Bogdan Gaza
Tuesday, January 10, 12
Questions!




  CLIW                                 Bogdan Gaza
Tuesday, January 10, 12
Thanks!




  CLIW                              Bogdan Gaza
Tuesday, January 10, 12

Más contenido relacionado

La actualidad más candente

GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Ukraine
 
Introducing Playwright's New Test Runner
Introducing Playwright's New Test RunnerIntroducing Playwright's New Test Runner
Introducing Playwright's New Test RunnerApplitools
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011Nicholas Zakas
 
淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)Kyle Lin
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test firstCaesar Chi
 
Nightwatch JS for End to End Tests
Nightwatch JS for End to End TestsNightwatch JS for End to End Tests
Nightwatch JS for End to End TestsSriram Angajala
 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017Ortus Solutions, Corp
 
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)Cogapp
 
Testing with Codeception (Webelement #30)
Testing with Codeception (Webelement #30)Testing with Codeception (Webelement #30)
Testing with Codeception (Webelement #30)Adam Štipák
 
Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)Christian Johansen
 
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"Fwdays
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEGavin Pickin
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.Javier López
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP applicationJavier López
 
CI / CD w/ Codeception
CI / CD w/ CodeceptionCI / CD w/ Codeception
CI / CD w/ CodeceptionTudor Barbu
 
3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION APIGavin Pickin
 
Automated Testing in Angular Slides
Automated Testing in Angular SlidesAutomated Testing in Angular Slides
Automated Testing in Angular SlidesJim Lynch
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsQing-Cheng Li
 
Capybara testing
Capybara testingCapybara testing
Capybara testingFutureworkz
 
Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015Andrew Eisenberg
 

La actualidad más candente (20)

GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
 
Introducing Playwright's New Test Runner
Introducing Playwright's New Test RunnerIntroducing Playwright's New Test Runner
Introducing Playwright's New Test Runner
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
 
淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test first
 
Nightwatch JS for End to End Tests
Nightwatch JS for End to End TestsNightwatch JS for End to End Tests
Nightwatch JS for End to End Tests
 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
 
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
 
Testing with Codeception (Webelement #30)
Testing with Codeception (Webelement #30)Testing with Codeception (Webelement #30)
Testing with Codeception (Webelement #30)
 
Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)Test-Driven JavaScript Development (JavaZone 2010)
Test-Driven JavaScript Development (JavaZone 2010)
 
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
CI / CD w/ Codeception
CI / CD w/ CodeceptionCI / CD w/ Codeception
CI / CD w/ Codeception
 
3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API
 
Automated Testing in Angular Slides
Automated Testing in Angular SlidesAutomated Testing in Angular Slides
Automated Testing in Angular Slides
 
How QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser ExtensionsHow QCLean Works? Introduction to Browser Extensions
How QCLean Works? Introduction to Browser Extensions
 
Capybara testing
Capybara testingCapybara testing
Capybara testing
 
Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015
 

Destacado

XBOSoft Web Application Testing Challenges
XBOSoft Web Application Testing ChallengesXBOSoft Web Application Testing Challenges
XBOSoft Web Application Testing ChallengesXBOSoft
 
Selenium RC - Web Application Testing Tool
Selenium RC - Web Application Testing ToolSelenium RC - Web Application Testing Tool
Selenium RC - Web Application Testing ToolAtsushi Sano
 
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with PythonJachym Cepicky
 
Introduction To Web Application Testing
Introduction To Web Application TestingIntroduction To Web Application Testing
Introduction To Web Application TestingYnon Perek
 
Lab 7b) test a web application
Lab 7b) test a web applicationLab 7b) test a web application
Lab 7b) test a web applicationtechbed
 
MIS - Management Information System
MIS - Management Information SystemMIS - Management Information System
MIS - Management Information SystemAspelec
 
Web App Testing - A Practical Approach
Web App Testing - A Practical ApproachWeb App Testing - A Practical Approach
Web App Testing - A Practical ApproachWalter Mamed
 
Web Application Testing
Web Application TestingWeb Application Testing
Web Application TestingRicha Goel
 
Web application security & Testing
Web application security  & TestingWeb application security  & Testing
Web application security & TestingDeepu S Nath
 

Destacado (11)

XBOSoft Web Application Testing Challenges
XBOSoft Web Application Testing ChallengesXBOSoft Web Application Testing Challenges
XBOSoft Web Application Testing Challenges
 
Selenium RC - Web Application Testing Tool
Selenium RC - Web Application Testing ToolSelenium RC - Web Application Testing Tool
Selenium RC - Web Application Testing Tool
 
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with Python
 
Introduction To Web Application Testing
Introduction To Web Application TestingIntroduction To Web Application Testing
Introduction To Web Application Testing
 
Lab 7b) test a web application
Lab 7b) test a web applicationLab 7b) test a web application
Lab 7b) test a web application
 
Web application Testing
Web application TestingWeb application Testing
Web application Testing
 
MIS - Management Information System
MIS - Management Information SystemMIS - Management Information System
MIS - Management Information System
 
Web App Testing - A Practical Approach
Web App Testing - A Practical ApproachWeb App Testing - A Practical Approach
Web App Testing - A Practical Approach
 
Web Application Testing
Web Application TestingWeb Application Testing
Web Application Testing
 
Testing web application
Testing web applicationTesting web application
Testing web application
 
Web application security & Testing
Web application security  & TestingWeb application security  & Testing
Web application security & Testing
 

Similar a [CLIW] Web testing

Bdd. Automate your requirements
Bdd. Automate your requirementsBdd. Automate your requirements
Bdd. Automate your requirementsjugkaraganda
 
BDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVABDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVASrinivas Katakam
 
BDD on Java Concordion and Selenium
BDD on Java Concordion and SeleniumBDD on Java Concordion and Selenium
BDD on Java Concordion and Seleniumspringbyexample
 
Con-way Case Study: Optimizing Application Integration Software Development L...
Con-way Case Study: Optimizing Application Integration Software Development L...Con-way Case Study: Optimizing Application Integration Software Development L...
Con-way Case Study: Optimizing Application Integration Software Development L...CA Technologies
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentationIan Renyard
 
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...Digicomp Academy AG
 
Colorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latestColorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latestOnur Baskirt
 
NodeSummit - MEAN Stack
NodeSummit - MEAN StackNodeSummit - MEAN Stack
NodeSummit - MEAN StackValeri Karpov
 
xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012Justin Gordon
 
Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14Richard Olrichs
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019ciberkleid
 
10 Emerging Test Frameworks for Cross Browser Testing
10 Emerging Test Frameworks for Cross Browser Testing10 Emerging Test Frameworks for Cross Browser Testing
10 Emerging Test Frameworks for Cross Browser TestingPerfecto by Perforce
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationDavid Amend
 
Javascript Unit Testing Tools
Javascript Unit Testing ToolsJavascript Unit Testing Tools
Javascript Unit Testing ToolsPixelCrayons
 
Cloud agnostic continuous quality assurance
Cloud agnostic continuous quality assuranceCloud agnostic continuous quality assurance
Cloud agnostic continuous quality assurancejSparrow
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by ExampleNalin Goonawardana
 
Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)Evolve
 

Similar a [CLIW] Web testing (20)

Bdd. Automate your requirements
Bdd. Automate your requirementsBdd. Automate your requirements
Bdd. Automate your requirements
 
BDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVABDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVA
 
Parallelizing ui tests
Parallelizing ui testsParallelizing ui tests
Parallelizing ui tests
 
Automated Testing in DevOps
Automated Testing in DevOpsAutomated Testing in DevOps
Automated Testing in DevOps
 
BDD on Java Concordion and Selenium
BDD on Java Concordion and SeleniumBDD on Java Concordion and Selenium
BDD on Java Concordion and Selenium
 
Con-way Case Study: Optimizing Application Integration Software Development L...
Con-way Case Study: Optimizing Application Integration Software Development L...Con-way Case Study: Optimizing Application Integration Software Development L...
Con-way Case Study: Optimizing Application Integration Software Development L...
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentation
 
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
 
Colorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latestColorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latest
 
NodeSummit - MEAN Stack
NodeSummit - MEAN StackNodeSummit - MEAN Stack
NodeSummit - MEAN Stack
 
xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012
 
Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
 
Enforcing code guidelines by extending j developer’s auditing framework - Ora...
Enforcing code guidelines by extending j developer’s auditing framework - Ora...Enforcing code guidelines by extending j developer’s auditing framework - Ora...
Enforcing code guidelines by extending j developer’s auditing framework - Ora...
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
 
10 Emerging Test Frameworks for Cross Browser Testing
10 Emerging Test Frameworks for Cross Browser Testing10 Emerging Test Frameworks for Cross Browser Testing
10 Emerging Test Frameworks for Cross Browser Testing
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
 
Javascript Unit Testing Tools
Javascript Unit Testing ToolsJavascript Unit Testing Tools
Javascript Unit Testing Tools
 
Cloud agnostic continuous quality assurance
Cloud agnostic continuous quality assuranceCloud agnostic continuous quality assurance
Cloud agnostic continuous quality assurance
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)Test your user interface using BDD (Swedish)
Test your user interface using BDD (Swedish)
 

Más de Bogdan Gaza

Weightlifting at SimplySocial
Weightlifting at SimplySocialWeightlifting at SimplySocial
Weightlifting at SimplySocialBogdan Gaza
 
Understanding and measuring web performance
Understanding and measuring web performanceUnderstanding and measuring web performance
Understanding and measuring web performanceBogdan Gaza
 
[TW] CSS Files Optimization
[TW] CSS Files Optimization[TW] CSS Files Optimization
[TW] CSS Files OptimizationBogdan Gaza
 
RailsAdmin - the right way of doing data administration with Rails 3
RailsAdmin - the right way of doing data administration with Rails 3RailsAdmin - the right way of doing data administration with Rails 3
RailsAdmin - the right way of doing data administration with Rails 3Bogdan Gaza
 
De ce sa nu folosim Ruby On Rails?
De ce sa nu folosim Ruby On Rails?De ce sa nu folosim Ruby On Rails?
De ce sa nu folosim Ruby On Rails?Bogdan Gaza
 
NoSQL in the context of Social Web
NoSQL in the context of Social WebNoSQL in the context of Social Web
NoSQL in the context of Social WebBogdan Gaza
 

Más de Bogdan Gaza (8)

Weightlifting at SimplySocial
Weightlifting at SimplySocialWeightlifting at SimplySocial
Weightlifting at SimplySocial
 
Understanding and measuring web performance
Understanding and measuring web performanceUnderstanding and measuring web performance
Understanding and measuring web performance
 
[TW] Node.js
[TW] Node.js[TW] Node.js
[TW] Node.js
 
[TW] CSS Files Optimization
[TW] CSS Files Optimization[TW] CSS Files Optimization
[TW] CSS Files Optimization
 
Fosdem2011
Fosdem2011Fosdem2011
Fosdem2011
 
RailsAdmin - the right way of doing data administration with Rails 3
RailsAdmin - the right way of doing data administration with Rails 3RailsAdmin - the right way of doing data administration with Rails 3
RailsAdmin - the right way of doing data administration with Rails 3
 
De ce sa nu folosim Ruby On Rails?
De ce sa nu folosim Ruby On Rails?De ce sa nu folosim Ruby On Rails?
De ce sa nu folosim Ruby On Rails?
 
NoSQL in the context of Social Web
NoSQL in the context of Social WebNoSQL in the context of Social Web
NoSQL in the context of Social Web
 

Último

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Último (20)

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

[CLIW] Web testing

  • 1. Web testing A general approach CLIW Bogdan Gaza Tuesday, January 10, 12
  • 2. Agenda What is web testing? Tools & techniques Practical examples - demo Conclusions CLIW Bogdan Gaza Tuesday, January 10, 12
  • 3. What is web testing? • Write a lot of code implies that someday things will break / stop working • Fixing a bug is simple, finding it can be difficult • Finding a bug while trying to maintain cross-browser compatibility can be a nightmare CLIW Bogdan Gaza Tuesday, January 10, 12
  • 4. What is web testing? ... software testing with a focus on web applications. CLIW Bogdan Gaza Tuesday, January 10, 12
  • 5. How can we do web testing? • Different approaches: - Unit testing client side code - Client side performance testing - Usability testing - Functional testing - etc CLIW Bogdan Gaza Tuesday, January 10, 12
  • 6. Unit testing for client side code CLIW Bogdan Gaza Tuesday, January 10, 12
  • 7. Unit testing for client side code • Why? • Cross browser issues • Refactoring & Bug fixing can produce unforeseen problems • When? • When code base is large enough • When cross browser compatibility is a must CLIW Bogdan Gaza Tuesday, January 10, 12
  • 8. Unit testing for client side code • Popular frameworks: • QUnit • JSUnit • Selenium • YUITest • and many more CLIW Bogdan Gaza Tuesday, January 10, 12
  • 9. Unit testing for client side code • Popular frameworks: • QUnit • JSUnit • Selenium • YUITest • and many more CLIW Bogdan Gaza Tuesday, January 10, 12
  • 10. Unit testing for client side code • QUnit • Built for jQuery • Break code into logical chuncks for testing • Focus on one method at a time • http://docs.jquery.com/QUnit CLIW Bogdan Gaza Tuesday, January 10, 12
  • 11. Unit testing for client side code • QUnit test("a basic test example", function() { ok( true, "this test is fine" ); var value = "hello"; equal( value, "hello", "We expect value to be hello" ); }); module("Module A"); test("first test within module", function() { ok( true, "all pass" ); }); test("second test within module", function() { ok( true, "all pass" ); }); CLIW Bogdan Gaza Tuesday, January 10, 12
  • 12. Unit testing for client side code • QUnit CLIW Bogdan Gaza Tuesday, January 10, 12
  • 13. Unit testing for client side code • Automatation • Running unit tests outside the browser? CLIW Bogdan Gaza Tuesday, January 10, 12
  • 14. Unit testing for client side code • Unit tests for client side code can be integrated with current build systems • Using Node.js / Rhino we can create a browser-like environment CLIW Bogdan Gaza Tuesday, January 10, 12
  • 15. Unit testing for client side code • PhantomJS • Headless WebKit with JavaScript API • Native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG. • PhantomJS can be controlled or scripted using JavaScript API CLIW Bogdan Gaza Tuesday, January 10, 12
  • 16. Unit testing for client side code • PhantomJS • Headless WebKit with JavaScript API • Native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG. • PhantomJS can be controlled or scripted using JavaScript API CLIW Bogdan Gaza Tuesday, January 10, 12
  • 17. Client side performance testing CLIW Bogdan Gaza Tuesday, January 10, 12
  • 18. Client side performance testing In order to measure client side performance testing, metrics about the environment need to be gathered. Ex: How much times does it take to load the page? CLIW Bogdan Gaza Tuesday, January 10, 12
  • 19. Client side performance testing • Measuring: • Insert JS code and measure performance • Browser web developer tools - waterfall diagram CLIW Bogdan Gaza Tuesday, January 10, 12
  • 20. Client side performance testing CLIW Bogdan Gaza Tuesday, January 10, 12
  • 21. Usability testing CLIW Bogdan Gaza Tuesday, January 10, 12
  • 22. Usability testing • Usability testing is a technique used in user- centered interaction design to evaluate a product by testing it on users. (Wikipedia) CLIW Bogdan Gaza Tuesday, January 10, 12
  • 23. Usability testing • How? • Hallway testing: random set of people are brought to test the product/service. • Expert review: use experts (possibly from companies that specialize in usability testing) • Usually complicated and error prone CLIW Bogdan Gaza Tuesday, January 10, 12
  • 24. Functional testing CLIW Bogdan Gaza Tuesday, January 10, 12
  • 25. Functional testing • Functional testing is a type of black box testing that bases its test cases on the specifications of the software component under test. • Black-box: http://en.wikipedia.org/wiki/Black_box_testing CLIW Bogdan Gaza Tuesday, January 10, 12
  • 26. Functional testing • How? • Specifying scenarios: Feature: Addition In order to avoid silly mistakes As a math noobie I want to be told the sum of two numbers CLIW Bogdan Gaza Tuesday, January 10, 12
  • 27. Functional testing • How? • Specifying scenarios: Scenario Outline: Add two numbers Given I have entered <input_1> into the calculator And I have entered <input_2> into the calculator When I press <button> Then the result should be <output> on the screen CLIW Bogdan Gaza Tuesday, January 10, 12
  • 28. Functional testing • How? • Selenium CLIW Bogdan Gaza Tuesday, January 10, 12
  • 29. Functional testing • Selenium • Test automation tool for web applications • Can be used for most of the browsers/ platform combinations • Supports many languages CLIW Bogdan Gaza Tuesday, January 10, 12
  • 30. Functional testing • Selenium IDE • Firefox plugin • IDE for selenium tests • Provides record and playback functionalities • Exports tests in different formats (HTML, Ruby, Python etc) CLIW Bogdan Gaza Tuesday, January 10, 12
  • 31. Practical examples - demo CLIW Bogdan Gaza Tuesday, January 10, 12
  • 32. Conclusions CLIW Bogdan Gaza Tuesday, January 10, 12
  • 33. Client-side web testing improves the quality of your software CLIW Bogdan Gaza Tuesday, January 10, 12
  • 34. Client-side web testing can be cumbersome CLIW Bogdan Gaza Tuesday, January 10, 12
  • 35. But saves bug tracking/fixing time, and is a must in business critical software CLIW Bogdan Gaza Tuesday, January 10, 12
  • 36. Questions! CLIW Bogdan Gaza Tuesday, January 10, 12
  • 37. Thanks! CLIW Bogdan Gaza Tuesday, January 10, 12