以下内容大部分来自 ron-patton-software-testing第3章
重点:
• Why software can never be perfect
• Why software testing isn’t just a technical problem
文章目录
- Testing Axioms
- It’s Impossible to Test a Program Completely
- Software Testing Is a Risk-Based Exercise
- Testing Can’t Show That Bugs Don’t Exist
- The More Bugs You Find, the More Bugs There Are
- The Pesticide Paradox
- Not All the Bugs You Find Will Be Fixed
- When a Bug’s a Bug Is Difficult to Say
- Product Specifications Are Never Final
- Software Testers Aren’t the Most Popular Members of a Project Team
- Software Testing Is a Disciplined Technical Profession 软件测试是一个严格的技术专业
- Software Testing Terms and Definitions
Testing Axioms
It’s Impossible to Test a Program Completely
原因:
• The number of possible inputs is very large.
• The number of possible outputs is very large.
• The number of paths through the software is very large.
• The software specification is subjective. You might say that a bug is in the eye of the beholder
Software Testing Is a Risk-Based Exercise
If you decide not to test every possible test scenario, you’ve chosen to take on risk. 如果你决定不测试每一个可能的测试场景,你已经选择承担风险。
The goal is to hit that optimal amount of testing so that you don’t test too much or too little. 目标是达到最佳的测试量,这样你就不会测试太多或太少。
Testing Can’t Show That Bugs Don’t Exist
The More Bugs You Find, the More Bugs There Are
原因:
• Programmers have bad days. Like all of us, programmers can have off days. Code written one day may be perfect; code written another may be sloppy. One bug can be a tell-tale sign that there are more nearby.
• Programmers often make the same mistake. Everyone has habits. A programmer who is prone to a certain error will often repeat it.
• Some bugs are really just the tip of the iceberg. Very often the software’s design or architecture has a fundamental problem. A tester will find several bugs that at first may seem unrelated but eventually are discovered to have one primary serious cause.
The Pesticide Paradox
the phenomenon that the more you test software, the more immune it becomes to your tests.
To overcome the pesticide paradox, software testers must continually write new and different tests to exercise different parts of the program and find more bugs.
Not All the Bugs You Find Will Be Fixed
You and your team will need to make trade-offs,risk-based decisions for each and every bug, deciding which ones will be fixed and which ones won’t. 您和您的团队将需要为每个错误做出权衡,基于风险的决策,确定哪些错误将得到解决,哪些错误将不会得到解决。
不修复bug的可能理由
• There’s not enough time. In every project there are always too many software features, too few people to code and test them, and not enough room left in the schedule to finish. If you’re working on a tax preparation program, April 15 isn’t going to move—you must have your software ready in time.
• It’s really not a bug. Maybe you’ve heard the phrase, “It’s not a bug, it’s a feature!” It’s not uncommon for misunderstandings, test errors, or spec changes to result in would-be bugs being dismissed as features.
• It’s too risky to fix. Unfortunately, this is all too often true. Software is fragile, intertwined, and sometimes like spaghetti. (软件脆弱,纠缠在一起,有时像意大利面条一样。)You might make a bug fix that causes other bugs to appear. Under the pressure to release a product under a tight schedule, it might be too risky to change the software. It may be better to leave in the known bug to avoid the risk of creating new, unknown ones.
• It’s just not worth it. Bugs that would occur infrequently or bugs that appear in little-used features may be dismissed. Bugs that have work-arounds, ways that a user can prevent or avoid the bug, are often not fixed. It all comes down to a business decision based on risk
When a Bug’s a Bug Is Difficult to Say
被发现的bug才叫bug
a bug is a bug only if it’s observed
Product Specifications Are Never Final
As a software tester, you must assume that the spec will change.
Software Testers Aren’t the Most Popular Members of a Project Team
The goal of a software tester is to find bugs, find them as early as possible, and make sure they get fixed
和队友和平相处的建议
• Find bugs early. That’s your job, of course, but work hard at doing this. It’s much less of an impact and much more appreciated if you find a serious bug three months before, rather than one day before, a product’s scheduled release.
• Temper your enthusiasm. Okay, you really love your job. You get really excited when you find a terrible bug. But, if you bounce into a programmer’s cubicle with a huge grin on your face and tell her that you just found the nastiest bug of your career and it’s in her code, she won’t be happy.
• Don’t always report bad news. If you find a piece of code surprisingly bug free, tell the world. Pop into a programmer’s cubicle occasionally just to chat. If all you ever do is report bad news, people will see you coming and will run and hide.