需测试面之广,不是一个人两个人能完成的。(我不是专业做测试的,恕我列举不出那么多测试项。)更重要的是,这些测试项,是每一个高质量的软件都需要经过的测试。只有完善的高密度的测试才能产出高质量的软件。(当然也得软件通过才行。只测不改不如不测,废话)所以软件测试的门道也很多的。(又是废话)

  软件和硬件同样是要做测试的,为什么硬件质量要相对可靠,软件则是另外一幅景象?

  原因有很多。

  第零个:也是根本的问题,程序是程序员写出来的,程序员是人,人是会犯错的,所以程序会出错是在所难免的,软件出错也在所难免。(这里,问大家一个问题,上帝会不会犯错?我认为会,要不然他制造的我们怎么老会犯错??还是他老人家根本不存在?)

  第一个:大的问题:软件工程是一个沙滩上造大楼的艺术活。任何一个方面的缺陷或bug都会对软件造成很严重的影响。

  第二个:待测试的项目太多了,相对而言,硬件需要测试的项目则要相对的简单的很多,只要测试几项,多几十项。而软件则需要几百项,甚至上千项。项目越大,软件越复杂,待测试的项目越多,而且往往随着复杂度和功能度的增长会成倍数增长。

  第三个:软件工程多数属于项目型,软件项目具有一次性的特点。这样一来对应的软件测试项也是一次性的。测试不可重用,测试成本要相对高很多。

  第四个:软件测试工具可重用的太少,只有对那种泛化的。比如sql注入等非功能性的bug有专门的测试工具,而这种测试工具往往也只能专门的针对一直或几种bug进行测试。相比较而言,硬件测试则要专业和可重用的多。

  第五个:通用软件测试工具太难写。因为软件是需要计算机语言来写的,现在的计算机语言太多,对软件测试工具的发展来说是一个很大的挑战,不可能一个测试工具能完成所有语言的测试。

  第六个:通用软件测试工具难与软件进行对接。虽然有.JUnit,NUnit这种单元测试工具还需要软件工程师自己进行测试逻辑的编写。(我不爱写测试逻辑,太麻烦!而且往往测试逻辑跟不上需求的变更。)

  第七个:软件需求不稳定,测试也不稳定。重新测试的几率太大,人不是机器,不适合做重复劳动,而且有厌烦情绪,导致测试项不稳定。(经常会出现这种情况,我问:测试好了没?弟兄们异口同声:“测好了,没问题!”我心里那个无语啊:“还不如不问,没问题是大的问题!!我那帮兄弟根本没测,当然这是态度问题,但是也是有原因的,谁想老是做重复劳动??反正我也不想测!”)

  第八个:还没想到,这个没想到不是我没想到,是测试人员没想到,还有这样的或那样的bug。因为人不是神嘛,是神也不一定,根据推理他老人家不是也有缺陷嘛?他老人家肯定也没想到我们也会犯错。

  第九个:真的暂时没想到。(想到后留个言哦,可惜凑不齐十个了)

  在需求稳定的情况下,根据以上九个问题,我们总结出来一个小结论:

  软件工程的质量难在测试。而现在的软件测试只有3种形式的测试:一种是软件开发人员自己写的单元测试;二是软件公司请的专业做测试的测试员,目前国内多数是女孩子做做手动测试;三是外包给专业软件测试公司。也有一些软件测试工具比如,针对sql注入的扫描工具,防止死链接的扫描工具。