Hi Frank,
First off, let me say welcome to the project!
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.
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