Summer of Code

Hi all,

My name is Frank Tobia, and I’ll be creating a unit testing framework for wxPython as part of Google’s Summer of Code.

Right now I’m a sophomore/junior at RPI studying Computer and Systems Engineering and Economics. My background in software development has been split between school projects and summer internships working on R&D projects for the Army. There I learned a lot about how software projects shouldn’t be run, and became interested in the tools and practices for running a successful project. Testing especially jumped out at me. The project I worked on was the epitome of a “throw-it-over-the-wall” mentality. The code got manually ‘tested’ once per release, and bug regressions were the norm. I realized that there is often a testing vacuum to be filled on software projects, and I’ve been doing my best to fill it since then.

My project entails developing a cross-platform testing framework suited to the GUI nature of wxPython. The tests should be easy to run, maintain, and extend. First I plan on doing research to identify existing tools for the job, and to determine what will work best for wxPython. Next I’ll work on writing the framework, as well as the documentation for using and extending it. After the framework is far enough along, I’ll start developing a comprehensive suite of unit and regression tests. I’ll aim at exercising the trickier corners of the codebase while also focusing on all-around code coverage. Of course, my main goal is to create something that the community will use and enjoy, and so I’ll be seeking feedback at each stage of the process.

I’ve been interested in getting involved in open source for a year or two, but in between school and summer jobs I could never seem to get started.
I’m very glad now to have the opportunity to give back, and I’m looking forward to being a part of the community.

-Frank

Hi Frank,

Hi all,

My name is Frank Tobia, and I'll be creating a unit testing framework for
wxPython as part of Google's Summer of Code.

This sounds like a very interesting and useful project for wxPython.
I'm the author of Task Coach, an application that uses wxPython as its
GUI toolkit (www.taskcoach.org). I've been trying to use test-driven
development to develop Task Coach, although I must admit I'm not
always working by the book. However, as a result I've some experience
creating unittests using the unittest.py package included in python
for wxPython related code. Task Coach includes about 1900 unittests,
but not all of those are testing the GUI of course. I'm also the
author of TreeMixin which comes with slightly less than 300 unittests
and is part of the wx.lib.mixins package. Maybe these can give you
some idea of what can and cannot be done with plain unittest.py?

Will you be creating a seperate mailinglist or hang out here? I'd like
to be kept up to date or even contribute some tests myself.

Cheers, Frank

···

2007/4/15, Frank Tobia <frank.tobia@gmail.com>:

Hi Frank,

First off, let me say welcome to the project! :slight_smile:

Hi all,

My name is Frank Tobia, and I'll be creating a unit testing framework for wxPython as part of Google's Summer of Code.

Right now I'm a sophomore/junior at RPI studying Computer and Systems Engineering and Economics. My background in software development has been split between school projects and summer internships working on R&D projects for the Army. There I learned a lot about how software projects shouldn't be run, and became interested in the tools and practices for running a successful project. Testing especially jumped out at me. The project I worked on was the epitome of a "throw-it-over-the-wall" mentality. The code got manually 'tested' once per release, and bug regressions were the norm. I realized that there is often a testing vacuum to be filled on software projects, and I've been doing my best to fill it since then.

First, I wanted to say that I'm really glad to see that someone stepped in to tackle automated testing for wxPython. Despite being one of the most sorely needed tools for any software project, and even moreso on projects where resources are limited, it's also seen by many developers as boring and of only minor impact. As such, automated testing is a void that often never gets filled, and I'm excited to see wxPython could become an exception to that rule. :slight_smile:

My project entails developing a cross-platform testing framework suited to the GUI nature of wxPython. The tests should be easy to run, maintain, and extend. First I plan on doing research to identify existing tools for the job, and to determine what will work best for wxPython.

BTW, not sure if you've seen this already, but our unit testing wiki page lists some tools, including platform-specific automation tools:

http://wiki.wxpython.org/index.cgi/Unit_Testing_with_wxPython

So far, in my searches, I've been unable to come across a free and cross-platform automated GUI testing tool, but there are free tools for *nix and Windows which can be scripted using Python. If a free cross-platform solution can't be found, writing a thin wrapper around the *nix and Windows tools might give us the quickest results. Moreover, having the GUI testing tools scriptable from Python should allow us to integrate them into Python's own UnitTest framework, so that we can utilize that for all the methods which can be tested using 'traditional' unit-testing. (e.g. data getter/setter methods) It would also allow us to expose a cross-platform GUI testing solution to our users as well, which I think would be a huge boost to the project.

