第二个我要提的是程序开发的能力.
有人会很好奇, 为何QA需要懂开发呢? 其实不然, 对于你要测试的东西, 你怎么能不懂它怎么做出来的呢?
若是你能懂软件开发, 你会有以下好处:
1. 你可以用RD听得懂的话, 来跟RD沟通. 不会让RD你在是讲哪国的外星文
2. 你可以挑战RD的设计, 毕竟多点人一起思考, 一定比一个人周密.
3. 你可以分析debug log, dump和对照source codes, 便可以帮助RD找出可能的roor cause.
4. 你可以撰写比较好的test automation.
5. 你可以要求RD提高testability
....
好处是说不尽的, 它会让你的专业受到很大的尊敬, 让你的辛苦受到认同, 让别人觉得你是很有价值的.
通常有些面试者会说test automation应该很好写不是嘛? 我若是RD背景出身的, 不是很容易上手.
其实不见得, 因为这牵扯到你是否很会做架构设计.
这是为什么呢? 因为测试程序比一般程序更容易受到需求变动的波及.
当过RD的一定知道, 不到最后关头, interface绝不轻言固定, 之前讲好的东西, 常常一直在翻修. 更不用讲还包括客户需求的变动以及UI的小调整.
所以你若是没有很好的架构设计, 来预防这些变动, 你的测试程序往往一周过后就无法再继续执行, 不是接口已经不一样, 就是expected result需要修改.
可是就算都没有变动, 也不代表你不需要好的设计.
我常举测试license key的测试程序为例. 你若只是单纯的准备一些license key (如2010/09/30过期)来验证一些功能, 或是是否过期等等, 或许这几个月可以运作的很好. 但是若是我明年又要执行这个测试程序呢? 相信这些test data应该完全不能用吧, 因为可能全部都是过期的license key. 所以你的测试程序必须要能动态的产生test data以及相关的expected result. 这就需要更进阶的设计, 让你的测试程序有弹性.
此外, Microsoft的QA 99%都是会写code的, 这件事情更说明了懂软件开发, 是QA一个不可或缺的武器.