[Dev] Functional test experience report

John Anderson john at osafoundation.org
Thu Nov 3 17:45:51 PST 2005



Ted Leung wrote:

> Hi all.
>
> Last week I discovered that Flickr and some of the other example  
> parcels were broken by changes in the detail view.    This week I set  
> out to write a Functional test (GUI test really, since there isn't a  
> functional spec for Flickr to test against) so that we'd have a  
> little more confidence that Flickr would keep on operating in the  
> face of changes that we need to make to the app.   I think that it is  
> important that we expand our scripting based GUI test coverage.   We  
> are building out enough application functionality that it is hard to  
> test it exhaustively by hand.
>
> When trying to write my test, I ran into several problems, and I  
> thought I'd share my experiences in the hope of saving people some  
> time if they try to write a test.
>
> 1. At the moment we can't script modal dialogs (there's a bug for  
> this <https://bugzilla.osafoundation.org/show_bug.cgi?id=4467>) , and  
> Flickr's code for creating a collection of photos was tied to the  
> code that popped up the dialog.   So I had to refactor the flickr  
> code to separate the dependencies.   The code should have been  
> written that way from the beginning anyway.
>
> 2. I discovered that much of the functionality of QAUITestAppLib is  
> hardwired for the basic Kinds in Chandler, and I had to bypass a good  
> deal of the functionality there and go "down to the metal".  I logged  
> <https://bugzilla.osafoundation.org/show_bug.cgi?id=4569> for this.
>
> 3. I needed to force a repaint/idle in order to have all the  
> collection changes noticed by the sidebar and summary table.   Katie  
> supplied the code below as a solution.  I believe there is a bug for  
> this, but couldn't find it in bugzillla.   I didn't log a bug myself  
> because I wasn't sure where processNextIdle ought to live.

Did you try it with just the Yield (e.g. wx.GetApp().Yield())?. I think 
that may be all that's necessary to run the Idle loop.

>
>     def processNextIdle():
>         wx.GetApp().Yield()
>         ev = wx.IdleEvent()
>         wx.GetApp().ProcessEvent(ev)
>         wx.GetApp().Yield()
>
> I hope this will save people some time as they try to write their own  
> tests.
>
> Ted
>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "Dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/dev



More information about the Dev mailing list