← Back to team overview

kicad-developers team mailing list archive

Re: Regression Testing

 

Sorry Dick, didn't realize that we were on a brainstorming process, then please ignore my evaluation to your ideas,
and get my uncreative comments about the standard methods for now.

Will try to be more creative.  

Somehow lately I'm forced to stay on more standard methods for a client I work for, because they always try to stay in standard
methods and systems to reduce maintenance and developer's entry level, but that's an specific case. I think most of us are
also here for creativity and enjoyment!! ;)

Creativity is good and welcome here! ;)   

Miguel Angel Ajo
http://www.nbee.es (http://www.nbee.es/)
+34911407752
skype: ajoajoajo


On Monday, 29 de April de 2013 at 18:33, Dick Hollenbeck wrote:

> Miguel,
>  
> Sorry, I also was evaluating. So I apologize for being hypocritical on that.
>  
> But you'll notice that I was very careful to remain neutral still at this point, and I was
> analyzing mostly my own ideas.
>  
>  
> Still, my bad. You see, brainstorming does take some practice :)
>  
> I think we'll probably end up with a good solution anyways.
>  
>  
> Dick
>  
>  
>  
> for sounding On 04/29/2013 11:27 AM, Dick Hollenbeck wrote:
> > Technically, during the brainstorming process, it is best to gather ideas, and postpone
> > passing judgement on those you have already heard, until the evaluation process, which
> > comes later. There is a theoretical reason why this is not to be done, and it supposedly
> > thwarts creativity.
> >  
> > Creativity is the genesis of good ideas.
> >  
> > After the list of ideas is made, evaluation eventually begins. When it is agreed that
> > there are enough ideas to warrant the transition.
> >  
> > So your idea is CPPUnit.
> >  
> > Brainstorming is a fantastic tool, but admittedly it takes some understanding and
> > agreement to follow it.
> >  
> > The notion of thwarting creativity is specifically one of the things brainstorming tries
> > to avoid, since sometimes the best ideas end up being out of the norm. Improvements come
> > by challenging old ways. If they fall into the waste bucket during the evaluation
> > process, there is no harm at that point.
> >  
> >  
> > Dick
> >  
> >  
> >  
> >  
> > On 04/29/2013 10:40 AM, Miguel Angel Ajo wrote:
> > > I have the feeling that setting entry points from Python to C, when not needed will be an
> > > extra work and harder to maintain. In that
> > > case why not just using C++ standard testing frameworks?, like CPPUnit, or something that
> > > plays well with wx for UI testing?
> > >  
> > > http://wiki.wxwidgets.org/Tools <-- Testing
> > >  
> > >  
> > > We have two things to test:
> > >  
> > > 1) UI/behaviour , this is usually done launching dialogs manually, and calling click
> > > methods, reading form entries, checking output, etc…,
> > > Ideally it must be something like (warning, pseudocode)
> > >  
> > > dialog = MyDialog()
> > >  
> > > n = dialog->getListElements( 'list1' )
> > > dialog->fillField( 'Field1','Content1' )
> > > dialog->clickButton( 'Add' )
> > > assert dialog->getListElements('list1')==(n+1)
> > >  
> > > 2) Model testing: We call the back models with loads of tests to check their correct behavior
> > >  
> > > a) Normal ones, just model behaviour, correct DRC checks,
> > >  
> > > b) Models that generate outputs: In webkit, they just have pngs of the outputs
> > > renderings, and they xor/compare. In our case, we can make a diff of  
> > > the output contents with expected ones, or try to render them to PNG & test theme.
> > > (warning: needs extra maintenance when outputs are enhanced or change, but it will catch
> > > unexpected changes)
> > >  
> > > c) Model testing from python, everything that's swigged out can be tested from there,
> > > and then we get a contract on what the available methods
> > > are to stay as fixed as possible. Even we get loads of examples out of this.
> > >  
> > >  
> > > The automated tests I've seen so far (in the last two years) generate an xml standardized
> > > files (junit xml format) that's used for reports (I use them in bamboo at nbee, and also
> > > with other client for web ui testing, I've even used it to generate VHDL testing outputs
> > > from ghdl) http://projects.nbee.es:8085/browse/S12-DEF the bad thing of bamboo is that it
> > > doesn't play well with bzr (AFAIK)
> > >  
> > >  
> > >  
> > >  
> > >  
> > >  
> > >  
> > > Miguel Angel Ajo
> > > http://www.nbee.es <http://www.nbee.es/>
> > > +34911407752
> > > skype: ajoajoajo
> > >  
> > > On Monday, 29 de April de 2013 at 17:06, Dick Hollenbeck wrote:
> > >  
> > > > >  
> > > > > We could address a) and b) by having a single DLL/DSO specific entrypoint for all tests,
> > > > > with a big switch in there to route to the actual test. This scaffolding has some
> > > > > maintenance cost, and begins to wash out the ease of using python on top, but perhaps not
> > > > > fully.
> > > > >  
> > > >  
> > > >  
> > > >  
> > > > In the python C implementation code you find instances of the paradigm of va_args (tuple)
> > > > with a C string telling which argument types are in the tuple. The C string is like a
> > > > printf format string.
> > > >  
> > > > So it would be possible to make this callable from python and pass all required arguments
> > > > for any worker function. You would have to instantiate the C++ instance before calling
> > > > any member function which is your worker function. But that could be done in the switch
> > > > within the test entrypoint.
> > > >  
> > > >  
> > > > test_result TestEntryPoint( aTestNum, formatStringTellingArgumentTypesInTuple, Tuple )
> > > > {
> > > > switch( aTestNum )
> > > > {
> > > > case XYZ:
> > > > {
> > > > // instantiate what is needed, say obj
> > > >  
> > > > // gleen into C++ arguments, those from Tuple by parsing
> > > > // formatStringTellingArgumentTypesInTuple
> > > > va_args...
> > > >  
> > > > // call object member func with C++ form of arguments in tuple.
> > > > result = obj->WorkerFunction( arg1, arg2, arg3 );
> > > >  
> > > > // destroy what we instantiated.
> > > > }
> > > > }
> > > >  
> > > > return test_result( result ) ; // telling what just happened.
> > > > }
> > > >  
> > > >  
> > > >  
> > > > The above could be a seed for better ideas. It is a means of testing any "worker
> > > > function" from python.
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > >  
> > > > _______________________________________________
> > > > Mailing list: https://launchpad.net/~kicad-developers
> > > > Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> > > > Unsubscribe : https://launchpad.net/~kicad-developers
> > > > More help : https://help.launchpad.net/ListHelp
> > > >  
> > >  
> > >  
> >  
> >  
>  
>  
>  



References