Next I'll work on writing the framework, as well as the documentation for using and extending it. After the framework is far enough along, I'll start developing a comprehensive suite of unit and regression tests. I'll aim at exercising the trickier corners of the codebase while also focusing on all-around code coverage. Of course, my main goal is to create something that the community will use and enjoy, and so I'll be seeking feedback at each stage of the process.

Also, a couple random thoughts I had about the framework:

- wx is a bit different in that an API may be unsupported on one platform, but supported on others, due to underlying platform limitations. While this happens occasionally on many projects, it happens more often in wx due to the sometimes significant difference in the underlying toolkits. So we'll need some way to address "expected failures" on certain platforms in the tests.

- most classes derive from wxWindow, and many override at least some of its base methods. So IMHO you might want to start building the framework with wxWindow and make a way for subclasses to 'derive' from wxWindow tests, as overridden methods should still behave the same as they do in wxWindow. (In this particular area, I've seen regressions as well as uncaught inconsistencies already.)

Perhaps we should considering making a wiki page for this SoC project, a place to store all the info and ideas related to the project as it moves forward?

I've been interested in getting involved in open source for a year or two, but in between school and summer jobs I could never seem to get started.
I'm very glad now to have the opportunity to give back, and I'm looking forward to being a part of the community.

I think this project will bring some much-needed automated testing to wxPython, and will benefit both wxPython and the underlying wxWidgets toolkit as well. Thanks for coming on board and helping us out!

Regards,

Kevin

···

On Apr 15, 2007, at 1:44 PM, Frank Tobia wrote:

-Frank

Hi Frank,

A very warm welcome to you.

I am using wxPython to develop my little shareware application and I think this will be very handy to help me test it.

Some time ago I looked around for tools, but have not got around to actually use them, but here are the links.

http://www.rutherfurd.net/python/sendkeys/
http://www.tizmoi.net/watsup/intro.html

Werner

To throw an idea for very similar goal to testing: live demos and tutorials for wx applications.

I will try to make your code applicable for live demos.

Nikolay Spahiev

Hi all,

It's the time to present myself and my SoC project too.

I am a PhD student at Université Catholique de Louvain in Belgium,
working on finishing my thesis in Applied Mechanics. I also work for a
small software company (a spin-off) specializing in numerical simulation
software. My research and work activities are tightly linked and
beneficial both ways.

I am the author of XRCed tool bundled with wxPython, which was
originally created for personal use and later became something more.
XRCed provides a minimal set of features for composing XRC resource
files to be loaded by applications using wxPython (or wxWidgets/C++).
There is a number of features which were proposed to be added to XRCed
to make it more user-friendly and powerful, one of them is the
possibility to create plug-ins for custom controls. This was proposed as
a project idea on SoC wxPyWiki page, and I based my application proposal
on it. The project will include refactoring of the existing code to
provide a framework for easy developent and management of resource
plugins. I will provide a wxPyWiki page where I will put more
information about the future design soon. In the meantime all input from
the developers having some experience in plugin architectures is
welcome.

The source code of the project will be accessible on a CVS branch in
wxPython's CVS repository, and wxPyWiki will be used for related
documents/exchange of information. Discussions will be held on this
list.

I am looking forward to provide the wxPython community an improved tool
and to gain a valuable open-source develoment experience.

Best regards,

Roman Rolinsky

Frank Niessink wrote:

Will you be creating a seperate mailinglist or hang out here?

FYI, I've asked the SoC students to use this list for communication as much as possible. That way others can be involved if they wish, and the student will get a better taste of community based work.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Hi, all!

I created a wxPyWiki page:
http://wiki.wxpython.org/index.cgi/XRCed_Refactoring_Project

At the moment it's just an overview of the future development.

Regards,

Roman

···

---------------------------------------------------------------------
To unsubscribe, e-mail: wxPython-dev-unsubscribe@lists.wxwidgets.org
For additional commands, e-mail: wxPython-dev-help@lists.wxwidgets.org