testing tools

85
In this session, we explore Ajax Testing Tool Review when to test, what to test, how to test Ajax applications Wednesday, October 1st, 1:00 – 2:30p Ted Husted In this session, we explore when to test, what to test and how to test Ajax components. creating automatic tests with various tools, including YUI Test and OpenQA Selenium how to use Ajax testing tools with IDEs and continuous integration systems.

Upload: ted-husted

Post on 11-May-2015

6.021 views

Category:

Technology


3 download

DESCRIPTION

Not long ago, testing Ajax components meant play-testing a page by hand. Today, there are a growing number of tools we can use to simplify and automate Ajax testing. In this session we will cover when to test, what to test and how to test Ajax components. You learn how to create automatic tests with various tools, including YUI Test, and OpenQA Selenium, and how to use Ajax testing tools with IDEs and Continuous Integration systems. In this session, you will learn: * When, where and how to test Ajax components; * How to create automatic tests with various tools; * How to use Ajax testing tools with IDEs and Continuous Integration systems.

TRANSCRIPT

Page 1: Testing Tools

In this session, we explore

Ajax Testing Tool Review when to test, what to test, how to test Ajax applications

Wednesday, October 1st, 1:00 – 2:30pTed Husted

In this session, we explore

� when to test, what to test and how to test Ajax components.

� creating automatic tests with various tools, including YUI Test and OpenQA Selenium

� how to use Ajax testing tools with IDEs and continuous integration systems.

Page 2: Testing Tools

Ajax Testing Tool Reviewwhen to test, what to test, how to test Ajax applications

Square One University Series

Page 3: Testing Tools

For the latest version of this presentation, visit http://slideshare.com/ted.husted

For the latest version of source code,

Ajax Testing Tool Review

For the latest version of source code,visit http://code.google.com/p/yazaar/

Page 4: Testing Tools

Abstract

Not long ago, testing Ajax components meant play-testing a page by hand.

Today, there are a growing number of tools Today, there are a growing number of tools we can use to simplify and automate Ajax testing.

During the session, we will cover� when, what, and how to test Ajax applications

� creating automatic tests with various tools

� testing with IDEs and continuous integration systems

Page 5: Testing Tools

Ajax Testing Tool Review

Tool Review� JsUnit and YUI Test

� Selenium

� Cruise Control and Hudson

Ajax Testing in Action � Live Coding Demonstration

� YUI Test + Selenium + Hudson + Eclipse

Page 6: Testing Tools

JsUnit

JsUnit is a Unit Testing framework for client-side (in-browser) JavaScript.

Essentially a port of JUnit to JavaScript. Essentially a port of JUnit to JavaScript.

Platform for automating the execution of tests on multiple browsers and multiple machines running different OSs.

Development began in January 2001.

Page 7: Testing Tools

JsUnit – Key Features

Create test cases with JavaScript code.

Tracing modes - warn, info, and debug.

Group related cases using test suites.Group related cases using test suites.

Server component� provide integration with other test platforms,

� test logging, and

� running tests on multiple target platforms.

Page 8: Testing Tools

JsUnit – Key Features

Browser Support - Internet Explorer 5.0+, Firefox or Mozilla 0.9+, Netscape 6.0+, and Konqueror 5+.

Release - 2.2 (Alpha, 2006 March)� 2.2.0 (tagged 2008 Jan)

� Since 2001

License - GPL, LGPL, MPL

One team member

Page 9: Testing Tools

http://jsunit.net/

Page 10: Testing Tools

http://www.jsunit.net/runner/testRunner.html?testpage=/runner/tests/jsUnitTestSuite.html

Page 11: Testing Tools

http://www.jsunit.net/runner/testRunner.html?testpage=/runner/tests/jsUnitTestSuite.html

Page 12: Testing Tools

http://www.jsunit.net/documentation/runnerExample.html

Page 13: Testing Tools

http://jsunit.net/documentation/

