247
56
We don't do this at our firm, but one of my friends says that his project manager asked every developer to add intentional bugs just before the product goes to QA. This is how it works:
- Just before the product goes to QA, the development team adds some intentional bugs at random places in the code. They properly back up the original, working code to make sure that those bugs aren't shipped with the end product.
- Testers are also informed about this. So they will test hard, because they know there are bugs present and that not finding them might be considered as a sign of incompetence.
- If a bug (intentional or otherwise) has been found, they will be reported for the development team to fix. The development team then adds another intentional bug in a related section of the code just before the product goes to the second-level QA. The project manager says a tester should think like a developer and he/she should expect new bugs in sections where changes were made.
Well, this is how it goes. They say that this approach has following advantages.
- Testers will be always on their toes and they will test like crazy. That helps them to also find hidden (unintentional) bugs so developers can fix them.
- Testers feed on bugs. Not finding any bugs will affect their morale. So giving them an easy one to find will help their morale.
If you ignore the scenario where one of these intentional bugs gets shipped with the final product, what are the other drawbacks we should consider before even thinking of adopting this approach?
Some clarifications:
- They properly backup the original code in source control.
- When a tester finds the intentional bug, the development team just ignores it. If tester finds out an unintentional (original) bug, the development team first checks whether it is caused by any of the intentional bugs. That is, the development team first tries to reproduce that on the original working code and tries to fix it if they can.
- Just ignore the relationship issues between QA and development team. I specifically asked this question on Programmers, not on The Workplace. Consider that there is good rapport between QA and the development team, and they party together after working hours. The project manager is a nice, old gentleman who is always ready to support both teams (Godsend).
Comments are not for extended discussion; this conversation has been moved to chat.
– balpha – 2015-02-04T13:01:29.97350"A test should think like a developer"... interesting. I would have thought it was obvious that a tester should not think like a developer but like a user. – Trilarion – 2015-02-04T14:05:11.253
9What happens if an intentionally introduced bug covers up another bug the testers could have found had that intentional bug not been introduced? For example, suppose a chunk of code has a fencepost problem and that the development team is unaware of this bug. A programmer decides to insert an intentional fencepost error at that spot. Now the code has a double fencepost error. Suppose the testers detect the error, but don't see that it's a double fencepost error. Congrats! The testers found an introduced bug. The original code will be restored to contain the original fencepost error. Oops! – David Hammen – 2015-02-04T18:40:34.810
12I'm a QE. I'd rather find real bugs, thank you. I'd quit this company like it's on fire. Nobody gets to (intentionally) waste my time. – ArjunShankar – 2015-02-05T12:32:17.530
5"We don't do this at our firm, but one of my friends says that his CTO asked every product manager to add extra features at the start of every feature development cycle..." – Marco – 2015-02-05T17:41:10.710
"... also find hidden (unintentional) bugs so developers can fix them". Interesting! Mobilizing a full scrub down to ferret out real bugs! Bold idea. – jxramos – 2015-02-06T02:07:49.523
This is called "bug seeding". By finding out how many % (a) of the seeded bugs have been found, and knowing the number of other bugs (b) that have been found, you could extrapolate to know the total number of bugs in the application. (b/a) At least, in theory. I'm sure there are a lot of ways in which you could do this wrong in practice. (like, the artificially inserted bugs are probably nowhere near comparable to real bugs, so statistical extrapolation is not appropriate) http://c2.com/cgi/wiki?DefectSeeding
– Erwin Bolwidt – 2015-02-06T02:57:13.390There's also Defect Seeding mentioned by Steve McConnell - same idea as the one mentioned by @ErwinBolwidt but from someone rather well known in the industry.
– None – 2015-02-06T03:08:37.4602I suspect adding intentional bugs creates risk. What if an intentional bug actually fixes something unintended? The positive side effect is not reported, the code is removed and a real bug gets through QA. By their nature, these last minute "intentional bugs" will be ill considered, if not, the bugs are wasting too much developer time. – Jodrell – 2015-02-06T11:56:23.403
1How does this affect shipping things? It seems like for every project/release you'd have to allocate almost twice or three times the amount of QA necessary just for this. Not saying it's necessarily a bad thing but it seems for what you are trying to achieve it isn't really worth all the resources that go into it. – aug – 2016-01-13T02:24:02.030