每次在面试QA时, 很多人都不知道QA是什么, 它需要什么样的能力. 所以每次我都要很多时间来一一解释.
其实这也不能怪面试者, 软件测试本来在台湾就不是显学, 学校根本就不会教, 并且说不定连软件工程的课都没有开, 所以大家都不会.
其实这另一方面也显示了台湾软件界落后, 大多人只知道软件开发里, 只有写程序和项目经理两种角色, 事实上台湾业界大多也只有这两种.
让我们回归正题, 首先, 对于QA所要具备的能力, 我第一要提当然是软件测试.
很多人觉得测试很简单, 人人可以做好软件测试. 是这样吗? 撇开复杂的测试理论不说, 让我们来看看一个简单的范例, 看看是否测试向你说的这么简单.
有一个程序, 会读入三个变量, 这三个变量是代表三角形的三个边的长度. 然后这程序会决定这个三角形是正三角形, 等腰三角形, 普通的三角形, 或是不是三角形.
若是有人写出这样的程序, 你要准备哪些数据来确保这个程序能够运作正确?
一开始有些面试者根本不懂甚么是测试, 所以把受测程序的内容用C 或是其他语言写出来给我
若是我看到这里, 我就十分肯定他完全不懂测试.
接下来有些面试者, 他会回答: 写个程序自动产生测试数据, 输入所有input的组合, 去测试这个程序.
那我会知道这个面试者认为test automation是无所不能的, 可以cover任何测试.
我会问他, 若是这个input的type是integer(32bits长), 那2147483647 X 2147483647 X 2147483647会有多少组合, 要跑多久你的测试程序才会结束.
并且你没有产生expected result, 那测试程序跑完后, 你还要一个个检查actual result是否正确, 你觉得你这样做可行吗? ROI高吗?
比较好一点的面试者, 便会回答我, 他会将input分成不同状况, 每个状况找些代表性的value来做测试. 因此他会列出
(3,3,3) 正三角形
(3,3,4) 等腰三角形
(4,5,6) 普通的三角形
(2,1,4) 不是三角形
我接着会问这样就够了吗?
更厉害的会回答
(-1, -1, 4)
(0,4,3)
(0,0,0)
开始处理一些错误的状况, 包括负数, 0, 等等
到这里我会问他还有吗? 是否这样就可以了, 大部分的到此就停住了. 那我会问他以下状况是否需要考虑
('a', 60, 62)
所以大部分的面者听到这里,就会知道软件测试是远远比他所想的复杂. 因为这里不但有复杂的测试理论, 还需要有创造力, 否则你不会想到有这些test data要加入.
此外, 除了上述的functional testing外, 还有performance testing, stressing, security testing等等, 这些都是有他的学问在的.
所以要当一个好的QA, 他必须要花时间去研读软件测试相关知识, 而不是很单纯认为测试很简单, 任何人都可以来做的, 不需要有测试的knowledge.