Page 14: Testing Tools

http://tech.groups.yahoo.com/group/jsunit/

Page 15: Testing Tools

http://www.cafepress.com/agilestuff

Page 16: Testing Tools

http://www.cafepress.com/agilestuff

Page 17: Testing Tools

JsUnit

No Form Support

No Asynchronous Support

Server Support - JavaServer Support - Java

IDE Support - Eclipse, IDEA

CruiseControl Support

Page 18: Testing Tools

JsUnit

Strengths � Established,

� xUnit model,

Weaknesses � Sole Developer,

� Conservative License,� xUnit model,

� Active community.

Conservative License,

� Irregular release schedule,

� Several known limitations.

Page 19: Testing Tools

JsUnit

Bottom Line� Use when team members are already

experienced with jsUnit � (and licensing is not an issue)

� Consider YUI Test to test asynchronous code if starting fresh � (or willing to try something new).

� For acceptance tests, add Selenium to the mix

Page 20: Testing Tools

JsUnit

Resources� AJAX and Unit Testing - it's time to mingle

� Jim Plush (2006 Feb)

� http://www.litfuel.net/plush/?postid=117

� Ajax and Unit Testing Part Two, The Wrath of Mock� Jim Plush (2006 Nov)

� http://www.litfuel.net/plush/?postid=154

Page 21: Testing Tools

YUI Test

Testing framework for browser-based JavaScript solutions.

Add unit testing to JavaScript solutions.Add unit testing to JavaScript solutions.

Derives characteristics from nUnit and jUnit.

Page 22: Testing Tools

YUI Test – Key Features

Create test cases through simple syntax.

Failure detection for methods that throw errors.errors.

Group related cases using test suites.

Asynchronous tests for testing events and Ajax communication.

Cross-browser DOM Event simulation.

Page 23: Testing Tools

YUI Test – Key Features

Support for “A-Grade” Browsers

Release 2.5.2 (2008 May)� Since July 2007 (YUI 2.3.0)� Since July 2007 (YUI 2.3.0)

License – BSD

~16 Team Members � Yahoo! employees and contributors

� Maintained by Nicholas C. Zakas� http://www.nczonline.net/

Page 24: Testing Tools

http://developer.yahoo.com/yui/yuitest/

Page 25: Testing Tools

http://developer.yahoo.com/yui/yuitest/#start

Page 26: Testing Tools

http://developer.yahoo.com/yui/examples/yuitest/yt-advanced-test-options.html

Page 27: Testing Tools

http://developer.yahoo.com/yui/docs/module_yuitest.html

Page 28: Testing Tools

http://developer.yahoo.com/yui/docs/YAHOO.util.DateAssert.html#method_datesAreEqual

Page 29: Testing Tools

http://yuiblog.com/assets/pdf/cheatsheets/yuitest.pdf

Page 30: Testing Tools

http://tech.groups.yahoo.com/group/ydn-javascript/

Page 31: Testing Tools

http://tech.groups.yahoo.com/group/ydn-javascript/msearch?query=yuitest

Page 32: Testing Tools

YUI Test

Form Support

Asynchronous Support

No Server SupportNo Server Support

No IDE Support

No CI Support

Page 33: Testing Tools

YUI Test

Strengths � Bundled with YUI

Library

Weaknesses� Bundled with YUI

LibraryLibrary

� Large, well-funded team

� Regular releases

� Active community

� Well documented

Library

� Lacks server support

Page 34: Testing Tools

YUI Test

Bottom Line: � Use when coding JavaScript or Ajax

applications (and Test-Driven Development)

� Good for simple event/form tests

� Needs better automation tools

� For true acceptance tests, add Selenium to the mix

Page 35: Testing Tools

YUI Test

Resources� Test Driven Development with YUI Test

� Nicholas D. Zakas (2008 September)� http://ajaxexperience.techtarget.com/assets/documents/Nicholas_Zakas_Test_Driven_Development.pdf

