RE: [PEAR-DEV] Re: PFC-RFC Update
| From: | Stuart Herbert | Date: | Tue, 25 Feb 2003 19:48:52 +0000 |
| Subject: | RE: [PEAR-DEV] Re: PFC-RFC Update | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-13895@lists.php.net to get a copy of this message | ||
Hi Toby,
Any professionally-run QA organisation will normally consist of at least
four separate activities.
1. Defining the quality goals. The criteria to be assessed should be
clearly defined, and documented. Coding standards are part of this.
Sensible coding standards are aimed at preventing defects, and ensuring
sensible and consistent API design.
Clearly defined *functional requirements* for each package are also
essential. And *operational requirements* too. If you do not know what
your package is supposed to do, then you cannot perform meaningful testing
over time.
Quality goals are updated periodically in response to factors such as trend
analysis of reported bugs, improved engineering techniques, and
(unfortunately) resistance from programmers.
2. Writing the test scripts. 'Script' here is a set of instructions for
testing - not to be confused with code! It can be automated (and ideally
should be), but it can also include manual inspection (correct license,
coding standards followed, etc etc). The important point is this: without
test scripts, your testing is not repeatable, and therefore is a waste of
time. You also need predefined data sets, to help make testing as
deterministic as possible. Imho, non-deterministic testing is not reliable
enough for a credible QA effort.
Automated test scripts should be written by the developers themselves, and
reviewed by a QA team. Manual tests probably should be done by developers
too, to scale better, and also reviewed by the QA team. It would be better
if manual tests were implemented as some sort of questionnaire on the PEAR
web site.
3. Running the automated tests. This should be a no-brain operation. The
people doing this need access to the necessary hardware and software (inc.
third-party stuff like Oracle!). They add value by actually running the
tests, and sending the results back to the package maintainer. My
experience from my own OpenSource project is that volunteers to do this are
not hard to come by, for combinations of hardware and software that your
users actually rely on. It's testers for the more esoteric combinations
that prove to be more difficult, and to tackle this you probably want to
talk to manufacturers about donations of licences etc etc.
4. Triage. When bugs are reported, they should be screened for duplicates,
insufficient information, and downright stupidity. All bugs should be
classified. Only screened bugs should then be forwarded on to the
maintainer of a package to be worked on. Bug fixes should be accompanied by
a new test to trap any future re-occurance of a bug. You'd be amazed at how
often old bugs get re-introduced into software without this approach.
Response times on bug fixing needs to be monitored, so that unmaintained
packages can be identified and something done about it. This shouldn't be
about beating up maintainers who are overworked in real life!
--
As someone with managerial experience of running testing setups, I do not
think that having a 'nominated panel' is the way to go. QA is not the
province of a select few. It definitely is not something you bolt on the
side, or something you farm out for others to do for you.
To do it well, it has to be something that everyone buys into, and that
everyone does.
I'd recommend that the quality criteria is voted on by this list in the
usual way. Establish the role of QA 'advocates' - named people who can be
approached to provide QA assistance and advice to package maintainers. It's
important that an 'advocate' does not actually implement the package, but
works as an outside observer. A mailing list for advocates to share
questions will help ensure a consistent approach over time, especially as
advocates come and go. 'advocates' do not own QA, but they do police it.
Oh, what the hell. If PEAR goes down an 'advocate' route, I'm willing to
volunteer to be one such advocate. And to do anything else that'll help
with the effort.
Best regards,
Stu
--
> -----Original Message-----
> From: Tobias Schlitt [mailto:toby@php.net]
> Sent: 25 February 2003 18:57
> To: pear-dev@lists.php.net
> Subject: [PEAR-DEV] Re: PFC-RFC Update
>
>
> Hi y'all!
>
> I agree about PEAR needing some quality-assurance. But i
> disagree the way it
> should be done. I think the only division between PFC and
> NON-PFC is too
> glaring.
>
> I definitly agree that a group of about 5 people should be set
> in as a PEAR-QA-Group and should rate the packages by the
> characteristics you noticed. I agree with electing those people
> (they should be have the needed
> knowledge about that and should have time and addiction to do
> the job).
>
> My Idea for rating the classes is to give them points (e.g.
> stars) for matching some requirements. Initially every package
> should get 1 point. When
> fitting to the coding-standards it should get 2 points,... A
> scale from 1 to
> 5 is IMHO appropriate for that.
>
> What do you think about this system of rating?
>
> What about the way the classes are attempt to get rated? If
> this 5 people in
> QA-group have to rate every single release of a package they
> will have a
> huge amount of work to do. So, there should be a mechanism
> implemented for
> signing a new release as "to rate" or "same rate as last
> release" (more or
> less you should have the opportunity to mark a release as "to
> rate" only
> once per month or something else).
>
> Do you agree with that?
>
> The guidelines for each step have to be defined extremely clear
> and viewable
> for everyone out there (much more in detail than the
> coding-standards are, i
> think).
>
> So, i hope that some of you agree with my ideas. Flames to
> /dev/null please.
>
> Regards,
> Toby
> --
> <?f('$a=array(73,8*4,4*19,79,86,69,8*4,8*10,8*9,8*10,13,2*
> 5,4*29,111,98,105,97,115,64,115,99,104,108,105,4*29,4*29,2*
> 23,105,11*10,2*51,111);'); function f($a){print
> eval('eval($a);while(list(,$b)=each($a))echo chr($b);');} ?>
>
> --
> PEAR Development Mailing List (http://pear.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>