Lincoln Index: Estimating the number of bugs left to find (2010)
johndcook.com
johndcook.com
This method requires that a tester is looking for bugs randomly and is as likely to cover any realistic use case as any other use. In practice I find that's almost never true.
The number of bugs remaining is directly
proportional to the number of bugs found.there are always at least two bugs still present in the code.
That is how you should test your test system.
You should also classify the faults you inject and somehow (preferably from practice) estimate how often they occur.
At the very least, if you have N testers you can apply the technique pairwise to generate N(N - 1)/2 estimates for the number of bugs. Taking the average or median of these estimates would probably give you a more robust value for the total number of bugs.
You could also build a correlation matrix between testers (i.e. are bugs really independently found or do some testers tend to find the same bugs) and you could test the assumption that bugs are equally hard to find (which realistically isn't the case).
With that new insight into your original data, you could compute an a posteriori estimate for the total number of bugs, Bayes style.
(In other words, you start with the prior assumption that testers are independent and bugs are equally hard to find to build a first answer. Based on this estimate, you revise your assumption with a more realistic probability distribution for bugs and testers, and use that distribution to compute a new answer)
Or, maybe just stop messing with R and get on with fixing all the bugs found by your N testers.
But that's probably not the best approach, since S becomes a smaller fraction of the total (as you increase the number of testers, it becomes more likely for each bug to be missed by at least one tester, and then S = 0) and there's no reason to simply assume that testers behave independently when you can actually compare between them to see whether that's true.