[TIP] Math question - related to testing, not python-specific
Marc Tardif
marc at interunion.ca
Fri Feb 21 09:49:39 PST 2020
There was a mistake in my simplification which should ultimately read
t >= ln(1 - q) / ln(1 - p)
For example, if p = .5 and you want q = .99
t >= ln(1 - .99) / ln(1 - .5)
t >= 7
In words, if your test fails half the time then you must run it at least
7 times if you want at least 99% confidence the failure will not get missed.
* Marc Tardif <marc at interunion.ca> [2020-02-20 16:44 -0500]:
> Assuming the attempts are independent, the number of errors E out of
> t trials follows a binomial distribution
>
> E ~ Bin(t, p)
>
> The probability of an error occurring at least once is
>
> P(E >= 1) >= q
>
> which is equivalent to
>
> 1 - P(E = 0) >= q
>
> which simplifies to
>
> 1 - nC0 * p^0 * (1 - p)^(t - 0) >= q
> (1 - p)^t <= 1 - q
> t * ln(1 - p) <= ln(1 - q)
> t <= ln(1 - q) / ln(1 - p)
> t >= ln(1 - p) / ln(1 - q)
>
> For example, if p = .5 and you want q = .01
>
> t >= ln(1 - .5) / ln(1 - .01)
> t >= 69
>
> * Dan Stromberg <dstromberglists at gmail.com> [2020-02-20 12:40 -0800]:
> > If a transient error fails with probability p for one invocation of a test,
> > how many times t do you have to run the test to have probability q of an
> > undetected, continued failure getting missed?
> >
> > By a "transient error", I mean a test that fails p*100 percent of the time
> > with the same inputs - usually caused by a race condition.
> >
> > I think I remember enough discrete math to formulate the question, but I
> > don't remember enough to answer it for myself :-S
--
Marc Tardif <marc at interunion.ca>
Freenode: cr3, Jabber: cr3 at jabber.org
1024D/72679CAD 09A9 D871 F7C4 A18F AC08 674D 2B73 740C 7267 9CAD
More information about the testing-in-python
mailing list