Difference between revisions of "SWTBot/Proposal"

From Eclipsepedia

Jump to: navigation, search
m (fixed email addresses for spam bots.)
m (Introduction)
 
(28 intermediate revisions by 10 users not shown)
Line 1: Line 1:
===Introduction===
+
= Draft proposal =
SWTBot (http://swtbot.org) is a functional testing tool for SWT/Eclipse based applications. That eases and supports testing of multithreaded applications. SWTBot is capable of playback and recording of SWTBot Java "scripts", there are plans to provide scripting support for various other languages including JRuby(http://jruby.codehaus.org), and Groovy(http://groovy.codehaus.org/).
+
This is a draft proposal, feel free to contribute to it!
  
SWTBot is proposed as an open source project under the Eclipse Technology Project (http://www.eclipse.org/technology/). This proposal is still in the Project Proposal Phase, and this proposal is being made in order to call for more community participation.
+
== Introduction ==
  
===Background and Goal===
+
SWTBot (http://swtbot.org) is a functional testing tool for SWT/Eclipse based applications that eases and supports testing of multithreaded applications. SWTBot is capable of playback and recording of SWTBot Java "scripts", there are plans to provide scripting support for various other toolkits like Nebula and GEF, and JVM based languages including JRuby (http://jruby.codehaus.org), and Groovy (http://groovy.codehaus.org/).
SWTBot has demonstrated some interesting capabilities (http://swtbot.sourceforge.net/wiki/Screencasts) and very early on, and is being supported by a few contributors.
+
  
The goal of SWTBot is to provide a lightweight functional testing tool for SWT and Eclipse, and make it easy for developers and non-developers to automate testing of applications written using Eclipse.
+
SWTBot provides an API that allows a developer to rigorously test his application functionally. SWTBot enables a developers to write tests that would interact with the application's user interface.
  
===Packaging and Deployment===
+
SWTBot is proposed as an open source project under the Eclipse Technology Project (http://www.eclipse.org/technology/). This proposal is still in the Project Proposal Phase, and is being made in order to call for more community participation. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.swtbot newsgroup.
SWTBot currently ships in the form of an eclipse update site, and also an independent .zip/.tgz download, and it would continue to ship in these forms.
+
  
===Project Scope===
+
== Background and Goal ==
The scope of SWTBot is to make writing tests for SWT and Eclipse application easier not just for developers who understand the technologies, but also for Quality Analysts who understand the application and not the underlying technologies used to build them.
+
  
SWTBot should integrate well with JUnit so as to make execution and reporting of tests independent of Eclipse, yet integrate will with eclipse. This would mean that SWTBot tests can be run as an ant task as part of Continuous Integration using CruiseControl.
+
The development of applications based on SWT, RCP and the Eclipse platform in general is growing fast. With complex desktop applications increasingly using the eclipse platform, manual testing of these applications becomes a major concern in the development lifecycle of the application. The need for automated testing is inevitable in such cases and SWTBot helps projects in such cases.
 +
 
 +
Automated testing code needs the same love and affection that code does. This means better IDE support for writing tests, reusing test code, refactoring, etc. Simplifying this test code so that it is agnostic of SWT and Eclipse and deals with UI paradigms would be appealing to non-developers and would help address this issue to a large extent.
 +
 
 +
SWTBot has demonstrated some of these capabilities (http://swtbot.sourceforge.net/screencasts/SWTBotEclipseHelloWorld-FullScreen.html) very early on, and is being supported by a few contributors.
 +
 
 +
The goal of SWTBot is to provide APIs that can be used by programmers to drive SWT based UIs by providing a lightweight functional testing tool for SWT and Eclipse, and to make it easy for non-developers to automate testing of applications written using Eclipse in a way that is consistent with what has been stated above.
 +
 
 +
== Architecture and Extensibility ==
 +
 
 +
SWTBot provides a foundation that is responsible for locating SWT and Eclipse widgets.  Providing this foundation offers an extensible framework to build upon.  This framework already includes the ability to find many of the SWT widgets.  However it could be extended to add support for nebula items, eclipse forms, eRCP, GEF and possibly even AWT/Swing.
 +
 
 +
SWTBot's method for finding widgets can also be greatly extended to support locating other types of items.  Matchers provide the rules for finding widgets and can be created or extended to advance the matching techniques.
 +
 
 +
Finally, SWTBot provides wrappers around widgets to encapsulate the operations and querying of state for the given widget.    Since many widgets share functionality these wrappers provides new widgets an excellent starting point in most cases.
 +
 
 +
== Project Scope ==
 +
 
 +
The scope of SWTBot is to make writing tests for SWT and Eclipse applications easier not just for developers who understand the technologies, but also for Quality Analysts who understand the application but not the underlying technologies used to build them.
 +
 
 +
SWTBot should integrate well with JUnit so as to make execution and reporting of tests independent of Eclipse, yet integrate well with Eclipse. This would mean that SWTBot tests can be run as an Ant task as part of Continuous Integration using CruiseControl.
  
 
There are also efforts by individuals to port SWTBot to eRCP/eSWT.
 
There are also efforts by individuals to port SWTBot to eRCP/eSWT.
  
===Future Work===
+
== Future Roadmap ==
It is proposed that SWTBot should provide APIs that enable for scripting languages based on the JVM. This would mean that scripts could potentially be written using JRuby (http://www.eclipse.org/proposals/glimmer/) or Groovy(http://groovy.codehaus.org/GroovySWT).
+
  
To make writing scripts easier, it is also proposed for better Eclipse integration, introspection of the application, and basic support for scripting/debugging.
+
The immediate priorities for SWTBot in order of importance are:
 +
# Better support for eclipse contributions: view, menu, toolbar, editor contributions.
 +
# Support for eclipse-forms
 +
# Support for Nebula
 +
# Support for GEF
  
===Organization===
+
To make writing scripts easier, it is also proposed to provide better Eclipse integration, introspection of the application, and basic support for scripting/debugging.
 +
 
 +
It is proposed that SWTBot should provide APIs that enable scripting languages based on the JVM. This would mean that scripts could potentially be written with JRuby using Glimmer (http://www.eclipse.org/proposals/glimmer/) or with Groovy using GroovySWT (http://groovy.codehaus.org/GroovySWT).
 +
 
 +
== Concerns ==
 +
 
 +
There is currently some of overlap between SWTBot and TPTP's AGR. TPTP supports Eclipse plugins, but does not support plain SWT applications, nor easy Ant integration. SWTBot's focus is to become a low level ''driver'' to drive SWT and Eclipse applications while filling these shortcomings of AGR.
 +
 
 +
== Packaging and Deployment ==
 +
 
 +
SWTBot currently ships in the form of an Eclipse update site, and also an independent .zip/.tgz download. It would continue to ship in these forms.
 +
 
 +
== Organization ==
  
 
'''Mentors'''
 
'''Mentors'''
 
* Chris Aniszczyk
 
* Chris Aniszczyk
* Someone else
+
* Ed Merks
  
 
'''Initial committers'''
 
'''Initial committers'''
 
* Ketan Padegaonkar (ketanpadegaonkar at gmail)
 
* Ketan Padegaonkar (ketanpadegaonkar at gmail)
* Sriram Narayanan (ram at thoughtworks.com)
+
* Stephen Paulin
  
 
'''Potential committers''' (individuals who have contributed patches)
 
'''Potential committers''' (individuals who have contributed patches)
Line 43: Line 75:
 
* Nirav Thaker (nirav.thaker at gmail)
 
* Nirav Thaker (nirav.thaker at gmail)
 
* Ravi Chodavarapu (rchodava at gmail.com)
 
* Ravi Chodavarapu (rchodava at gmail.com)
 +
* Stefan Seelmann, Apache Directory Studio (seelmann at apache.org)
 +
* ANCiT Consulting, (Annamalai C, annamalai at ancitconsulting.com)
 +
* Ben Xu (xufengbing at gmail.com)
 +
* Mirko Stocker (me at misto.ch)
 +
* Emanuel Graf (egraf at hsr.ch)
 +
* [http://www.eclipse.org/rap RAP] (Benjamin Muskalla)
 +
* Sriram Narayanan (ram at thoughtworks.com)
 +
* Reinhold Bihler (reinhold dot bihler at group-technologies dot com)
 +
 +
[[Category:Eclipse Project]] [[Category:SWTBot]]

Latest revision as of 18:46, 19 November 2009

Contents

[edit] Draft proposal

This is a draft proposal, feel free to contribute to it!

[edit] Introduction

SWTBot (http://swtbot.org) is a functional testing tool for SWT/Eclipse based applications that eases and supports testing of multithreaded applications. SWTBot is capable of playback and recording of SWTBot Java "scripts", there are plans to provide scripting support for various other toolkits like Nebula and GEF, and JVM based languages including JRuby (http://jruby.codehaus.org), and Groovy (http://groovy.codehaus.org/).

SWTBot provides an API that allows a developer to rigorously test his application functionally. SWTBot enables a developers to write tests that would interact with the application's user interface.

SWTBot is proposed as an open source project under the Eclipse Technology Project (http://www.eclipse.org/technology/). This proposal is still in the Project Proposal Phase, and is being made in order to call for more community participation. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.swtbot newsgroup.

[edit] Background and Goal

The development of applications based on SWT, RCP and the Eclipse platform in general is growing fast. With complex desktop applications increasingly using the eclipse platform, manual testing of these applications becomes a major concern in the development lifecycle of the application. The need for automated testing is inevitable in such cases and SWTBot helps projects in such cases.

Automated testing code needs the same love and affection that code does. This means better IDE support for writing tests, reusing test code, refactoring, etc. Simplifying this test code so that it is agnostic of SWT and Eclipse and deals with UI paradigms would be appealing to non-developers and would help address this issue to a large extent.

SWTBot has demonstrated some of these capabilities (http://swtbot.sourceforge.net/screencasts/SWTBotEclipseHelloWorld-FullScreen.html) very early on, and is being supported by a few contributors.

The goal of SWTBot is to provide APIs that can be used by programmers to drive SWT based UIs by providing a lightweight functional testing tool for SWT and Eclipse, and to make it easy for non-developers to automate testing of applications written using Eclipse in a way that is consistent with what has been stated above.

[edit] Architecture and Extensibility

SWTBot provides a foundation that is responsible for locating SWT and Eclipse widgets. Providing this foundation offers an extensible framework to build upon. This framework already includes the ability to find many of the SWT widgets. However it could be extended to add support for nebula items, eclipse forms, eRCP, GEF and possibly even AWT/Swing.

SWTBot's method for finding widgets can also be greatly extended to support locating other types of items. Matchers provide the rules for finding widgets and can be created or extended to advance the matching techniques.

Finally, SWTBot provides wrappers around widgets to encapsulate the operations and querying of state for the given widget. Since many widgets share functionality these wrappers provides new widgets an excellent starting point in most cases.

[edit] Project Scope

The scope of SWTBot is to make writing tests for SWT and Eclipse applications easier not just for developers who understand the technologies, but also for Quality Analysts who understand the application but not the underlying technologies used to build them.

SWTBot should integrate well with JUnit so as to make execution and reporting of tests independent of Eclipse, yet integrate well with Eclipse. This would mean that SWTBot tests can be run as an Ant task as part of Continuous Integration using CruiseControl.

There are also efforts by individuals to port SWTBot to eRCP/eSWT.

[edit] Future Roadmap

The immediate priorities for SWTBot in order of importance are:

  1. Better support for eclipse contributions: view, menu, toolbar, editor contributions.
  2. Support for eclipse-forms
  3. Support for Nebula
  4. Support for GEF

To make writing scripts easier, it is also proposed to provide better Eclipse integration, introspection of the application, and basic support for scripting/debugging.

It is proposed that SWTBot should provide APIs that enable scripting languages based on the JVM. This would mean that scripts could potentially be written with JRuby using Glimmer (http://www.eclipse.org/proposals/glimmer/) or with Groovy using GroovySWT (http://groovy.codehaus.org/GroovySWT).

[edit] Concerns

There is currently some of overlap between SWTBot and TPTP's AGR. TPTP supports Eclipse plugins, but does not support plain SWT applications, nor easy Ant integration. SWTBot's focus is to become a low level driver to drive SWT and Eclipse applications while filling these shortcomings of AGR.

[edit] Packaging and Deployment

SWTBot currently ships in the form of an Eclipse update site, and also an independent .zip/.tgz download. It would continue to ship in these forms.

[edit] Organization

Mentors

  • Chris Aniszczyk
  • Ed Merks

Initial committers

  • Ketan Padegaonkar (ketanpadegaonkar at gmail)
  • Stephen Paulin

Potential committers (individuals who have contributed patches)

  • Cedric Chabanois (cedric.chabanois at entropysoft.net)
  • Lechner Sami (lechner.sami at gmail)

Interested parties

  • PDE (Chris Aniszczyk)
  • ThoughtWorks Studios (http://studios.thoughtworks.com)
  • Nirav Thaker (nirav.thaker at gmail)
  • Ravi Chodavarapu (rchodava at gmail.com)
  • Stefan Seelmann, Apache Directory Studio (seelmann at apache.org)
  • ANCiT Consulting, (Annamalai C, annamalai at ancitconsulting.com)
  • Ben Xu (xufengbing at gmail.com)
  • Mirko Stocker (me at misto.ch)
  • Emanuel Graf (egraf at hsr.ch)
  • RAP (Benjamin Muskalla)
  • Sriram Narayanan (ram at thoughtworks.com)
  • Reinhold Bihler (reinhold dot bihler at group-technologies dot com)