� (presentation)

� Writing Your First YUI Application� Eric Miraglia (2008 May)� http://www.insideria.com/2008/05/writing-your-first-yui-applica.html

Page 36: Testing Tools

Open QA Selenium

Selenium is a suite of tools to automate web app testing across many platforms

Selenium IDE records and runs tests as a Selenium IDE records and runs tests as a Firefox Plugin.

Selenium Remote Control runs tests across multiple platforms

Selenium Grid distributes test running across multiple machines

Page 37: Testing Tools

Selenium – Key Features

Create test scripts using Selenium Commands.

Run tests in against live applications. Run tests in against live applications.

Compile test scripts in native languages, such as Java, C#, Ruby.

Integrate scripts with other test suites and continuous integrations systems.

Page 38: Testing Tools

Selenium – Key Features

Support for major browsers� Firefox 2+, (RC and Core) IE7, Safari 2+, Opera 8+, Windows,

OS X, Linus, Solaris.

Current Releases Current Releases � IDE, RC, Grid, 2008; Core: 2007

� Since 2005

License – Apache

~11 Team Members � Originated as ThoughtWorks project

Page 39: Testing Tools

http://selenium.openqa.org/

Page 40: Testing Tools

http://selenium.openqa.org/documentation/

Page 41: Testing Tools
Page 42: Testing Tools
Page 43: Testing Tools
Page 44: Testing Tools
Page 45: Testing Tools
Page 46: Testing Tools
Page 47: Testing Tools
Page 48: Testing Tools
Page 49: Testing Tools
Page 50: Testing Tools
Page 51: Testing Tools
Page 52: Testing Tools
Page 53: Testing Tools
Page 54: Testing Tools

<tr><td>open</td><td>Welcome.action</td><td></td></tr>

<tr><td>assertTitle</td><td>MailReader</td><td></td></tr>

<tr><td>clickAndWait</td><td>link=Register with MailReader</td><td></td>

<tr><td>assertTitle</td><td>MailReader - Register</td><td></td></tr>

<tr><td>type</td><td>Register_save_username</td><td>trillian</td></tr>

<tr><td>type</td><td>Register_save_password</td><td>astra</td></tr>

<tr><td>type</td><td>Register_save_password2</td><td>astra</td></tr>

<tr><td>type</td><td>Register_save_fullName</td><td>Tricia McMillian</t

<tr><td>type</td><td>Register_save_fromAddress</td><td>tricia@magrathea.

<tr><td>clickAndWait</td><td>Register_save_Save</td><td></td></tr>

<tr><td>assertTitle</td><td>MailReader - Menu</td><td></td></tr>

<tr><td>assertTextPresent</td><td>Tricia McMillian</td><td></td></tr>

Page 55: Testing Tools
Page 56: Testing Tools
Page 57: Testing Tools

RegisterTrillianTest.java

