[Zope3-dev] Re: Performance Testing
Tarek Ziadé
tziade at nuxeo.com
Wed Oct 12 17:51:14 EDT 2005
Benji York wrote:
> Tarek has started some very interesting work on adding performance
> testing to the Zope 3 testing infrastructure and it so happens that
> Jim and I were discussing something very similar last week, so I'd
> like to suggest some functionality we might want to have (which I
> should be able to help implement).
>
> 1) warn about regressions: the test runner will keep per-test,
> machine-independent records of how long tests take and will report
> regressions larger than a predefined percentage. These records will
> be checked in so that if someone else makes changes (in a fresh
> checkout) that causes a particular test to slow down drastically, they
> will be warned.
-> About machine-independence: Stephan brought the pystone idea to take
care of it
-> some thaught about percentage
this percentage (let's call it the tolerance), may vary a lot, depending
on the test complexity.
So i think we can do the performance regression testing in two steps i
would like to suggest:
1/ a first step would be to run the tester in a special mode to render
an ordered list for each non-marked test:
+ a measure of the average complexity, including the number of calls
and when possible the type of complexity (linear, exponential,
logarithmic, etc...)
+ a measure of pystones
2/ This stats would then be used to mark all hot spots with a "max
pystones allowed".
The decorator we implemented last week fits well for this.
>
> 2) testbrowser should keep up with a (machine-independent) metric of
> how long the previous request took so performance assertions can be
> made inside tests. E.g.
>
> >>> browser.open('http://localhost/foo')
> >>> browser.last_request_time < 0.5
>
> 3) the functional testing framework should be extended to allow the
> collection of total time (again, machine-independent) per request and
> the test runner should have an option to display the top "n" slowest
> requests.
>
> Comments?
For the same reasons, it would be nice to have the same kind of
regression test for memory taken by objects:
In the webmail i am coding, if i suddenly change the code and by doing
this, i double the size of a mail object
in the ZODB, that can be quite bad, as i have thousands of instances of
them.
So i would like to be able to do the same kind of marker for memory.
Regards,
Tarek
More information about the Zope3-dev
mailing list