我的测试秘密和技术
最近受邀请要给微软的一个团队讲解我个人的一些测试小秘密和常用的测试技术。其实,测试没有什么太多的秘密可言。如果说如何能发现更多的bug的话,那么我认为最最重要的是passion和experience. 但是,由于他们期望听到的是测试的techniques,我就列了一个我认为最重要的几个方面。现在发出来和大家共享一下吧。
· Passion, Experience
我觉得experience和passion最重要。有一个周六的半夜我突然有种想法应该给我测试的feature去做code review,就去了office一直工作到5:00am, 结果就发现了两个security bug. 之所以能有这个idea就是因为经验的积累造成,而能在周末凌晨工作几个小时则是因为passion. 我现在完全地享受能发现各种各样bug的生活了,已经对开发没有什么兴趣了。破坏软件真的是很有趣。
· Understand features deeply
o Design
o Architecture
o Implementation
o Customer requirements
理解这些非常的重要。你理解的越深,你就可能发现更多,更好的bug。
· Tools
o App verifier
o Driver verifier
o Fuzzing tools
o Etc.
Some tools are extremely useful. Some tools are very helpful. 很多人不理解我为什么每天都能发现一两个蓝屏的bug,其实90%的应该归功于这些tools。但是,虽然几乎微软每个人都知道这些tools,但真正经常使用的并不多。我发现一个有趣的问题,绝大多数我发现的bug并不需要特别的技术,而决定于态度。是一个你有没有去测的问题,只要去测,细心去测都能发现他们。
· Code review+Debugging
o Security audit: buffer overflow, memory leak, AV
o Logic review
Debugging的技术非常非常重要,这是开发和测试的一个主要技术交集。就在我做完这个经验介绍以后,其他的feature里发现一个bug,他们怀疑是我们的feature造成的。我出面跟他们的开发和开发组长进行交涉,最后给他们指出他们的代码里问题的所在。Code review和debugging是相辅相成的,不可分割。我一般进行两种code review。一种叫code audit, 不关心代码的逻辑,功能,只是检查有没有buffer overflow, memory leak, AV 等等。一种是logic review, 专门检查代码的逻辑是否合理。Code review是个bug farm, 熟悉之后你能发现大量的bug在里面。
· Tenet tests:
o Reliability: tools, stress
o Security: fuzzing, code audit
o Performance: Xperf
大家一般更多的关注与functional test。其实Reliability, Security和Performance测试都非常重要。每一个测试人员都应该具备进行这几方面测试的能力,从而给自己负责的feature经常性的,或者通过Lab进行这些测试,肯定能发现很多bug,这些一般都是非常好的bug。
· Integration test
大多数人只关心自己的component。其实很多bug发生在集成测试上。你需要学习其他相关的component, 从而能够想象很多cross feature的scenario进行测试,也能发现很多bug。
· Looking for test holes
o Test cases
o Test tools
o Test owner history
o Old bugs analysis
我在有时间的时候我会通过这几方面去寻找更多的bug。看看有没有没有cover的test case, 看看有没有新的test tool可以尝试,跟别人聊天看看自己component以前test owner的情况,以及分析一下最近发生的一些bug。同一个bug有没有可能出现在其他地方。