软件质量在几年前,一直是困扰软件工程的头号难题...所以提出了cmmi,敏捷等软件工程方案,企图采用工程化方法客服软件的质量问题(当然软件工程不单单是为了解决软件质量问题,还是为了按时高效的高质量的完成项目而提出)....

  但是实际上还是有很多难题,比如说测试员的水平、程序员的水平、测试的全面性,这些得不到全面的有效的贯彻的话软件质量很难保证。

  测试也只能减少而不能根除软件中的bug,而全面性的测试又不太现实。

  假设我的软件在V1.0版比较认真负责的花了2个月的时间测试了所有的功能,测试覆盖面(实事上根本不可能测试覆盖面高达,80%非常不错了),然后在V2.0的时候,又需要全面的测试一遍。因为只有全面的测试才能保证软件的质量,而这个成本很高。

  更主要的是测试人员是人,不是机器,第二次测试的时候基本上处于厌烦被动状态,不要说测试人员不尽责.并不是说,你花钱给他,他得变成没有感情的机器。如果成立的话,我花钱顾你做测试,说真的我自己也不想做测试,己所不欲,勿施于人。但是钱总是要赚的,活总是要干的,质量总是要保证的,测试还是必须的。

  那么,我们该如何即全面又高效的.进行软件测试呢?

  测试方法要从考虑下面几个方面

  全面性:测试方法能够全面的测试软件的几乎所有方面,找出所有的bug,比如null异常,界面难看,功能未实现后出错,代码逻辑出错,性能不稳定。

  自动化性:测试需要人工参与的次数或频率越少越好,好是0。

  简单性:不需要写代码,点点鼠标好,甚至动动口好.甚至看着好。

  重用性:测试一次,N次可重用...甚至无限次可重用...

  高层幻想一:有没有不需要软件测试人员也能全自动全面测试的方法或软件?

  我个人不相信单凭软件测试人员能全面的测试的了所有的bug,因为人是不可靠的。当然我们可以采用人海战术来增加bug的发现几率,目前微软是这么干的。体现的效果是测试人员比开发人员还多。所以微软的产品相对来讲质量要高的多。

  但是可怜了我们这些小公司,无法请这么多专业的测试的人员,往往都是开发人员做测试。

  次之幻想二:软件测试人员可以全面的测第一边,而第二边第三边第N边都由机器代替测试。

  这样的话,起码,软件测试人员可以不用那么麻烦的测试N边,而态度消极..测试人员只要尽量的考虑多个bug,可以随时间的增加而减少bug,其它的重复的测试让机器来做吧。这个倒是很不错,目前实现此种幻想的倒是有单元测试。

  问题是:

  一:做单元测试的人要懂代码。

  二:单元测试覆盖面不够广,有些功能必须由人工来测试,比如说界面。

  三:单元测试的重用性很低。一个测试只能在一个项目里使用,尤其是测试功能的单元测试。当然重用性也是有的,比如说sql注入检测程序,性能测试程序,DDOS攻击测试程序。但他们往往都不属于单元测试的范围,而是专业测试工具的范围。

  次之幻想三:等你来发表..

  次之幻想四:

  次之幻想五:

  如果你没有想法,大家可以发表下如何实现高幻想一。