> If you want, you can send me your presentation some time, and I can
> give you some feedback and/or we can do some brainstorming about it.

I now have a draft presentation:
http://www.csse.uwa.edu.au/~john/drafts/LCA_Da11-diag.pdf

On Thu, Dec 30, 2010 at 9:27 PM, Vincent van Ravesteijn <v...@lyx.org> wrote:
>> its rather psychological than technical issue that if keytest generate 5 bugs
>> per week you easily break through certain threshold after which motivation
>> to fix remaining bugs decrease. i'm sure Vincent could give you better 
>> insights ;)
>
> From a technical point of view it's very good to be able to
> stress-test the software. But some bugs found by keytest require too
> much effort in comparison to the improved usability of LyX. Then I'd
> rather don't want to know about them (it's not like we're running a
> nuclear plant here).

Would you like to suggest a solution? Perhaps artificially
rate-limiting the bug reports not relating to recent regressions to
say 1/week?

It seems that the majority of bugs found by keytest would eventually
be hit by users. I understand that even the threaded export bugs have
started hitting users. It seems that the flood of bugs found when the
keytest is first turned on could be a large part of psychological
issues. Also if we ratelimit the bugs,  the bugs reported could be
chosen on the basis of the effect on usability.

I was wondering if Keytest also has the potential to provide
psychological advantages,
  e.g.
1) Avoid floods of bug reports in the beta cycle by moving them earlier
2) Always feel ready to ship, and ready to test.

Frequently used functions have shortcuts, and so breakage in those
functions should be found by keytest quite quickly. This should mean
that one could send a friend an arbitrary snapshot and be somewhat
confident that they notice how cool your latest feature is before they
hit any embarrassing bugs.

One of my hopes is that the trunk could feel stable, leading to more
power users thinking "I know how to deal with regressions and trunk
feels pretty stable, lets try doing real work with it".  Since bugs
that occur when doing real work are the most valuable these would help
keep LyX ready to ship. One hope would be that this could avoid the
risk that it would feel that the next version will never be as
reliable as the last.

> As a final remark, I think that if you want to have rock-solid
> software, mon-keytesting will not suffice. I bet I can find more
> critical bugs than the keytesting will. For instance by entering
> commands in the command buffer. I'm sure your monkeytest will type
> some valid lfuns in there, but it will take you some ages of the
> universe before it enters an lfun (or a combination of lfuns) that
> will crash LyX.

There is a paper suggesting that only roughly %20 of bugs will be
found by monkeytesting, but the most serious bugs are more likely to
be detected. Crashing every time a document containing a math-inset is
likely to be found quickly. An function only accessible by LFUN is
less likely to vital to many users.

For rock-solid software I suspect you'd want multiple ways of finding
bugs; since Monkeytesting is cheap it should probably be included. One
could formally prove that an embedded system is correct, and yet
testing could still discover that the CPU catches fire under heavy
load. My personal motivation is more in finding bugs that cause major
breakage quickly, and avoiding the big dip in quality that typically
occurs between opening trunk and releasing a beta.

> In that sense I'm not sure whether a technique like this has a future.
> If I would invent something I would go one level deeper and would call
> the functions of a class with random parameters. For example, if you
> have the function Math::sqrt(x), it will not take long until one finds
> out that a negative value of x will be a problem, so the algorithm
> automatically finds that there should be a condition that x can never
> be smaller than 0. This can be used in the functions that call this
> sqrt-functions and these assert when x becomes smaller than 0 and so
> forth and so forth.

I thought I would briefly mention static analysis. Static analysis has
the potential to show exactly what the code defect is, making fixing
the code defect trivial. Static Analysis tools are difficult to
develop though.

> In the end, what would be the best way to test software ? What
> available software is there to test it ? Is your monkeytesting filling
> a niche in there ? What advantages does the monkeytesting have over
> other approaches ?

I see the main advantage as being that Monkeytesting has the potential
to be essentially free. E.g. If 1% of Ubuntu users were willing to run
keytest in the background every OSS project could be monkeytested many
times over. So regardless of what other testing is also done, monkey
testing could be done as well if it provides any advantage.

> See it as stresstesting (or monkeytesting) the logic in your
> presentation ;).
>
> Greetings,
>
> Vincent

Thank you for your feedback :)

-- 
John C. McCabe-Dansted

Reply via email to