public class RegisterTrillianTest extends SeleneseTestCase {public void testRegisterTrillian() throws Exception { selenium.open("/menu/Welcome.action");assertEquals("MailReader", selenium.getTitle());selenium.click("link=Register with MailReader");selenium.waitForPageToLoad("30000");selenium.waitForPageToLoad("30000");assertEquals("MailReader - Register", selenium.getTitle());selenium.type("Register_save_username", "trillian");selenium.type("Register_save_password", "astra");selenium.type("Register_save_password2", "astra");selenium.type("Register_save_fullName", "Tricia McMillian");selenium.type("Register_save_fromAddress", "[email protected]");selenium.click("Register_save_Save");selenium.waitForPageToLoad("30000");assertEquals("MailReader - Menu", selenium.getTitle());checkForVerificationErrors();

}

Page 58: Testing Tools

http://clearspace.openqa.org/index.jspa

Page 59: Testing Tools

OpenQA Selenium

Form Support

Asynchronous Support

Server SupportServer Support

IDE Support

CI Support

Page 60: Testing Tools

Firefox 3 and Selenium RC

The current Remote Control beta release (2007) is not compatible with FF3

Minor configuration issue with version Minor configuration issue with version numbering in FF3

Hot patch available

Best Advice: Install FF2 in default location, and FF3 in an alternate spot.

Page 61: Testing Tools

OpenQA Selenium

Strengths � Granual toolset

� Large, dedicated

Weaknesses� Complex setup

� Superficial suite � Large, dedicated team

� Steady releases

� Active community

� Superficial suite support

� Choppy documentation

� Perpetual beta

Page 62: Testing Tools

OpenQA Selenium

Bottom Line� Use to create acceptance tests

� Complements unit tests� Complements unit tests

Page 63: Testing Tools

CruiseControl

Continuous build process framework

Plugins for email notification, Ant, and source control tools. source control tools.

Web interface to view build details

Page 64: Testing Tools

CruiseControl – Key Features

Build loop – On trigger event, runs tasks, notifies listeners.

Legacy reporting - Browse results of Legacy reporting - Browse results of build loop and access artefacts.

Dashboard - Visual representation of project status.

Page 65: Testing Tools

CruiseControl – Key Features

Java, Ruby, and .NET projects

Several third-party tools and plugins

Java, .NET, and Ruby Releases in 2008Java, .NET, and Ruby Releases in 2008� Java 2.7.3, .NET 1.4 (July)

� Ruby 1.3.0 (April)

� Since 2001

License – BSD Style

~8, ~12+, ~6, Team Members

Page 66: Testing Tools

http://cruisecontrol.sourceforge.net/

Page 67: Testing Tools

http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET

Page 68: Testing Tools

http://cruisecontrolrb.thoughtworks.com/

Page 69: Testing Tools

http://cruisecontrol.sourceforge.net/overview.html

Page 70: Testing Tools

http://cruisecontrol.sourceforge.net/dashboard.html

Page 71: Testing Tools

http://confluence.public.thoughtworks.org/display/CC/Home

Page 72: Testing Tools

http://sourceforge.net/mailarchive/forum.php?forum_name=cruisecontrol-user

Page 73: Testing Tools

Cruise Control

Strengths � Mature

� Multi-platform

Weaknesses� XML configuration

� Choppy � Multi-platform

� Regular releases

� Active community

� Choppy documentation

Page 74: Testing Tools

Hudson

Continuous build process framework

Runs as a Java web application

BYO Container or standalone modeBYO Container or standalone mode

Page 75: Testing Tools

Hudson – Key Features

RSS/E-mail/IM Integration

JUnit/TestNG test reporting

Permanent linksPermanent links

Change set support

After-the-fact tagging

History trend, Distributed builds, File fingerprinting, Plugins.

Page 76: Testing Tools

Hudson – Key Features

Quick Install, Free style setup – Runs standalone, instant project checkout, automatic build configuration.

Visual Configuration – No XML required.

Friendly Dashboard - Project status at a glance.

Page 77: Testing Tools

Hudson – Key Features

Regular releases (daily/weekly milestones)

License -- MIT / Creative Community

Page 78: Testing Tools

http://cruisecontrol.sourceforge.net/

Page 79: Testing Tools
Page 80: Testing Tools

http://cruisecontrol.sourceforge.net/dashboard.html

Page 81: Testing Tools

Hudson

Strengths � Simple setup

� Slick UI

Weaknesses� Java container

� Committers?� Slick UI

� Well documented

� Regular releases

� Active community

� Committers?

Page 82: Testing Tools

http://cruisecontrol.sourceforge.net/overview.html

Page 83: Testing Tools

Let's Code It!

Page 84: Testing Tools

Ajax Testing Tool Review

During the session, we covered� when, what, and how to test Ajax applications

� creating automatic tests with various tools

� testing with IDEs and continuous Integration systems

Page 85: Testing Tools

Square One University Series